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