summaryrefslogtreecommitdiff
path: root/projects/net.wotonomy.persistence/src/main/java/net/wotonomy/control/EONullValue.java
diff options
context:
space:
mode:
Diffstat (limited to 'projects/net.wotonomy.persistence/src/main/java/net/wotonomy/control/EONullValue.java')
-rw-r--r--projects/net.wotonomy.persistence/src/main/java/net/wotonomy/control/EONullValue.java113
1 files changed, 113 insertions, 0 deletions
diff --git a/projects/net.wotonomy.persistence/src/main/java/net/wotonomy/control/EONullValue.java b/projects/net.wotonomy.persistence/src/main/java/net/wotonomy/control/EONullValue.java
new file mode 100644
index 0000000..3b4544e
--- /dev/null
+++ b/projects/net.wotonomy.persistence/src/main/java/net/wotonomy/control/EONullValue.java
@@ -0,0 +1,113 @@
+/*
+Wotonomy: OpenStep design patterns for pure Java applications.
+Copyright (C) 2001 Intersect Software Corporation
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, see http://www.gnu.org
+*/
+
+package net.wotonomy.control;
+
+import java.io.Serializable;
+
+import net.wotonomy.foundation.NSNull;
+
+/**
+* EONullValue is used to represent null in Collections classes
+* because List and Map do not specify whether null values
+* are allowed and because NSArray and NSDictionary explicitly
+* do not allow null values. <br><br>
+*
+* Use of the static singleton method nullValue() is required
+* by this implementation because Java cannot return a singleton
+* instance from a constructor. <br><br>
+*
+* This implementation duplicates NSNull, but the singleton instances
+* are of course different. Be careful. I have no idea why this
+* class was even created, given that NSNull exists.
+*
+* @author michael@mpowers.net
+* @author $Author: cgruber $
+* @version $Revision: 894 $
+*/
+public class EONullValue implements Serializable
+{
+ private static final EONullValue instance = new EONullValue();
+
+ /**
+ * Create a new instance of EONullValue.
+ */
+ private EONullValue ()
+ {
+ }
+
+ /**
+ * Constructor specifying name and object.
+ */
+ public static EONullValue nullValue ()
+ {
+ return instance;
+ }
+
+ /**
+ * Returns a human-readable string representation.
+ */
+ public String toString()
+ {
+ return "[null]";
+ }
+
+ /**
+ * Hashcode of all instances is zero.
+ */
+ public int hashCode()
+ {
+ return 0;
+ }
+
+ /**
+ * Implemented to return true for any instance of EONullValue
+ * and for any instance of NSNull.
+ */
+ public boolean equals( Object anObject )
+ {
+ if ( anObject instanceof EONullValue ) return true;
+ if ( anObject instanceof NSNull ) return true;
+ return false;
+ }
+}
+
+/*
+ * $Log$
+ * Revision 1.2 2006/02/16 16:47:14 cgruber
+ * Move some classes in to "internal" packages and re-work imports, etc.
+ *
+ * Also use UnsupportedOperationExceptions where appropriate, instead of WotonomyExceptions.
+ *
+ * Revision 1.1 2006/02/16 13:19:57 cgruber
+ * Check in all sources in eclipse-friendly maven-enabled packages.
+ *
+ * Revision 1.3 2003/08/06 23:07:52 chochos
+ * general code cleanup (mostly, removing unused imports)
+ *
+ * Revision 1.2 2001/03/01 20:35:38 mpowers
+ * Implemented equals and hashCode.
+ *
+ * Revision 1.1 2001/02/26 22:41:51 mpowers
+ * Implemented null placeholder classes.
+ * Duplicator now uses NSNull.
+ * No longer catching base exception class.
+ *
+ *
+ */
+