openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kevin Sutter" <kwsut...@gmail.com>
Subject Re: svn commit: r557089 - in /openjpa/trunk: openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/ openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/ openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/kernel/ openjpa-lib/src/main/ja
Date Mon, 30 Jul 2007 03:42:29 GMT
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 <kwsutter@gmail.com> 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 = java.lang.Object@3f563f56 info =
> org.apache.openjpa.lib.graph.NodeInfo@7c047c04
> DEBUG (init): node = java.lang.Object@3f523f52 info =
> org.apache.openjpa.lib.graph.NodeInfo@7e807e80
> DEBUG (init): node = java.lang.Object@3f5a3f5a info =
> org.apache.openjpa.lib.graph.NodeInfo@ba00ba
> DEBUG (init): node = java.lang.Object@3f4e3f4e info =
> org.apache.openjpa.lib.graph.NodeInfo@28c028c
> DEBUG (after init): node = java.lang.Object@3f563f56 info =
> org.apache.openjpa.lib.graph.NodeInfo@7c047c04
> DEBUG (after init): node = java.lang.Object@3f523f52 info =
> org.apache.openjpa.lib.graph.NodeInfo@7e807e80
> DEBUG (after init): node = java.lang.Object@3f5a3f5a info =
> org.apache.openjpa.lib.graph.NodeInfo@ba00ba
> DEBUG (after init): node = java.lang.Object@3f4e3f4e info =
> org.apache.openjpa.lib.graph.NodeInfo@28c028c
> DEBUG (visit): node = java.lang.Object@3f563f56
> DEBUG (visit): other = java.lang.Object@3f4e3f4e otherInfo =
> org.apache.openjpa.lib.graph.NodeInfo@28c028c
> DEBUG (visit): node = java.lang.Object@3f4e3f4e
> DEBUG (visit): other = java.lang.Object@3f523f52 otherInfo =
> org.apache.openjpa.lib.graph.NodeInfo@7e807e80
> DEBUG (visit): node = java.lang.Object@3f523f52
> DEBUG (visit): other = java.lang.Object@3f563f56 otherInfo =
> org.apache.openjpa.lib.graph.NodeInfo@7c047c04
> DEBUG (visit): other = java.lang.Object@3f523f52 otherInfo =
> org.apache.openjpa.lib.graph.NodeInfo@7e807e80
> DEBUG (visit): other = java.lang.Object@3f5a3f5a otherInfo =
> org.apache.openjpa.lib.graph.NodeInfo@ba00ba
> DEBUG (visit): node = java.lang.Object@3f5a3f5a
> DEBUG (init): node = java.lang.Object@74bc74bc info =
> org.apache.openjpa.lib.graph.NodeInfo@757a757a
> DEBUG (init): node = java.lang.Object@74b874b8 info =
> org.apache.openjpa.lib.graph.NodeInfo@105a105a
> DEBUG (init): node = java.lang.Object@74b474b4 info =
> org.apache.openjpa.lib.graph.NodeInfo@12941294
> DEBUG (init): node = java.lang.Object@74b074b0 info =
> org.apache.openjpa.lib.graph.NodeInfo@14661466
> DEBUG (after init): node = java.lang.Object@74bc74bc info =
> org.apache.openjpa.lib.graph.NodeInfo@757a757a
> DEBUG (after init): node = java.lang.Object@74b874b8 info =
> org.apache.openjpa.lib.graph.NodeInfo@105a105a
> DEBUG (after init): node = java.lang.Object@74b474b4 info =
> org.apache.openjpa.lib.graph.NodeInfo@12941294
> DEBUG (after init): node = java.lang.Object@74b074b0 info =
> org.apache.openjpa.lib.graph.NodeInfo@14661466
> DEBUG (visit): node = java.lang.Object@74bc74bc
> DEBUG (visit): node = java.lang.Object@74b874b8
> DEBUG (visit): other = java.lang.Object@74b074b0 otherInfo =
> org.apache.openjpa.lib.graph.NodeInfo@14661466
> DEBUG (visit): node = java.lang.Object@74b074b0
> DEBUG (visit): other = java.lang.Object@74b474b4 otherInfo =
> org.apache.openjpa.lib.graph.NodeInfo@12941294
> DEBUG (visit): node = java.lang.Object@74b474b4
> DEBUG (visit): other = java.lang.Object@74b874b8 otherInfo =
> org.apache.openjpa.lib.graph.NodeInfo@105a105a
> DEBUG (visit): other = java.lang.Object@74b474b4 otherInfo =
> org.apache.openjpa.lib.graph.NodeInfo@12941294
> DEBUG (visit): other = java.lang.Object@74bc74bc otherInfo =
> org.apache.openjpa.lib.graph.NodeInfo@757a757a
> DEBUG (init): node = 5 info =
> org.apache.openjpa.lib.graph.NodeInfo@32f032f0
> DEBUG (init): node = 4 info =
> org.apache.openjpa.lib.graph.NodeInfo@34d634d6
> DEBUG (init): node = 3 info =
> org.apache.openjpa.lib.graph.NodeInfo@36603660
> DEBUG (init): node = 2 info =
> org.apache.openjpa.lib.graph.NodeInfo@379a379a
> DEBUG (init): node = 1 info =
> org.apache.openjpa.lib.graph.NodeInfo@38d438d4
> DEBUG (after init): node = 5 info =
> org.apache.openjpa.lib.graph.NodeInfo@32f032f0
> DEBUG (after init): node = 4 info =
> org.apache.openjpa.lib.graph.NodeInfo@34d634d6
> DEBUG (after init): node = 3 info =
> org.apache.openjpa.lib.graph.NodeInfo@36603660
> DEBUG (after init): node = 2 info =
> org.apache.openjpa.lib.graph.NodeInfo@379a379a
> DEBUG (after init): node = 1 info =
> org.apache.openjpa.lib.graph.NodeInfo@38d438d4
> DEBUG (visit): node = 5
> DEBUG (visit): other = null otherInfo = null
> DEBUG (init): node = 5 info =
> org.apache.openjpa.lib.graph.NodeInfo@261c261c
> DEBUG (init): node = 4 info =
> org.apache.openjpa.lib.graph.NodeInfo@2f0e2f0e
> DEBUG (init): node = 3 info =
> org.apache.openjpa.lib.graph.NodeInfo@30983098
> DEBUG (init): node = 2 info =
> org.apache.openjpa.lib.graph.NodeInfo@31d231d2
> DEBUG (init): node = 1 info =
> org.apache.openjpa.lib.graph.NodeInfo@330c330c
> DEBUG (after init): node = 5 info =
> org.apache.openjpa.lib.graph.NodeInfo@261c261c
> DEBUG (after init): node = 4 info =
> org.apache.openjpa.lib.graph.NodeInfo@2f0e2f0e
> DEBUG (after init): node = 3 info =
> org.apache.openjpa.lib.graph.NodeInfo@30983098
> DEBUG (after init): node = 2 info =
> org.apache.openjpa.lib.graph.NodeInfo@31d231d2
> DEBUG (after init): node = 1 info =
> org.apache.openjpa.lib.graph.NodeInfo@330c330c
> 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 <Markus.Fuchs@sun.com > 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 = java.lang.Object@22a422a4 info =
> > > org.apache.openjpa.lib.graph.NodeInfo@44e044e0
> > > DEBUG (init): node = java.lang.Object@22a022a0 info =
> > > org.apache.openjpa.lib.graph.NodeInfo@473c473c
> > > DEBUG (init): node = java.lang.Object@229c229c info =
> > > org.apache.openjpa.lib.graph.NodeInfo@52145214
> > > DEBUG (init): node = java.lang.Object@22982298 info =
> > > org.apache.openjpa.lib.graph.NodeInfo@53e653e6
> > > DEBUG (after init): node = java.lang.Object@22a422a4 info =
> > > org.apache.openjpa.lib.graph.NodeInfo@44e044e0
> > > DEBUG (after init): node = java.lang.Object@22a022a0 info =
> > > org.apache.openjpa.lib.graph.NodeInfo@473c473c
> > > DEBUG (after init): node = java.lang.Object@229c229c info =
> > > org.apache.openjpa.lib.graph.NodeInfo@52145214
> > > DEBUG (after init): node = java.lang.Object@22982298 info =
> > > org.apache.openjpa.lib.graph.NodeInfo@53e653e6
> > > DEBUG (visit): node = java.lang.Object@22a422a4
> > > DEBUG (visit): node = java.lang.Object@22a022a0
> > > DEBUG (visit): other = java.lang.Object@22982298 otherInfo =
> > > org.apache.openjpa.lib.graph.NodeInfo@53e653e6
> > > DEBUG (visit): node = java.lang.Object@22982298
> > > DEBUG (visit): other = java.lang.Object@229c229c otherInfo =
> > > org.apache.openjpa.lib.graph.NodeInfo@52145214
> > > DEBUG (visit): node = java.lang.Object@229c229c
> > > DEBUG (visit): other = java.lang.Object@22a022a0 otherInfo =
> > > org.apache.openjpa.lib.graph.NodeInfo@473c473c
> > > DEBUG (visit): other = java.lang.Object@229c229c otherInfo =
> > > org.apache.openjpa.lib.graph.NodeInfo@52145214
> > > DEBUG (visit): other = java.lang.Object@22a422a4 otherInfo =
> > > org.apache.openjpa.lib.graph.NodeInfo@44e044e0
> > > DEBUG (init): node = java.lang.Object@32643264 info =
> > > org.apache.openjpa.lib.graph.NodeInfo@33263326
> > > DEBUG (init): node = java.lang.Object@32603260 info =
> > > org.apache.openjpa.lib.graph.NodeInfo@354c354c
> > > DEBUG (init): node = java.lang.Object@32683268 info =
> > > org.apache.openjpa.lib.graph.NodeInfo@37863786
> > > DEBUG (init): node = java.lang.Object@325c325c info =
> > > org.apache.openjpa.lib.graph.NodeInfo@3a2c3a2c
> > > DEBUG (after init): node = java.lang.Object@32643264 info =
> > > org.apache.openjpa.lib.graph.NodeInfo@33263326
> > > DEBUG (after init): node = java.lang.Object@32603260 info =
> > > org.apache.openjpa.lib.graph.NodeInfo@354c354c
> > > DEBUG (after init): node = java.lang.Object@32683268 info =
> > > org.apache.openjpa.lib.graph.NodeInfo@37863786
> > > DEBUG (after init): node = java.lang.Object@325c325c info =
> > > org.apache.openjpa.lib.graph.NodeInfo@3a2c3a2c
> > > DEBUG (visit): node = java.lang.Object@32643264
> > > DEBUG (visit): other = java.lang.Object@325c325c otherInfo =
> > > org.apache.openjpa.lib.graph.NodeInfo@3a2c3a2c
> > > DEBUG (visit): node = java.lang.Object@325c325c
> > > DEBUG (visit): other = java.lang.Object@32603260 otherInfo =
> > > org.apache.openjpa.lib.graph.NodeInfo@354c354c
> > > DEBUG (visit): node = java.lang.Object@32603260
> > > DEBUG (visit): other = java.lang.Object@32643264 otherInfo =
> > > org.apache.openjpa.lib.graph.NodeInfo@33263326
> > > DEBUG (visit): other = java.lang.Object@32603260 otherInfo =
> > > org.apache.openjpa.lib.graph.NodeInfo@354c354c
> > > DEBUG (visit): other = java.lang.Object@32683268 otherInfo =
> > > org.apache.openjpa.lib.graph.NodeInfo@37863786
> > > DEBUG (visit): node = java.lang.Object@32683268
> > > DEBUG (init): node = java.lang.Object@71a471a4 info =
> > > org.apache.openjpa.lib.graph.NodeInfo@726e726e
> > > DEBUG (init): node = java.lang.Object@71ac71ac info =
> > > org.apache.openjpa.lib.graph.NodeInfo@74947494
> > > DEBUG (init): node = java.lang.Object@71a871a8 info =
> > > org.apache.openjpa.lib.graph.NodeInfo@33fc33fc
> > > DEBUG (init): node = java.lang.Object@71b071b0 info =
> > > org.apache.openjpa.lib.graph.NodeInfo@38003800
> > > DEBUG (after init): node = java.lang.Object@71a471a4 info =
> > > org.apache.openjpa.lib.graph.NodeInfo@726e726e
> > > DEBUG (after init): node = java.lang.Object@71ac71ac info =
> > > org.apache.openjpa.lib.graph.NodeInfo@74947494
> > > DEBUG (after init): node = java.lang.Object@71a871a8 info =
> > > org.apache.openjpa.lib.graph.NodeInfo@33fc33fc
> > > DEBUG (after init): node = java.lang.Object@71b071b0 info =
> > > org.apache.openjpa.lib.graph.NodeInfo@38003800
> > > DEBUG (visit): node = java.lang.Object@71a471a4
> > > DEBUG (visit): other = java.lang.Object@71a871a8 otherInfo =
> > > org.apache.openjpa.lib.graph.NodeInfo@33fc33fc
> > > DEBUG (visit): node = java.lang.Object@71a871a8
> > > DEBUG (visit): other = java.lang.Object@71ac71ac otherInfo =
> > > org.apache.openjpa.lib.graph.NodeInfo@74947494
> > > DEBUG (visit): node = java.lang.Object@71ac71ac
> > > DEBUG (visit): other = java.lang.Object@71a471a4 otherInfo =
> > > org.apache.openjpa.lib.graph.NodeInfo@726e726e
> > > DEBUG (visit): other = java.lang.Object@71b071b0 otherInfo =
> > > org.apache.openjpa.lib.graph.NodeInfo@38003800
> > > DEBUG (visit): node = java.lang.Object@71b071b0
> > > DEBUG (visit): other = java.lang.Object@71a871a8 otherInfo =
> > > org.apache.openjpa.lib.graph.NodeInfo@33fc33fc
> > > DEBUG (init): node = 5 info =
> > > org.apache.openjpa.lib.graph.NodeInfo@a340a34
> > > DEBUG (init): node = 4 info =
> > > org.apache.openjpa.lib.graph.NodeInfo@ec80ec8
> > > DEBUG (init): node = 3 info =
> > > org.apache.openjpa.lib.graph.NodeInfo@10021002
> > > DEBUG (init): node = 2 info =
> > > org.apache.openjpa.lib.graph.NodeInfo@113c113c
> > > DEBUG (init): node = 1 info =
> > > org.apache.openjpa.lib.graph.NodeInfo@2a522a52
> > > DEBUG (after init): node = 5 info =
> > > org.apache.openjpa.lib.graph.NodeInfo@a340a34
> > > DEBUG (after init): node = 4 info =
> > > org.apache.openjpa.lib.graph.NodeInfo@ec80ec8
> > > DEBUG (after init): node = 3 info =
> > > org.apache.openjpa.lib.graph.NodeInfo@10021002
> > > DEBUG (after init): node = 2 info =
> > > org.apache.openjpa.lib.graph.NodeInfo@113c113c
> > > DEBUG (after init): node = 1 info =
> > > org.apache.openjpa.lib.graph.NodeInfo@2a522a52
> > > DEBUG (visit): node = 5
> > > DEBUG (visit): other = null otherInfo = null
> > > DEBUG (init): node = java.lang.Object@7bc27bc2 info =
> > > org.apache.openjpa.lib.graph.NodeInfo@25a625a6
> > > DEBUG (init): node = java.lang.Object@7bbe7bbe info =
> > > org.apache.openjpa.lib.graph.NodeInfo@27cc27cc
> > > DEBUG (init): node = java.lang.Object@7bba7bba info =
> > > org.apache.openjpa.lib.graph.NodeInfo@2fda2fda
> > > DEBUG (init): node = java.lang.Object@7bb67bb6 info =
> > > org.apache.openjpa.lib.graph.NodeInfo@31d231d2
> > > DEBUG (after init): node = java.lang.Object@7bc27bc2 info =
> > > org.apache.openjpa.lib.graph.NodeInfo@25a625a6
> > > DEBUG (after init): node = java.lang.Object@7bbe7bbe info =
> > > org.apache.openjpa.lib.graph.NodeInfo@27cc27cc
> > > DEBUG (after init): node = java.lang.Object@7bba7bba info =
> > > org.apache.openjpa.lib.graph.NodeInfo@2fda2fda
> > > DEBUG (after init): node = java.lang.Object@7bb67bb6 info =
> > > org.apache.openjpa.lib.graph.NodeInfo@31d231d2
> > > DEBUG (visit): node = java.lang.Object@7bc27bc2
> > > DEBUG (visit): node = java.lang.Object@7bbe7bbe
> > > DEBUG (visit): other = java.lang.Object@7bb67bb6 otherInfo =
> > > org.apache.openjpa.lib.graph.NodeInfo@31d231d2
> > > DEBUG (visit): node = java.lang.Object@7bb67bb6
> > > DEBUG (visit): other = java.lang.Object@7bba7bba otherInfo =
> > > org.apache.openjpa.lib.graph.NodeInfo@2fda2fda
> > > DEBUG (visit): node = java.lang.Object@7bba7bba
> > > DEBUG (visit): other = java.lang.Object@7bbe7bbe otherInfo =
> > > org.apache.openjpa.lib.graph.NodeInfo@27cc27cc
> > > DEBUG (visit): other = java.lang.Object@7bba7bba otherInfo =
> > > org.apache.openjpa.lib.graph.NodeInfo@2fda2fda
> > > DEBUG (visit): other = java.lang.Object@7bc27bc2 otherInfo =
> > > org.apache.openjpa.lib.graph.NodeInfo@25a625a6
> > > DEBUG (init): node = 5 info =
> > > org.apache.openjpa.lib.graph.NodeInfo@163a163a
> > > DEBUG (init): node = 4 info =
> > > org.apache.openjpa.lib.graph.NodeInfo@19b219b2
> > > DEBUG (init): node = 3 info =
> > > org.apache.openjpa.lib.graph.NodeInfo@26782678
> > > DEBUG (init): node = 2 info =
> > > org.apache.openjpa.lib.graph.NodeInfo@27b627b6
> > > DEBUG (init): node = 1 info =
> > > org.apache.openjpa.lib.graph.NodeInfo@31283128
> > > DEBUG (after init): node = 5 info =
> > > org.apache.openjpa.lib.graph.NodeInfo@163a163a
> > > DEBUG (after init): node = 4 info =
> > > org.apache.openjpa.lib.graph.NodeInfo@19b219b2
> > > DEBUG (after init): node = 3 info =
> > > org.apache.openjpa.lib.graph.NodeInfo@26782678
> > > DEBUG (after init): node = 2 info =
> > > org.apache.openjpa.lib.graph.NodeInfo@27b627b6
> > > DEBUG (after init): node = 1 info =
> > > org.apache.openjpa.lib.graph.NodeInfo@31283128
> > > 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 < Markus.Fuchs@sun.com> 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 <Craig.Russell@sun.com> 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 <Craig.Russell@sun.com>
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:Craig.Russell@sun.com
> > >> >>> 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();
> >
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message