Hi Christopher, Thanks for pointing that out. I'll check the rest of the types soon.
Jia On Tue, Jul 8, 2008 at 3:37 PM, Christopher Brooks <[EMAIL PROTECTED]> wrote: > Hi Jia, > > Actually, the Javadoc for java.lang.Comparable says that java. > "Note that null is not an instance of any class, and e.compareTo(null) > should throw a NullPointerException even though e.equals(null) > returns false." > > So, equals(null) should return false and compareTo(null) should throw > an NPE. > > See > http://java.sun.com/javase/6/docs/api/java/lang/Comparable.html > for details about natural ordering > > > There were no unit tests for ptolemy.actor.util.Time. > > I created a unit test for this bug and fixed Time.java. > > One way around this is to do an instanceof check because null is not > an instance of a class. So, you'll see equals implemented like: > > public boolean equals(Object time) { > if (time instanceof Time) { > return this.compareTo(time) == 0; > } > return false; > } > > In Ptolemy, the classes have equals() methods. I checked the classes > upto DEEvent, could you take a look at the classes below DEEvent? > > doc/tutorial/LeftRightDirector.java > com/JLex/Main.java > com/jgoodies/forms/layout/ConstantSize.java > com/jgoodies/forms/layout/BoundedSize.java > ptolemy/kernel/attributes/VersionAttribute.java > ptolemy/backtrack/eclipse/ast/Type.java > > # No need to check these, they are used for back tracking > ptolemy/backtrack/util/java/util/AbstractList.java > ptolemy/backtrack/util/java/util/AbstractMap.java > ptolemy/backtrack/util/java/util/Collections.java > ptolemy/backtrack/util/java/util/Collections.java > ptolemy/backtrack/util/java/util/Collections.java > ptolemy/backtrack/util/java/util/Collections.java > ptolemy/backtrack/util/java/util/Collections.java > ptolemy/backtrack/util/java/util/Collections.java > ptolemy/backtrack/util/java/util/Collections.java > ptolemy/backtrack/util/java/util/Collections.java > ptolemy/backtrack/util/java/util/Collections.java > ptolemy/backtrack/util/java/util/Collections.java > ptolemy/backtrack/util/java/util/Collections.java > ptolemy/backtrack/util/java/util/AbstractSet.java > ptolemy/backtrack/util/java/util/WeakHashMap.java > ptolemy/backtrack/util/java/util/WeakHashMap.java > ptolemy/backtrack/util/java/util/Hashtable.java > > # I checked these > ptolemy/math/FixPoint.java > ptolemy/math/Overflow.java > ptolemy/math/Fraction.java > ptolemy/math/FixPointQuantization.java > ptolemy/math/Quantization.java > ptolemy/math/Precision.java > ptolemy/math/Rounding.java > ptolemy/domains/fsm/kernel/ia/StatePair.java > ptolemy/domains/csp/demo/DiningPhilosophers/Coordinate.java > ptolemy/domains/de/kernel/DEEvent.java > > # Start checking here > ptolemy/domains/gr/kernel/SceneGraphToken.java > ptolemy/domains/gr/kernel/Scene2DToken.java > ptolemy/graph/mapping/MapMapping.java > ptolemy/graph/Graph.java > ptolemy/graph/Inequality.java > ptolemy/graph/LabeledList.java > ptolemy/component/data/type/TupleType.java > ptolemy/component/data/TupleToken.java > ptolemy/apps/cacheAwareScheduler/kernel/MemoryAddress.java > ptolemy/codegen/kernel/CodeGeneratorHelper.java > ptolemy/codegen/kernel/CodeStream.java > ptolemy/caltrop/ddi/util/DataflowActorInterpreter.java > ptolemy/caltrop/ddi/DataflowWithRates.java > ptolemy/moml/unit/Unit.java > ptolemy/actor/gt/GraphAnalyzer.java > ptolemy/actor/gt/GraphAnalyzer.java > ptolemy/actor/util/Time.java > ptolemy/data/type/MatrixType.java > ptolemy/data/type/ObjectType.java > ptolemy/data/type/BaseType.java > ptolemy/data/type/RecordType.java > ptolemy/data/type/ArrayType.java > ptolemy/data/type/Type.java > ptolemy/data/type/FunctionType.java > ptolemy/data/type/FixType.java > ptolemy/data/type/UnionType.java > ptolemy/data/type/TypeConstant.java > ptolemy/data/expr/CachedMethod.java > ptolemy/data/properties/token/PropertyToken.java > ptolemy/data/properties/PropertyHelper.java > ptolemy/data/ShortToken.java > ptolemy/data/LongToken.java > ptolemy/data/UnsignedByteToken.java > ptolemy/data/FloatToken.java > ptolemy/data/StringToken.java > ptolemy/data/ObjectToken.java > ptolemy/data/ComplexToken.java > ptolemy/data/ArrayToken.java > ptolemy/data/IntMatrixToken.java > ptolemy/data/UnionToken.java > ptolemy/data/PetiteToken.java > ptolemy/data/IntToken.java > ptolemy/data/DoubleMatrixToken.java > ptolemy/data/BooleanMatrixToken.java > ptolemy/data/ActorToken.java > ptolemy/data/DoubleToken.java > ptolemy/data/FixMatrixToken.java > ptolemy/data/RecordToken.java > ptolemy/data/BooleanToken.java > ptolemy/data/EventToken.java > ptolemy/data/LongMatrixToken.java > ptolemy/data/FixToken.java > ptolemy/data/ComplexMatrixToken.java > ptolemy/copernicus/kernel/SideEffectAnalysis.java > > _Christopher > > -------- > > > It's because when you are comparing one time object with another, both > of > them have to be actual objects, and null is not an object. You should > probably have a: > if (a != null && b !=null) when you are using the equals method. > > Jia > > On Sun, Jul 6, 2008 at 3:54 PM, Richard Ware <[EMAIL PROTECTED]> > wrote: > > > When I do this, > > > > Time a = ourDirector.getModelTime(); > > Time b = null; > > boolean comparison = a.equals( b ); > > > > I get a NullPointerException. > > > > That isn't what the equals() method of a Java object is supposed to > do. > > If > > given null as the argument, it's supposed to calmly return the boolean > > value "false". > > > > > > > > > > > ------------------------------------------------------------------------- > --- > > Posted to the ptolemy-hackers mailing list. Please send > administrative > > mail for this list to: > [EMAIL PROTECTED] > > >