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]
>    >
>

Reply via email to