Re: ptolemy.actor.util.Time

2008-07-09 Thread Jia Zou
Hi Christopher,
I checked through that list. I do have a questions:
First, for classes like these:
ptolemy/domains/gr/kernel/SceneGraphToken.java
ptolemy/domains/gr/kernel/Scene2DToken.java
ptolemy/data/ActorToken.java

Each has a isEqualTo method (Not sure why we are not overwriting the equals
method), but each also has a type class corresponding to the token, and the
equals method in that type only uses ==. I'm not sure how that works?
Thanks,

Jia

On Tue, Jul 8, 2008 at 4:30 PM, Jia Zou [EMAIL PROTECTED] wrote:

 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
 

Re: ptolemy.actor.util.Time

2008-07-08 Thread Christopher Brooks
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