That clarification works for me... ;-)
On 2/12/07, Marc Prud'hommeaux <[EMAIL PROTECTED]> wrote:
>
> Kevin-
>
> It could, but it would just be a spec compliance. OpenJPA does
allow
> you to have final classes. The spec just prohibits it because
one of
> the ways to implement support for property access is to dynamically
> generate a subclass to the entity (which isn't possible if the
entity
> is final).
>
>
>
> On Feb 12, 2007, at 4:33 AM, Kevin Sutter wrote:
>
> > Marc (and others),
> > Shouldn't OpenJPA be detecting these final classes and issuing an
> > error
> > message?
> >
> > Kevin
> >
> > On 2/12/07, Marc Prud'hommeaux < [EMAIL PROTECTED]> wrote:
> >>
> >> Craig-
> >>
> >> You're right that the classes shouldn't be final, but I don't
think
> >> that's the cause of the problem.
> >>
> >> I've committed a fix to the final class issue, though. Thanks
for
> >> pointing it out.
> >>
> >>
> >>
> >> On Feb 10, 2007, at 10:07 PM, Craig L Russell wrote:
> >>
> >> > Hi Kevin,
> >> >
> >> > I don't know if it's relevant, but persistent classes must
not be
> >> > final. It seems that the entities in the model.company
packages are
>
> >> > (all) final, which is wrong. From spec 2.1, "The entity
class must
> >> > not be final. No methods or persistent instance variables
of the
> >> > entity class may be final. "
> >> >
> >> > The relevant part of the stack trace appears to be:
> >> >> Caused by: java.lang.NoSuchMethodException:
<unbound>=Class.create
> >> >> (Class);
> >> >> at java.beans.Statement.invoke(Statement.java:269)
> >> >> at <unknown class>.<unknown method>(Unknown Source)
> >> >> at com.sun.beans.ObjectHandler.eval
(ObjectHandler.java:148)
> >> >> at com.sun.beans.ObjectHandler.startElement
> >> >> (ObjectHandler.java:250)
> >> >> at
org.apache.xerces.parsers.AbstractSAXParser.startElement
> >> >> (Unknown
> >> >> Source)
> >> >> at
org.apache.xerces.impl.dtd.XMLDTDValidator.startElement
> >> >> (Unknown
> >> >
> >> > which sounds like an issue with the xerces parser. Don't
you hate
> >> > exceptions from parsers rather than error messages?
> >> >
> >> > Craig
> >> >
> >> > On Feb 10, 2007, at 8:08 PM, Kevin Sutter wrote:
> >> >
> >> >> Marc,
> >> >> It took a while to reproduce, but I finally got the
following...
> >> >> Does this
> >> >> help? Thanks for your help!
> >> >>
> >> >> Kevin
> >> >>
> >> >> Running
> >> >>
> >>
org.apache.openjpa.persistence.models.company.propertyaccess.TestProp
> >> >> ertyCompanyModel
> >> >> 0 test INFO [main] openjpa.Runtime - Starting OpenJPA
0.0.0
> >> >> 0 test INFO [main] openjpa.jdbc.JDBC - OpenJPA will now
> >> >> connect to the
> >> >> database to attempt to determine what type of database
dictionary
> >> >> to use.
> >> >> To prevent this connection in the future, set your
> >> >> openjpa.jdbc.DBDictionaryconfiguration property to the
appropriate
> >> >> value for your database (see the
> >> >> documentation foravailable values).
> >> >> 0 test INFO [main] openjpa.jdbc.JDBC - Using dictionary
> >> class "
> >> >> org.apache.openjpa.jdbc.sql.DerbyDictionary " (Apache Derby
> >> 10.2.2.0 -
> >> >> (485682) ,Apache Derby
> >> >> Embedded JDBC Driver 10.2.2.0 - (485682)).
> >> >> 10 test INFO [main] openjpa.MetaData - Found 10
classes with
> >> >> metadata in
> >> >> 0 milliseconds.
> >> >> 20 test INFO [main] openjpa.MetaData - Found 10
classes with
> >> >> metadata in
> >> >> 10 milliseconds.
> >> >> 20 test INFO [main] openjpa.MetaData - Parsing class "
> >> >>
> >>
org.apache.openjpa.persistence.models.company.propertyaccess.Product"
> >> >> .
> >> >> 20 test INFO [main] openjpa.MetaData - Parsing package "
> >> >>
> >>
org.apache.openjpa.persistence.models.company.propertyaccess.Product"
>
> >> >> .
> >> >> 30 test INFO [main] openjpa.MetaData - Parsing class "
> >> >>
> >>
org.apache.openjpa.persistence.models.company.propertyaccess.Company"
> >> >> .
> >> >> 30 test INFO [main] openjpa.MetaData - Parsing class "
> >> >>
> >>
org.apache.openjpa.persistence.models.company.propertyaccess.Address"
> >> >> .
> >> >> 40 test INFO [main] openjpa.MetaData - Parsing class "
> >> >>
> >>
org.apache.openjpa.persistence.models.company.propertyaccess.Employee
> >> >> ".
> >> >> 40 test INFO [main] openjpa.MetaData - Parsing class "
> >> >>
> >>
org.apache.openjpa.persistence.models.company.propertyaccess.Person".
> >> >> 50 test INFO [main] openjpa.MetaData - Parsing class "
> >> >>
> >>
org.apache.openjpa.persistence.models.company.propertyaccess.FullTime
> >> >> Employee
> >> >> ".
> >> >> 50 test INFO [main] openjpa.MetaData - Parsing class "
> >> >>
> >>
org.apache.openjpa.persistence.models.company.propertyaccess.LineItem
> >> >> ".
> >> >> 60 test INFO [main] openjpa.MetaData - Parsing class "
> >> >>
> >>
org.apache.openjpa.persistence.models.company.propertyaccess.ProductO
> >> >> rder".
> >> >> 60 test INFO [main] openjpa.MetaData - Parsing class "
> >> >>
> >>
org.apache.openjpa.persistence.models.company.propertyaccess.Customer
> >> >> ".
> >> >> 70 test INFO [main] openjpa.MetaData - Parsing class "
> >> >>
> >>
org.apache.openjpa.persistence.models.company.propertyaccess.PartTime
> >> >> Employee
> >> >> ".
> >> >> 70 test INFO [main] openjpa.jdbc.Schema - Reading table
> >> >> information for
> >> >> schema name "null", table name "PRP_Address".
> >> >> 80 test INFO [main] openjpa.jdbc.Schema - Reading table
> >> >> information for
> >> >> schema name "null", table name "PRP_Company".
> >> >> 80 test INFO [main] openjpa.jdbc.Schema - Reading table
> >> >> information for
> >> >> schema name "null", table name "PRP_LineItem".
> >> >> 80 test INFO [main] openjpa.jdbc.Schema - Reading table
> >> >> information for
> >> >> schema name "null", table name "PRP_Person".
> >> >> 80 test INFO [main] openjpa.jdbc.Schema - Reading table
> >> >> information for
> >> >> schema name "null", table name "PRP_Product".
> >> >> 110 test INFO [main] openjpa.jdbc.Schema - Reading table
> >> >> information for
> >> >> schema name "null", table name "PRP_ProductOrder".
> >> >> 120 test INFO [main] openjpa.jdbc.Schema - Reading table
> >> >> information for
> >> >> schema name "null", table name
"PRP_ProductOrder_PRP_LineItem".
> >> >> 120 test INFO [main] openjpa.jdbc.Schema - Reading table
> >> >> information for
> >> >> schema name "null", table name "PRP_Product_PRP_Company".
> >> >> 140 test INFO [main] openjpa.jdbc.Schema - Reading
sequence
> >> >> information
> >> >> for schema "null", sequence name "null".
> >> >> 3856 test INFO [main] openjpa.MetaData - Parsing class "
> >> >>
> >>
org.apache.openjpa.persistence.models.company.propertyaccess.Company"
> >> >> .
> >> >> 3856 test INFO [main] openjpa.MetaData - Parsing
package "
> >> >>
> >>
org.apache.openjpa.persistence.models.company.propertyaccess.Company"
> >> >> .
> >> >> 3866 test INFO [main] openjpa.MetaData - Parsing class "
> >> >>
> >>
org.apache.openjpa.persistence.models.company.propertyaccess.Address"
> >> >> .
> >> >> 3866 test INFO [main] openjpa.MetaData - Parsing class "
> >> >>
> >>
org.apache.openjpa.persistence.models.company.propertyaccess.Employee
> >> >> ".
> >> >> 3866 test INFO [main] openjpa.MetaData - Parsing class "
> >> >>
> >>
org.apache.openjpa.persistence.models.company.propertyaccess.Person".
>
> >> >> 3876 test INFO [main] openjpa.MetaData - Parsing class "
> >> >>
> >>
org.apache.openjpa.persistence.models.company.propertyaccess.Product"
> >> >> .
> >> >> 3876 test INFO [main] openjpa.MetaData - Parsing class "
> >> >>
> >>
org.apache.openjpa.persistence.models.company.propertyaccess.FullTime
> >> >> Employee
> >> >> ".
> >> >> 3936 test INFO [main] openjpa.MetaData - Parsing class "
> >> >>
> >>
org.apache.openjpa.persistence.models.company.propertyaccess.ProductO
> >> >> rder".
> >> >> 3966 test INFO [main] openjpa.MetaData - Parsing class "
> >> >>
> >>
org.apache.openjpa.persistence.models.company.propertyaccess.Customer
> >> >> ".
> >> >> 3976 test INFO [main] openjpa.MetaData - Parsing class "
> >> >>
> >>
org.apache.openjpa.persistence.models.company.propertyaccess.LineItem
> >> >> ".
> >> >> 4026 test INFO [main] openjpa.MetaData - Parsing class "
> >> >>
> >>
org.apache.openjpa.persistence.models.company.propertyaccess.PartTime
> >> >> Employee
> >> >> ".
> >> >> Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time
elapsed:
> >> >> 4.336 sec
> >> >> <<< FAILURE!
> >> >> testBasicQueries(
> >> >>
> >>
org.apache.openjpa.persistence.models.company.propertyaccess.TestProp
> >> >> ertyCompanyModel)
> >> >> Time elapsed: 4.326 sec <<< ERROR!
> >> >> java.lang.IllegalStateException:
java.lang.NoSuchMethodException:
> >> >> <unbound>=
> >> >> Class.create (Class);
> >> >> at
> >> >>
> >>
org.apache.openjpa.persistence.models.company.CompanyModelTest.checkM
> >> >> odel(
> >> >> CompanyModelTest.java:194)
> >> >> at
> >> >>
> >>
org.apache.openjpa.persistence.models.company.CompanyModelTest.setUp(
> >> >> CompanyModelTest.java:66)
> >> >> at junit.framework.TestCase.runBare (TestCase.java:
125)
> >> >> 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 junit.framework.TestSuite.runTest
(TestSuite.java:208)
> >> >> at junit.framework.TestSuite.run(TestSuite.java:203)
> >> >> 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.junit.JUnitTestSet.execute(
> >> >> JUnitTestSet.java:210)
> >> >> at
> >> >>
> >>
org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTes
> >> >> tSet(
> >> >> 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)
> >> >> Caused by: java.lang.NoSuchMethodException:
<unbound>=Class.create
> >> >> (Class);
> >> >> at java.beans.Statement.invoke(Statement.java:269)
> >> >> at <unknown class>.<unknown method>(Unknown Source)
> >> >> at com.sun.beans.ObjectHandler.eval
(ObjectHandler.java
> :148)
> >> >> at com.sun.beans.ObjectHandler.startElement
> >> >> (ObjectHandler.java:250)
> >> >> at
org.apache.xerces.parsers.AbstractSAXParser.startElement
> >> >> (Unknown
> >> >> Source)
> >> >> at
org.apache.xerces.impl.dtd.XMLDTDValidator.startElement
> >> >> (Unknown
> >> >> Source)
> >> >> at
> >> >>
> >>
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElemen
> >> >> t(Unknown
> >> >> Source)
> >> >> at
> >> >> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl
> >> >> $FragmentContentDispatcher.dispatch(Unknown
> >> >> Source)
> >> >> at
> >> >>
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument
> >> >> (Unknown
> >> >> Source)
> >> >> at org.apache.xerces.parsers.DTDConfiguration.parse
(Unknown
> >> >> Source)
> >> >> at org.apache.xerces.parsers.DTDConfiguration.parse
(Unknown
> >> >> Source)
> >> >> at org.apache.xerces.parsers.XMLParser.parse(Unknown
> >> Source)
> >> >> at org.apache.xerces.parsers.AbstractSAXParser.parse
> >> >> (Unknown Source)
> >> >> at org.apache.xerces.jaxp.SAXParserImpl.parse(Unknown
> >> Source)
> >> >> at javax.xml.parsers.SAXParser.parse(Unknown Source)
> >> >> at java.beans.XMLDecoder.readObject(XMLDecoder.java:
220)
> >> >> at
> >> >>
> >>
org.apache.openjpa.persistence.models.company.CompanyModelTest.checkM
> >> >> odel(
> >> >> CompanyModelTest.java:191)
> >> >> ... 22 more
> >> >>
> >> >>
> >> >> On 2/10/07, Marc Prud'hommeaux < [EMAIL PROTECTED]> wrote:
> >> >>>
> >> >>> Kevin-
> >> >>>
> >> >>> Weird. From the error message, it looks like there is some
> >> problem
> >> >>> with deserializing the default model from the
companies.xml file
> >> >>> from
> >> >>> the XMLDecoder.
> >> >>>
> >> >>> I've put some extra debugging logic in the
CompanyModelTest.java
> >> >>> that
> >> >>> should throw a better error when the deserialization fails.
> >> Can you
> >> >>> update and re-run the test and let us know if the stack
trace
> >> >>> changes?
> >> >>>
> >> >>>
> >> >>>
> >> >>> On Feb 10, 2007, at 6:21 PM, Kevin Sutter wrote:
> >> >>>
> >> >>> > Hi,
> >> >>> > After synching up with the latest changes in SVN, I am
> >> hitting an
> >> >>> > intermittent problem while running the new tests in
> >> >>> > openjpa-persistence-jdbc. Every once in a while, I am
getting
> >> >>> > hundreds of
> >> >>> > messsages like the following:
> >> >>> >
> >> >>> > Running
> >> >>> >
> >> >>>
> >>
org.apache.openjpa.persistence.models.company.propertyaccess.TestPro
> >> >>> pe
> >> >>> > rtyCompanyModel
> >> >>> > 0 test INFO [main] openjpa.Runtime - Starting
OpenJPA 0.0.0
> >> >>> > 0 test INFO [main] openjpa.jdbc.JDBC - OpenJPA will
now
> >> >>> connect
> >> >>> > to the
> >> >>> > database to attempt to determine what type of database
> >> dictionary
> >> >>> > to use.
> >> >>> > To prevent this connection in the future, set your
> >> >>> > openjpa.jdbc.DBDictionaryconfiguration property to the
> >> appropriate
> >> >>> > value for your database (see the
> >> >>> > documentation foravailable values).
> >> >>> > 10 test INFO [main] openjpa.jdbc.JDBC - Using
dictionary
> >> >>> class "
> >> >>> > org.apache.openjpa.jdbc.sql.DerbyDictionary" (Apache Derby
> >> >>> 10.2.2.0 -
> >> >>> > (485682) ,Apache Derby Embedded JDBC Driver 10.2.2.0 -
> >> (485682)).
> >> >>> > 20 test INFO [main] openjpa.MetaData - Found 10
classes
> >> with
> >> >>> > metadata in
> >> >>> > 0 milliseconds.
> >> >>> > :
> >> >>> > :
> >> >>> > 4046 test INFO [main] openjpa.MetaData - Parsing
class "
> >> >>> >
> >> >>>
> >>
org.apache.openjpa.persistence.models.company.propertyaccess.LineIte
> >> >>> m"
> >> >>> > .
> >> >>> > java.lang.NoSuchMethodException: <unbound>=Class.create
(Class);
> >> >>> > Continuing ...
> >> >>> > java.lang.NullPointerException: target should not be null
> >> >>> > Continuing ...
> >> >>> > java.lang.NoSuchMethodException: <unbound>=Class.create
(Class);
> >> >>> > Continuing ...
> >> >>> > java.lang.NullPointerException: target should not be null
> >> >>> > Continuing ...
> >> >>> > java.lang.NoSuchMethodException: <unbound>=Class.create
(Class);
> >> >>> > Continuing ...
> >> >>> > java.lang.NullPointerException: target should not be null
> >> >>> > Continuing ...
> >> >>> > java.lang.NoSuchMethodException: <unbound>=Class.create
(Class);
> >> >>> > Continuing ...
> >> >>> > java.lang.NullPointerException: target should not be null
> >> >>> > Continuing ...
> >> >>> > java.lang.NoSuchMethodException : <unbound>=Class.create
> (Class);
> >> >>> > Continuing ...
> >> >>> > :
> >> >>> > : <these type of messages continue -- several dozen
repeats>
> >> >>> > :
> >> >>> > Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time
elapsed:
> >> >>> > 4.346 sec
> >> >>> > <<< FAILURE!
> >> >>> > testBasicQueries(
> >> >>> >
> >> >>>
> >>
org.apache.openjpa.persistence.models.company.propertyaccess.TestPro
> >> >>> pe
> >> >>> > rtyCompanyModel)
> >> >>> > Time elapsed: 4.336 sec <<< FAILURE!
> >> >>> > junit.framework.AssertionFailedError: expected:<2> but
was:<0>
> >> >>> > at junit.framework.Assert.fail(Assert.java:47)
> >> >>> > at junit.framework.Assert.failNotEquals
(Assert.java:282)
> >> >>> > at junit.framework.Assert.assertEquals
(Assert.java:64)
> >> >>> > at junit.framework.Assert.assertEquals
(Assert.java:201)
> >> >>> > at junit.framework.Assert.assertEquals
(Assert.java:207)
> >> >>> > at
> >> >>> >
> >> >>>
> >>
org.apache.openjpa.persistence.models.company.CompanyModelTest.verif
> >> >>> yM
> >> >>> > odel(
> >> >>> > CompanyModelTest.java:211)
> >> >>> > at
> >> >>> >
> >> >>>
> >>
org.apache.openjpa.persistence.models.company.CompanyModelTest.check
> >> >>> Mo
> >> >>> > del(
> >> >>> > CompanyModelTest.java:195)
> >> >>> > at
> >> >>> >
> >> >>>
> >>
org.apache.openjpa.persistence.models.company.CompanyModelTest.setUp
> >> >>> (
> >> >>> > CompanyModelTest.java:66)
> >> >>> > at junit.framework.TestCase.runBare
(TestCase.java:125)
> >> >>> > 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 junit.framework.TestSuite.runTest
(TestSuite.java:208)
> >> >>> > at junit.framework.TestSuite.run(TestSuite.java:
203)
> >> >>> > 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.junit.JUnitTestSet.execute(
> >> >>> > JUnitTestSet.java :210)
> >> >>> > at
> >> >>> >
> >> >>>
> >>
org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTe
> >> >>> st
> >> >>> > Set(
> >> >>> > 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)
> >> >>> >
> >> >>> > They seem to most often happen when I do a complete top-
down
> >> build
> >> >>> > from the
> >> >>> > openjpa directory (mvn clean && mvn install) and let it
> >> >>> traverse the
> >> >>> > sub-projects. This is from the command line (not
Eclipse).
> >> >>> >
> >> >>> > I can immediately turn around and do a "mvn test" from the
> >> openjpa
> >> >>> > directory
> >> >>> > and everything tests out just fine.
> >> >>> >
> >> >>> > Any ideas on what is causing these type of errors? I
don't see
> >> >>> > anywhere in
> >> >>> > our code where we are producing these type of
messages. I'm
> >> not
> >> >>> > sure if
> >> >>> > it's related to one of our dependencies (serp?), or
maybe it's
> >> >>> > another IBM
> >> >>> > JDK anomaly (haven't been able to reproduce with Sun
yet, but
> >> >>> it is an
> >> >>> > intermittent problem).
> >> >>> >
> >> >>> > Thanks,
> >> >>> > Kevin
> >> >>>
> >> >>>
> >> >
> >> > 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!
> >> >
> >>
> >>
>
>