I've been able to spend some time with this problem and have figured out the
source of the problem.  I would like some input on how to go about fixing
it.

The problem is that the IBM JDK seems to want to create (copy) new Integer
objects when used as keys to the HashMap.put(k,v) method.  Any other key
types are just used as is (no copy).  But, Integer types as keys are copied
into new Integer objects.

So, when the Edge.getOther(Node n) method attempts to match up with either
the _from or _to node, neither of the conditionals returns true because the
equality check is done via == instead of .equals().

I've looked through the javadoc for the HashMap and I can't tell whether the
put(k,v) method has to use the input key or if it's okay to make a copy of
the key.  If making a copy is okay, then I would say that our getOther(n)
method should be updated to use .equals instead of the == equality checking.

But, when I make this type of change, I am still failing the last two tests
in TestDepthFirstAnalysis due to the assertions when checking for the number
of edges for TYPE_BACK and TYPE_FORWARD.  In testBackEdges, the assertion is
expecting 2, but there are 3 edges detected.  In testForwardEdges, the
assertion is expecting 2, but there is only 1 edge detected.  There must be
some other processing that is not expecting the new Integer objects to be
created, but I haven't nailed that down yet.

Thoughts on problems?

Thanks,
Kevin

On 7/19/07, Kevin Sutter <[EMAIL PROTECTED]> wrote:
>
> Markus,
> No such luck.  Still the same problem.  Sorry that I can't be of more
> service at the moment -- busy with some other work activities...
>
> Running org.apache.openjpa.lib.graph.TestDepthFirstAnalysis
> DEBUG (init): node = [EMAIL PROTECTED] info =
> [EMAIL PROTECTED]
> DEBUG (init): node = [EMAIL PROTECTED] info =
> [EMAIL PROTECTED]
> DEBUG (init): node = [EMAIL PROTECTED] info =
> [EMAIL PROTECTED]
> DEBUG (init): node = [EMAIL PROTECTED] info =
> [EMAIL PROTECTED]
> DEBUG (after init): node = [EMAIL PROTECTED] info =
> [EMAIL PROTECTED]
> DEBUG (after init): node = [EMAIL PROTECTED] info =
> [EMAIL PROTECTED]
> DEBUG (after init): node = [EMAIL PROTECTED] info =
> [EMAIL PROTECTED]
> DEBUG (after init): node = [EMAIL PROTECTED] info =
> [EMAIL PROTECTED]
> DEBUG (visit): node = [EMAIL PROTECTED]
> DEBUG (visit): other = [EMAIL PROTECTED] otherInfo =
> [EMAIL PROTECTED]
> DEBUG (visit): node = [EMAIL PROTECTED]
> DEBUG (visit): other = [EMAIL PROTECTED] otherInfo =
> [EMAIL PROTECTED]
> DEBUG (visit): node = [EMAIL PROTECTED]
> DEBUG (visit): other = [EMAIL PROTECTED] otherInfo =
> [EMAIL PROTECTED]
> DEBUG (visit): other = [EMAIL PROTECTED] otherInfo =
> [EMAIL PROTECTED]
> DEBUG (visit): other = [EMAIL PROTECTED] otherInfo =
> [EMAIL PROTECTED]
> DEBUG (visit): node = [EMAIL PROTECTED]
> DEBUG (init): node = [EMAIL PROTECTED] info =
> [EMAIL PROTECTED]
> DEBUG (init): node = [EMAIL PROTECTED] info =
> [EMAIL PROTECTED]
> DEBUG (init): node = [EMAIL PROTECTED] info =
> [EMAIL PROTECTED]
> DEBUG (init): node = [EMAIL PROTECTED] info =
> [EMAIL PROTECTED]
> DEBUG (after init): node = [EMAIL PROTECTED] info =
> [EMAIL PROTECTED]
> DEBUG (after init): node = [EMAIL PROTECTED] info =
> [EMAIL PROTECTED]
> DEBUG (after init): node = [EMAIL PROTECTED] info =
> [EMAIL PROTECTED]
> DEBUG (after init): node = [EMAIL PROTECTED] info =
> [EMAIL PROTECTED]
> DEBUG (visit): node = [EMAIL PROTECTED]
> DEBUG (visit): node = [EMAIL PROTECTED]
> DEBUG (visit): other = [EMAIL PROTECTED] otherInfo =
> [EMAIL PROTECTED]
> DEBUG (visit): node = [EMAIL PROTECTED]
> DEBUG (visit): other = [EMAIL PROTECTED] otherInfo =
> [EMAIL PROTECTED]
> DEBUG (visit): node = [EMAIL PROTECTED]
> DEBUG (visit): other = [EMAIL PROTECTED] otherInfo =
> [EMAIL PROTECTED]
> DEBUG (visit): other = [EMAIL PROTECTED] otherInfo =
> [EMAIL PROTECTED]
> DEBUG (visit): other = [EMAIL PROTECTED] otherInfo =
> [EMAIL PROTECTED]
> DEBUG (init): node = 5 info =
> [EMAIL PROTECTED]
> DEBUG (init): node = 4 info =
> [EMAIL PROTECTED]
> DEBUG (init): node = 3 info =
> [EMAIL PROTECTED]
> DEBUG (init): node = 2 info =
> [EMAIL PROTECTED]
> DEBUG (init): node = 1 info =
> [EMAIL PROTECTED]
> DEBUG (after init): node = 5 info =
> [EMAIL PROTECTED]
> DEBUG (after init): node = 4 info =
> [EMAIL PROTECTED]
> DEBUG (after init): node = 3 info =
> [EMAIL PROTECTED]
> DEBUG (after init): node = 2 info =
> [EMAIL PROTECTED]
> DEBUG (after init): node = 1 info =
> [EMAIL PROTECTED]
> DEBUG (visit): node = 5
> DEBUG (visit): other = null otherInfo = null
> DEBUG (init): node = 5 info =
> [EMAIL PROTECTED]
> DEBUG (init): node = 4 info =
> [EMAIL PROTECTED]
> DEBUG (init): node = 3 info =
> [EMAIL PROTECTED]
> DEBUG (init): node = 2 info =
> [EMAIL PROTECTED]
> DEBUG (init): node = 1 info =
> [EMAIL PROTECTED]
> DEBUG (after init): node = 5 info =
> [EMAIL PROTECTED]
> DEBUG (after init): node = 4 info =
> [EMAIL PROTECTED]
> DEBUG (after init): node = 3 info =
> [EMAIL PROTECTED]
> DEBUG (after init): node = 2 info =
> [EMAIL PROTECTED]
> DEBUG (after init): node = 1 info =
> [EMAIL PROTECTED]
> DEBUG (visit): node = 5
> DEBUG (visit): other = null otherInfo = null
> Tests run: 4, Failures: 0, Errors: 2, Skipped: 0, Time elapsed: 0.015 sec
> <<< FAILURE!
> testBackEdges(org.apache.openjpa.lib.graph.TestDepthFirstAnalysis)  Time
> elapsed: 0.015 sec  <<< ERROR!
> java.lang.NullPointerException
>         at org.apache.openjpa.lib.graph.DepthFirstAnalysis.visit (
> DepthFirstAnalysis.java:108)
>         at org.apache.openjpa.lib.graph.DepthFirstAnalysis.<init>(
> DepthFirstAnalysis.java:83)
>         at org.apache.openjpa.lib.graph.TestDepthFirstAnalysis.setUpGraph2
> (TestDepthFirstAnalysis.java :88)
>         at
> org.apache.openjpa.lib.graph.TestDepthFirstAnalysis.testBackEdges(
> TestDepthFirstAnalysis.java:117)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke (
> NativeMethodAccessorImpl.java:64)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(
> DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:615)
>         at junit.framework.TestCase.runTest (TestCase.java:154)
>         at junit.framework.TestCase.runBare(TestCase.java:127)
>         at junit.framework.TestResult$1.protect(TestResult.java:106)
>         at junit.framework.TestResult.runProtected(TestResult.java :124)
>         at junit.framework.TestResult.run(TestResult.java:109)
>         at junit.framework.TestCase.run(TestCase.java:118)
>         at org.apache.openjpa.lib.test.AbstractTestCase.run(
> AbstractTestCase.java:178)
>         at junit.framework.TestSuite.runTest(TestSuite.java:208)
>         at junit.framework.TestSuite.run(TestSuite.java:203)
>         at sun.reflect.GeneratedMethodAccessor10.invoke(Unknown Source)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(
> DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:615)
>         at org.apache.maven.surefire.junit.JUnitTestSet.execute(
> JUnitTestSet.java :210)
>         at
> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(
> AbstractDirectoryTestSuite.java:135)
>         at
> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(
> AbstractDirectoryTestSuite.java :122)
>         at org.apache.maven.surefire.Surefire.run(Surefire.java:129)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke(
> NativeMethodAccessorImpl.java :64)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(
> DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:615)
>         at
> org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess (
> SurefireBooter.java:225)
>         at org.apache.maven.surefire.booter.SurefireBooter.main(
> SurefireBooter.java:747)
>
> 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:108)
>         at org.apache.openjpa.lib.graph.DepthFirstAnalysis.<init>(
> DepthFirstAnalysis.java :83)
>         at org.apache.openjpa.lib.graph.TestDepthFirstAnalysis.setUpGraph2
> (TestDepthFirstAnalysis.java:88)
>         at
> org.apache.openjpa.lib.graph.TestDepthFirstAnalysis.testForwardEdges(
> TestDepthFirstAnalysis.java :141)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke(
> NativeMethodAccessorImpl.java:64)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke (
> DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:615)
>         at junit.framework.TestCase.runTest(TestCase.java:154)
>         at junit.framework.TestCase.runBare(TestCase.java :127)
>         at junit.framework.TestResult$1.protect(TestResult.java:106)
>         at junit.framework.TestResult.runProtected(TestResult.java:124)
>         at junit.framework.TestResult.run(TestResult.java:109)
>         at junit.framework.TestCase.run(TestCase.java:118)
>         at org.apache.openjpa.lib.test.AbstractTestCase.run(
> AbstractTestCase.java:178)
>         at junit.framework.TestSuite.runTest(TestSuite.java:208)
>         at junit.framework.TestSuite.run(TestSuite.java:203)
>         at sun.reflect.GeneratedMethodAccessor10.invoke(Unknown Source)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(
> DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:615)
>         at org.apache.maven.surefire.junit.JUnitTestSet.execute(
> JUnitTestSet.java:210)
>         at
> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(
> AbstractDirectoryTestSuite.java:135)
>         at
> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(
> AbstractDirectoryTestSuite.java:122)
>         at org.apache.maven.surefire.Surefire.run(Surefire.java :129)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke(
> NativeMethodAccessorImpl.java:64)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke (
> DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:615)
>         at
> org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(
> SurefireBooter.java:225)
>         at org.apache.maven.surefire.booter.SurefireBooter.main(
> SurefireBooter.java:747)
>
>
> On 7/19/07, Markus Fuchs <[EMAIL PROTECTED] > wrote:
>
> > Kevin,
> >
> > the failure might be caused by the field _dfa being initialized twice,
> > once in setUp and again in testBackEdges/testForwardEdges. Please try
> > the attached patch to resolve the problem.
> >
> > Thanks,
> >
> > -- markus.
> >
> > Kevin Sutter wrote:
> > > Markus,
> > > Here's the output after applying your diagnostic patch:  Hope it
> > helps!
> > >
> > > Running org.apache.openjpa.lib.graph.TestDepthFirstAnalysis
> > > DEBUG (init): node = [EMAIL PROTECTED] info =
> > > [EMAIL PROTECTED]
> > > DEBUG (init): node = [EMAIL PROTECTED] info =
> > > [EMAIL PROTECTED]
> > > DEBUG (init): node = [EMAIL PROTECTED] info =
> > > [EMAIL PROTECTED]
> > > DEBUG (init): node = [EMAIL PROTECTED] info =
> > > [EMAIL PROTECTED]
> > > DEBUG (after init): node = [EMAIL PROTECTED] info =
> > > [EMAIL PROTECTED]
> > > DEBUG (after init): node = [EMAIL PROTECTED] info =
> > > [EMAIL PROTECTED]
> > > DEBUG (after init): node = [EMAIL PROTECTED] info =
> > > [EMAIL PROTECTED]
> > > DEBUG (after init): node = [EMAIL PROTECTED] info =
> > > [EMAIL PROTECTED]
> > > DEBUG (visit): node = [EMAIL PROTECTED]
> > > DEBUG (visit): node = [EMAIL PROTECTED]
> > > DEBUG (visit): other = [EMAIL PROTECTED] otherInfo =
> > > [EMAIL PROTECTED]
> > > DEBUG (visit): node = [EMAIL PROTECTED]
> > > DEBUG (visit): other = [EMAIL PROTECTED] otherInfo =
> > > [EMAIL PROTECTED]
> > > DEBUG (visit): node = [EMAIL PROTECTED]
> > > DEBUG (visit): other = [EMAIL PROTECTED] otherInfo =
> > > [EMAIL PROTECTED]
> > > DEBUG (visit): other = [EMAIL PROTECTED] otherInfo =
> > > [EMAIL PROTECTED]
> > > DEBUG (visit): other = [EMAIL PROTECTED] otherInfo =
> > > [EMAIL PROTECTED]
> > > DEBUG (init): node = [EMAIL PROTECTED] info =
> > > [EMAIL PROTECTED]
> > > DEBUG (init): node = [EMAIL PROTECTED] info =
> > > [EMAIL PROTECTED]
> > > DEBUG (init): node = [EMAIL PROTECTED] info =
> > > [EMAIL PROTECTED]
> > > DEBUG (init): node = [EMAIL PROTECTED] info =
> > > [EMAIL PROTECTED]
> > > DEBUG (after init): node = [EMAIL PROTECTED] info =
> > > [EMAIL PROTECTED]
> > > DEBUG (after init): node = [EMAIL PROTECTED] info =
> > > [EMAIL PROTECTED]
> > > DEBUG (after init): node = [EMAIL PROTECTED] info =
> > > [EMAIL PROTECTED]
> > > DEBUG (after init): node = [EMAIL PROTECTED] info =
> > > [EMAIL PROTECTED]
> > > DEBUG (visit): node = [EMAIL PROTECTED]
> > > DEBUG (visit): other = [EMAIL PROTECTED] otherInfo =
> > > [EMAIL PROTECTED]
> > > DEBUG (visit): node = [EMAIL PROTECTED]
> > > DEBUG (visit): other = [EMAIL PROTECTED] otherInfo =
> > > [EMAIL PROTECTED]
> > > DEBUG (visit): node = [EMAIL PROTECTED]
> > > DEBUG (visit): other = [EMAIL PROTECTED] otherInfo =
> > > [EMAIL PROTECTED]
> > > DEBUG (visit): other = [EMAIL PROTECTED] otherInfo =
> > > [EMAIL PROTECTED]
> > > DEBUG (visit): other = [EMAIL PROTECTED] otherInfo =
> > > [EMAIL PROTECTED]
> > > DEBUG (visit): node = [EMAIL PROTECTED]
> > > DEBUG (init): node = [EMAIL PROTECTED] info =
> > > [EMAIL PROTECTED]
> > > DEBUG (init): node = [EMAIL PROTECTED] info =
> > > [EMAIL PROTECTED]
> > > DEBUG (init): node = [EMAIL PROTECTED] info =
> > > [EMAIL PROTECTED]
> > > DEBUG (init): node = [EMAIL PROTECTED] info =
> > > [EMAIL PROTECTED]
> > > DEBUG (after init): node = [EMAIL PROTECTED] info =
> > > [EMAIL PROTECTED]
> > > DEBUG (after init): node = [EMAIL PROTECTED] info =
> > > [EMAIL PROTECTED]
> > > DEBUG (after init): node = [EMAIL PROTECTED] info =
> > > [EMAIL PROTECTED]
> > > DEBUG (after init): node = [EMAIL PROTECTED] info =
> > > [EMAIL PROTECTED]
> > > DEBUG (visit): node = [EMAIL PROTECTED]
> > > DEBUG (visit): other = [EMAIL PROTECTED] otherInfo =
> > > [EMAIL PROTECTED]
> > > DEBUG (visit): node = [EMAIL PROTECTED]
> > > DEBUG (visit): other = [EMAIL PROTECTED] otherInfo =
> > > [EMAIL PROTECTED]
> > > DEBUG (visit): node = [EMAIL PROTECTED]
> > > DEBUG (visit): other = [EMAIL PROTECTED] otherInfo =
> > > [EMAIL PROTECTED]
> > > DEBUG (visit): other = [EMAIL PROTECTED] otherInfo =
> > > [EMAIL PROTECTED]
> > > DEBUG (visit): node = [EMAIL PROTECTED]
> > > DEBUG (visit): other = [EMAIL PROTECTED] otherInfo =
> > > [EMAIL PROTECTED]
> > > DEBUG (init): node = 5 info =
> > > [EMAIL PROTECTED]
> > > DEBUG (init): node = 4 info =
> > > [EMAIL PROTECTED]
> > > DEBUG (init): node = 3 info =
> > > [EMAIL PROTECTED]
> > > DEBUG (init): node = 2 info =
> > > [EMAIL PROTECTED]
> > > DEBUG (init): node = 1 info =
> > > [EMAIL PROTECTED]
> > > DEBUG (after init): node = 5 info =
> > > [EMAIL PROTECTED]
> > > DEBUG (after init): node = 4 info =
> > > [EMAIL PROTECTED]
> > > DEBUG (after init): node = 3 info =
> > > [EMAIL PROTECTED]
> > > DEBUG (after init): node = 2 info =
> > > [EMAIL PROTECTED]
> > > DEBUG (after init): node = 1 info =
> > > [EMAIL PROTECTED]
> > > DEBUG (visit): node = 5
> > > DEBUG (visit): other = null otherInfo = null
> > > DEBUG (init): node = [EMAIL PROTECTED] info =
> > > [EMAIL PROTECTED]
> > > DEBUG (init): node = [EMAIL PROTECTED] info =
> > > [EMAIL PROTECTED]
> > > DEBUG (init): node = [EMAIL PROTECTED] info =
> > > [EMAIL PROTECTED]
> > > DEBUG (init): node = [EMAIL PROTECTED] info =
> > > [EMAIL PROTECTED]
> > > DEBUG (after init): node = [EMAIL PROTECTED] info =
> > > [EMAIL PROTECTED]
> > > DEBUG (after init): node = [EMAIL PROTECTED] info =
> > > [EMAIL PROTECTED]
> > > DEBUG (after init): node = [EMAIL PROTECTED] info =
> > > [EMAIL PROTECTED]
> > > DEBUG (after init): node = [EMAIL PROTECTED] info =
> > > [EMAIL PROTECTED]
> > > DEBUG (visit): node = [EMAIL PROTECTED]
> > > DEBUG (visit): node = [EMAIL PROTECTED]
> > > DEBUG (visit): other = [EMAIL PROTECTED] otherInfo =
> > > [EMAIL PROTECTED]
> > > DEBUG (visit): node = [EMAIL PROTECTED]
> > > DEBUG (visit): other = [EMAIL PROTECTED] otherInfo =
> > > [EMAIL PROTECTED]
> > > DEBUG (visit): node = [EMAIL PROTECTED]
> > > DEBUG (visit): other = [EMAIL PROTECTED] otherInfo =
> > > [EMAIL PROTECTED]
> > > DEBUG (visit): other = [EMAIL PROTECTED] otherInfo =
> > > [EMAIL PROTECTED]
> > > DEBUG (visit): other = [EMAIL PROTECTED] otherInfo =
> > > [EMAIL PROTECTED]
> > > DEBUG (init): node = 5 info =
> > > [EMAIL PROTECTED]
> > > DEBUG (init): node = 4 info =
> > > [EMAIL PROTECTED]
> > > DEBUG (init): node = 3 info =
> > > [EMAIL PROTECTED]
> > > DEBUG (init): node = 2 info =
> > > [EMAIL PROTECTED]
> > > DEBUG (init): node = 1 info =
> > > [EMAIL PROTECTED]
> > > DEBUG (after init): node = 5 info =
> > > [EMAIL PROTECTED]
> > > DEBUG (after init): node = 4 info =
> > > [EMAIL PROTECTED]
> > > DEBUG (after init): node = 3 info =
> > > [EMAIL PROTECTED]
> > > DEBUG (after init): node = 2 info =
> > > [EMAIL PROTECTED]
> > > DEBUG (after init): node = 1 info =
> > > [EMAIL PROTECTED]
> > > DEBUG (visit): node = 5
> > > DEBUG (visit): other = null otherInfo = null
> > > Tests run: 4, Failures: 0, Errors: 2, Skipped: 0, Time elapsed: 0.016sec
> > > <<< FAILURE!
> > > testBackEdges(org.apache.openjpa.lib.graph.TestDepthFirstAnalysis)  Time
> > > elapsed: 0.016 sec  <<< ERROR!
> > > java.lang.NullPointerException
> > >        at org.apache.openjpa.lib.graph.DepthFirstAnalysis.visit(
> > > DepthFirstAnalysis.java:108)
> > >        at org.apache.openjpa.lib.graph.DepthFirstAnalysis.<init>(
> > > DepthFirstAnalysis.java:83)
> > >        at
> > > org.apache.openjpa.lib.graph.TestDepthFirstAnalysis.setUpGraph2(
> > > TestDepthFirstAnalysis.java :78)
> > >        at
> > > org.apache.openjpa.lib.graph.TestDepthFirstAnalysis.testBackEdges
> > > (TestDepthFirstAnalysis.java:105)
> > >        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> > >        at sun.reflect.NativeMethodAccessorImpl.invoke(
> > > NativeMethodAccessorImpl.java:64)
> > >        at sun.reflect.DelegatingMethodAccessorImpl.invoke(
> > > DelegatingMethodAccessorImpl.java:43)
> > >        at java.lang.reflect.Method.invoke (Method.java:615)
> > >        at junit.framework.TestCase.runTest(TestCase.java:154)
> > >        at junit.framework.TestCase.runBare(TestCase.java:127)
> > >        at junit.framework.TestResult$1.protect(TestResult.java :106)
> > >        at junit.framework.TestResult.runProtected(TestResult.java:124)
> > >        at junit.framework.TestResult.run(TestResult.java:109)
> > >        at junit.framework.TestCase.run(TestCase.java:118)
> > >        at org.apache.openjpa.lib.test.AbstractTestCase.run(
> > > AbstractTestCase.java:178)
> > >        at junit.framework.TestSuite.runTest(TestSuite.java:208)
> > >        at junit.framework.TestSuite.run(TestSuite.java :203)
> > >        at sun.reflect.GeneratedMethodAccessor10.invoke(Unknown Source)
> > >        at sun.reflect.DelegatingMethodAccessorImpl.invoke(
> > > DelegatingMethodAccessorImpl.java:43)
> > >        at java.lang.reflect.Method.invoke (Method.java:615)
> > >        at org.apache.maven.surefire.junit.JUnitTestSet.execute(
> > > JUnitTestSet.java:210)
> > >        at
> > >
> > org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(
> >
> > >
> > > AbstractDirectoryTestSuite.java:)
> > >        at
> > > org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(
> > > AbstractDirectoryTestSuite.java:122)
> > >        at org.apache.maven.surefire.Surefire.run (Surefire.java:129)
> > >        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> > >        at sun.reflect.NativeMethodAccessorImpl.invoke(
> > > NativeMethodAccessorImpl.java:64)
> > >        at sun.reflect.DelegatingMethodAccessorImpl.invoke(
> > > DelegatingMethodAccessorImpl.java:43)
> > >        at java.lang.reflect.Method.invoke(Method.java:615)
> > >        at
> > > org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess (
> > > SurefireBooter.java:225)
> > >        at org.apache.maven.surefire.booter.SurefireBooter.main(
> > > SurefireBooter.java:747)
> > >
> > > 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:108)
> > >        at org.apache.openjpa.lib.graph.DepthFirstAnalysis.<init>(
> > > DepthFirstAnalysis.java:83)
> > >        at
> > > org.apache.openjpa.lib.graph.TestDepthFirstAnalysis.setUpGraph2(
> > > TestDepthFirstAnalysis.java :78)
> > >        at
> > > org.apache.openjpa.lib.graph.TestDepthFirstAnalysis.testForwardEdges(
> > > TestDepthFirstAnalysis.java:129)
> > >        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> > >        at sun.reflect.NativeMethodAccessorImpl.invoke(
> > > NativeMethodAccessorImpl.java:64)
> > >        at sun.reflect.DelegatingMethodAccessorImpl.invoke(
> > > DelegatingMethodAccessorImpl.java:43)
> > >        at java.lang.reflect.Method.invoke(Method.java:615)
> > >        at junit.framework.TestCase.runTest(TestCase.java:154)
> > >        at junit.framework.TestCase.runBare(TestCase.java:127)
> > >        at junit.framework.TestResult$1.protect (TestResult.java:106)
> > >        at junit.framework.TestResult.runProtected(TestResult.java:124)
> > >        at junit.framework.TestResult.run(TestResult.java:109)
> > >        at junit.framework.TestCase.run(TestCase.java :118)
> > >        at org.apache.openjpa.lib.test.AbstractTestCase.run(
> > > AbstractTestCase.java:178)
> > >        at junit.framework.TestSuite.runTest(TestSuite.java:208)
> > >        at junit.framework.TestSuite.run (TestSuite.java:203)
> > >        at sun.reflect.GeneratedMethodAccessor10.invoke(Unknown Source)
> > >        at sun.reflect.DelegatingMethodAccessorImpl.invoke(
> > > DelegatingMethodAccessorImpl.java:43)
> > >        at java.lang.reflect.Method.invoke(Method.java:615)
> > >        at org.apache.maven.surefire.junit.JUnitTestSet.execute(
> > > JUnitTestSet.java:210)
> > >        at
> > >
> > org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(
> > >
> > > AbstractDirectoryTestSuite.java:)
> > >        at
> > > org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(
> > > AbstractDirectoryTestSuite.java:122)
> > >        at org.apache.maven.surefire.Surefire.run (Surefire.java:129)
> > >        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> > >        at sun.reflect.NativeMethodAccessorImpl.invoke(
> > > NativeMethodAccessorImpl.java:64)
> > >        at sun.reflect.DelegatingMethodAccessorImpl.invoke(
> > > DelegatingMethodAccessorImpl.java:43)
> > >        at java.lang.reflect.Method.invoke(Method.java:615)
> > >        at
> > > org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess (
> > > SurefireBooter.java:225)
> > >        at org.apache.maven.surefire.booter.SurefireBooter.main(
> > > SurefireBooter.java:747)
> > >
> > >
> > > On 7/18/07, Markus Fuchs < [EMAIL PROTECTED]> wrote:
> > >>
> > >> Thanks Marc. I added debug statements the the code accessing the
> > >> _nodeInfo Map. Could somebody please try the attached patch!
> > >>
> > >> -- markus.
> > >>
> > >> Marc Prud'hommeaux wrote:
> > >> >
> > >> > As a random shot in the dark (I can't reproduce the error on my
> > >> > machine), I notice that the _nodeInfo Map is relying on keys being
> > of
> > >> > type java.util.Collection, and the javadoc for Collection.equals()
> > >> > does not actually require that equality be evaluated based on the
> > >> > content of the collection (although java.util.List.equals() does).
> > >> >
> > >> > So if somehow there is an IBM-specific list that is being put in
> > there
> > >> > as a key, then a lookup using an equivalent collection might not be
> > >> > succeeding, resulting in _nodeInfo.get(other) returning null.
> > >> >
> > >> > Anyway, just a guess. Some debug statements would very quickly show
> > it
> > >> > that might be the case or not.
> > >> >
> > >> >
> > >> >
> > >> >
> > >> >
> > >> > On Jul 18, 2007, at 8:59 AM, Patrick Linskey wrote:
> > >> >
> > >> >> From the source:
> > >> >>
> > >> >>>             otherInfo = (NodeInfo) _nodeInfo.get(other);
> > >> >>>             if (otherInfo.color == NodeInfo.COLOR_WHITE) {
> > >> >>
> > >> >> Assuming that the class constant is non-null, that leaves
> > otherInfo.
> > >> >> _nodeInfo is populated during construction based on the graph
> > passed
> > >> >> to the constructor. It looks like the null must be coming from
> > >> >> Graph.java:154 or Graph.java :162.
> > >> >>
> > >> >> -Patrick
> > >> >>
> > >> >> On 7/18/07, Craig L Russell <[EMAIL PROTECTED]> wrote:
> > >> >>> So it's either a bug in the IBM vm or a bug in our code that
> > >> exploits
> > >> >>> some loophole in the spec that the Sun JDK doesn't fail on...
> > >> >>>
> > >> >>> Craig
> > >> >>>
> > >> >>> On Jul 18, 2007, at 8:38 AM, Kevin Sutter wrote:
> > >> >>>
> > >> >>> > Yes, and the Sun JDK works just fine.  So, for the majority of
> > the
> > >> >>> > folks,
> > >> >>> > there is no problem...  :-(
> > >> >>> >
> > >> >>> > On 7/18/07, Craig L Russell <[EMAIL PROTECTED]> wrote:
> > >> >>> >>
> > >> >>> >> I don't suppose you have run this with the Sun JDK (that I've
> > >> tested
> > >> >>> >> on).
> > >> >>> >>
> > >> >>> >> Craig
> > >> >>> >>
> > >> >>> >> On Jul 18, 2007, at 8:00 AM, Kevin Sutter wrote:
> > >> >>> >>
> > >> >>> >> > Craig,
> > >> >>> >> > I haven't taken the time to figure out the source of the
> > >> problem
> > >> >>> >> > yet, but I
> > >> >>> >> > am experiencing two NPE's in our test bucket when running
> > with
> > >> the
> > >> >>> >> > IBM JDK (
> > >> >>> >> > 1.5.0 SR5).  I thought I would post a heads-up for any IBM
> > JDK
> > >> >>> >> > users...
> > >> >>>
> > >> >>> Craig Russell
> > >> >>> Architect, Sun Java Enterprise System
> > >> http://java.sun.com/products/jdo
> > >> >>> 408 276-5638 mailto:[EMAIL PROTECTED]
> > >> >>> P.S. A good JDO? O, Gasp!
> > >> >>>
> > >> >>>
> > >> >>>
> > >> >>
> > >> >>
> > >> >> --Patrick Linskey
> > >> >> 202 669 5907
> > >> >
> > >>
> > >>
> > >
> >
> > Index:
> > openjpa-lib/src/test/java/org/apache/openjpa/lib/graph/TestDepthFirstAnalysis.java
> > ===================================================================
> > ---
> > openjpa-lib/src/test/java/org/apache/openjpa/lib/graph/TestDepthFirstAnalysis.java
> >   (revision
> > 557093)
> > +++
> > openjpa-lib/src/test/java/org/apache/openjpa/lib/graph/TestDepthFirstAnalysis.java
> >   (working
> > copy)
> > @@ -35,7 +35,6 @@
> >      private DepthFirstAnalysis _dfa = null;
> >
> >      public void setUp() {
> > -        setUpGraph1();
> >      }
> >
> >      public void setUpGraph1() {
> > @@ -58,30 +57,30 @@
> >
> >      public void setUpGraph2() {
> >          Graph graph = new Graph();
> > -        Integer node1 = new Integer(5);
> > -        Integer node2 = new Integer(4);
> > +        Integer node5 = new Integer(5);
> > +        Integer node4 = new Integer(4);
> >          Integer node3 = new Integer(3);
> > -        Integer node4 = new Integer(2);
> > -        Integer node5 = new Integer(1);
> > +        Integer node2 = new Integer(2);
> > +        Integer node1 = new Integer(1);
> > +        graph.addNode(node5);
> > +        graph.addNode(node4);
> > +        graph.addNode(node3);
> > +        graph.addNode(node2);
> >          graph.addNode(node1);
> > -        graph.addNode(node2);
> > -        graph.addNode(node3);
> > -        graph.addNode(node4);
> > -        graph.addNode(node5);
> > -        graph.addEdge(new Edge(node1, node2, true));
> > -        graph.addEdge(new Edge(node2, node3, true));
> > +        graph.addEdge(new Edge(node5, node4, true));
> > +        graph.addEdge(new Edge(node4, node3, true));
> >          graph.addEdge(new Edge(node3, node3, true));
> > -        graph.addEdge(new Edge(node3, node4, true));
> > -        graph.addEdge(new Edge(node4, node1, true));
> > -        graph.addEdge(new Edge(node4, node2, true));
> > -        graph.addEdge(new Edge(node5, node2, true));
> > +        graph.addEdge(new Edge(node3, node2, true));
> > +        graph.addEdge(new Edge(node2, node5, true));
> > +        graph.addEdge(new Edge(node2, node4, true));
> > +        graph.addEdge(new Edge(node1, node4, true));
> >          _dfa = new DepthFirstAnalysis(graph);
> >      }
> >
> >      public void testNodeSorting() {
> > +        setUpGraph1();
> >          Collection nodes = _dfa.getSortedNodes();
> >          assertEquals(4, nodes.size ());
> > -
> >          int time = 0;
> >          Object node;
> >          for (Iterator itr = nodes.iterator(); itr.hasNext();) {
> > @@ -92,6 +91,7 @@
> >      }
> >
> >      public void testEdgeTyping() {
> > +        setUpGraph1();
> >          Collection edges = _dfa.getEdges(Edge.TYPE_BACK);
> >          assertEquals(2, edges.size());
> >          Iterator itr = edges.iterator();
> >
> >
>

Reply via email to