openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kevin Sutter (JIRA)" <j...@apache.org>
Subject [jira] Resolved: (OPENJPA-304) Problems with DepthFirstAnalysis and the IBM JDK
Date Tue, 31 Jul 2007 16:02:53 GMT

     [ https://issues.apache.org/jira/browse/OPENJPA-304?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Kevin Sutter resolved OPENJPA-304.
----------------------------------

    Resolution: Fixed

> Problems with DepthFirstAnalysis and the IBM JDK
> ------------------------------------------------
>
>                 Key: OPENJPA-304
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-304
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: lib
>    Affects Versions: 0.9.7
>            Reporter: Kevin Sutter
>            Assignee: Kevin Sutter
>             Fix For: 1.0.0
>
>
> TestDepthFirstAnalysis was reporting two errors when running with the IBM JDK.  The testcase
ran just fine with the Sun JDK.  The error conditions were NPE's in testBackEdges and testForwardEdges:
> testBackEdges(org.apache.openjpa.lib.graph.TestDepthFirstAnalysis)  Time elapsed: 0 sec
 <<< ERROR!
> java.lang.NullPointerException
>         at org.apache.openjpa.lib.graph.DepthFirstAnalysis.visit(DepthFirstAnalysis.java:97)
>         at org.apache.openjpa.lib.graph.DepthFirstAnalysis.<init>(DepthFirstAnalysis.java:74)
>         at org.apache.openjpa.lib.graph.TestDepthFirstAnalysis.setUpGraph2 (TestDepthFirstAnalysis.java:78)
>         at org.apache.openjpa.lib.graph.TestDepthFirstAnalysis.testBackEdges(TestDepthFirstAnalysis.java:105)
>         :
> testForwardEdges(org.apache.openjpa.lib.graph.TestDepthFirstAnalysis)  Time elapsed:
0 sec  <<< ERROR!
> java.lang.NullPointerException
>         at org.apache.openjpa.lib.graph.DepthFirstAnalysis.visit(DepthFirstAnalysis.java:97)
>         at org.apache.openjpa.lib.graph.DepthFirstAnalysis.<init>(DepthFirstAnalysis.java
:74)
>         at org.apache.openjpa.lib.graph.TestDepthFirstAnalysis.setUpGraph2(TestDepthFirstAnalysis.java:78)
>         at org.apache.openjpa.lib.graph.TestDepthFirstAnalysis.testForwardEdges(TestDepthFirstAnalysis.java
:129)
>         :
> Some debugging with the IBM JDK turned up a couple of problems:
> 1)  The code in DepthFirstAnalysis.java and Edges.java was using == for equality testing
instead of .equals().  It turns out that the IBM JDK has an optimization when using Integer
instances as keys to HashMaps and new copies of the keys are created (vs using the input key
objects directly).  Thus, the == check was not sufficient to do the comparison testing.
> 2)  After performing those updates, there was yet another problem with the order of the
entries returned by the iterator() of the HashMap.  By definition, the
> order is not guaranteed with a HashMap implementation.  In these particular failing testcases,
the Sun JDK was starting with node 2 via the Iterator, while the IBM JDK was starting with
node 5.  By changing the declaration of this Graph._nodes structure to use a LinkedHashMap
(instead of HashMap), we can
> reliably determine the order of the iterator.  And, now both the Sun and IBM JDK's produce
the same results.
> Thanks,
> Kevin

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message