/* 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.

* * Use of the static singleton method nullValue() is required * by this implementation because Java cannot return a singleton * instance from a constructor.

* * 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. * * */