1 /*
2 Wotonomy: OpenStep design patterns for pure Java applications.
3 Copyright (C) 2001 Intersect Software Corporation
4
5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with this library; if not, see http://www.gnu.org
17 */
18
19 package net.wotonomy.control;
20
21 import java.io.Serializable;
22
23 import net.wotonomy.foundation.NSNull;
24
25 /***
26 * EONullValue is used to represent null in Collections classes
27 * because List and Map do not specify whether null values
28 * are allowed and because NSArray and NSDictionary explicitly
29 * do not allow null values. <br><br>
30 *
31 * Use of the static singleton method nullValue() is required
32 * by this implementation because Java cannot return a singleton
33 * instance from a constructor. <br><br>
34 *
35 * This implementation duplicates NSNull, but the singleton instances
36 * are of course different. Be careful. I have no idea why this
37 * class was even created, given that NSNull exists.
38 *
39 * @author michael@mpowers.net
40 * @author $Author: cgruber $
41 * @version $Revision: 894 $
42 */
43 public class EONullValue implements Serializable
44 {
45 private static final EONullValue instance = new EONullValue();
46
47 /***
48 * Create a new instance of EONullValue.
49 */
50 private EONullValue ()
51 {
52 }
53
54 /***
55 * Constructor specifying name and object.
56 */
57 public static EONullValue nullValue ()
58 {
59 return instance;
60 }
61
62 /***
63 * Returns a human-readable string representation.
64 */
65 public String toString()
66 {
67 return "[null]";
68 }
69
70 /***
71 * Hashcode of all instances is zero.
72 */
73 public int hashCode()
74 {
75 return 0;
76 }
77
78 /***
79 * Implemented to return true for any instance of EONullValue
80 * and for any instance of NSNull.
81 */
82 public boolean equals( Object anObject )
83 {
84 if ( anObject instanceof EONullValue ) return true;
85 if ( anObject instanceof NSNull ) return true;
86 return false;
87 }
88 }
89
90 /*
91 * $Log$
92 * Revision 1.2 2006/02/16 16:47:14 cgruber
93 * Move some classes in to "internal" packages and re-work imports, etc.
94 *
95 * Also use UnsupportedOperationExceptions where appropriate, instead of WotonomyExceptions.
96 *
97 * Revision 1.1 2006/02/16 13:19:57 cgruber
98 * Check in all sources in eclipse-friendly maven-enabled packages.
99 *
100 * Revision 1.3 2003/08/06 23:07:52 chochos
101 * general code cleanup (mostly, removing unused imports)
102 *
103 * Revision 1.2 2001/03/01 20:35:38 mpowers
104 * Implemented equals and hashCode.
105 *
106 * Revision 1.1 2001/02/26 22:41:51 mpowers
107 * Implemented null placeholder classes.
108 * Duplicator now uses NSNull.
109 * No longer catching base exception class.
110 *
111 *
112 */
113