Issue Details (XML | Word | Printable)

Key: JDO-420
Type: Bug Bug
Status: Resolved Resolved
Resolution: Fixed
Priority: Major Major
Assignee: Andy Jefferson
Reporter: Michelle Caisse
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
JDO

JPOX fails new test CompletenessTestMap, configuration companyMapWithoutJoin

Created: 08/Sep/06 08:43 PM   Updated: 21/Sep/06 06:49 AM
Return to search
Component/s: tck2
Affects Version/s: JDO 2 maintenance release 1
Fix Version/s: JDO 2 maintenance release 1

Time Tracking:
Not Specified

File Attachments:
  Size
Text File Licensed for inclusion in ASF works project.properties.patch 2006-09-09 07:04 AM Andy Jefferson 0.7 kB

Resolution Date: 21/Sep/06 06:49 AM


 Description  « Hide
JPOX is looking for the department field in Person rather than Employee. To run the test, do
maven -Djdo.tck.cfglist=companyMapWithoutJoin.conf runtck.jdori

17:28:20,381 (main) INFO [org.apache.jdo.tck] - Exception during setUp or runtest:
javax.jdo.JDOUserException: One or more instances could not be made persistent
at org.jpox.AbstractPersistenceManager.makePersistentAll(AbstractPersistenceManager.java:1293)
at org.apache.jdo.tck.mapping.CompletenessTestMap.localSetUp(CompletenessTestMap.java:78)
at org.apache.jdo.tck.JDO_Test.setUp(JDO_Test.java:236)
at org.apache.jdo.tck.JDO_Test.runBare(JDO_Test.java:252)
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 junit.textui.TestRunner.doRun(TestRunner.java:116)
at org.apache.jdo.tck.util.BatchTestRunner.doRun(BatchTestRunner.java:107)
at org.apache.jdo.tck.util.BatchTestRunner.start(BatchTestRunner.java:147)
at org.apache.jdo.tck.util.BatchTestRunner.main(BatchTestRunner.java:122)
NestedThrowablesStackTrace:
javax.jdo.JDOUserException: Unable to find the field "department" in the class "org.apache.jdo.tck.pc.companyMapWithoutJoin.Person" with a relationship to the field "org.apache.jdo.tck.pc.companyMapWithoutJoin.Department.roles"
at org.jpox.store.rdbms.table.ClassTable.initializeSQLAddUniqueConstraintsStatements(ClassTable.java:1994)
at org.jpox.store.rdbms.table.ClassTable.runSpecifiedCallbacks(ClassTable.java:904)
at org.jpox.store.rdbms.table.ClassTable.runCallBacks(ClassTable.java:869)
at org.jpox.store.rdbms.table.ClassTable.addFieldMetaData(ClassTable.java:562)
at org.jpox.store.rdbms.table.ClassTable.manageClass(ClassTable.java:388)
at org.jpox.store.rdbms.RDBMSManager$ClassAdder.initializeClassTables(RDBMSManager.java:2869)
at org.jpox.store.rdbms.RDBMSManager$ClassAdder.addClassTablesAndValidate(RDBMSManager.java:3214)
at org.jpox.store.rdbms.RDBMSManager$ClassAdder.run(RDBMSManager.java:2457)
at org.jpox.store.rdbms.RDBMSManager$MgmtTransaction.execute(RDBMSManager.java:2309)
at org.jpox.store.rdbms.RDBMSManager.addClasses(RDBMSManager.java:725)
at org.jpox.store.rdbms.RDBMSManager.addClass(RDBMSManager.java:739)
at org.jpox.store.StoreManager.getDatastoreClass(StoreManager.java:1142)
at org.jpox.state.StateManagerImpl.populateStrategyFields(StateManagerImpl.java:764)
at org.jpox.state.StateManagerImpl.<init>(StateManagerImpl.java:565)
at org.jpox.state.StateManagerFactory.newStateManager(StateManagerFactory.java:105)
at org.jpox.AbstractPersistenceManager.internalMakePersistent(AbstractPersistenceManager.java:1185)
at org.jpox.AbstractPersistenceManager.makePersistent(AbstractPersistenceManager.java:1241)
at org.jpox.AbstractPersistenceManager.makePersistentAll(AbstractPersistenceManager.java:1283)
at org.apache.jdo.tck.mapping.CompletenessTestMap.localSetUp(CompletenessTestMap.java:78)
at org.apache.jdo.tck.JDO_Test.setUp(JDO_Test.java:236)
at org.apache.jdo.tck.JDO_Test.runBare(JDO_Test.java:252)
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 junit.textui.TestRunner.doRun(TestRunner.java:116)
at org.apache.jdo.tck.util.BatchTestRunner.doRun(BatchTestRunner.java:107)
at org.apache.jdo.tck.util.BatchTestRunner.start(BatchTestRunner.java:147)
at org.apache.jdo.tck.util.BatchTestRunner.main(BatchTestRunner.java:122

 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Andy Jefferson added a comment - 09/Sep/06 07:04 AM
Patch to fix broken enhancement due to typo

Andy Jefferson added a comment - 09/Sep/06 08:48 AM
The ORM file contains no <field> mappings for the "role" field of Employee (the key in the Map). Not the cause of the issue but if you expect implementations to match to your schema you need to include them.

Andy Jefferson added a comment - 09/Sep/06 09:44 AM
JPOX has had some changes in CVS to allow for value class using superclass-table when also having a (map) key field as part of the value.

Can't check this further since
a). the test is not run when calling "maven -o runtck.jdori"
b). the schema (DATASTOREIDENTITY9) is not installed when calling "maven -o clean installSchema"

Michelle Caisse added a comment - 14/Sep/06 09:10 PM
Thanks for the patch. I checked in some changes (revision: 443469).

- added companyMapWithoutJoin.conf to configurations.list so that this test runs with maven runtck.jdori and the schema installs with maven installSchema.
- Added missing entry for role to .orm and schema

Now I get:

    [java] NestedThrowablesStackTrace:
    [java] javax.jdo.JDODataStoreException: Insert request failed: INSERT INTO datastoreidentity9.PERSONS (BIRTHDATE,HIREDATE,MANAGER,FIRSTNAME,MIDDLENAME,DEPAR
NID,"ROLE",LASTNAME,FUNDINGDEPT,SALARY,DISCRIMINATOR) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
    [java] at org.jpox.store.rdbms.request.InsertRequest.execute(InsertRequest.java:406)
    [java] at org.jpox.store.rdbms.table.ClassTable.insert(ClassTable.java:2459)
...
    [java] NestedThrowablesStackTrace:
    [java] ERROR 23502: Column 'EMPID' cannot accept a NULL value.
    [java] at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
...
 
 

Michelle Caisse added a comment - 14/Sep/06 09:32 PM
I think this is my problem.

Michelle Caisse added a comment - 14/Sep/06 09:39 PM
Fixed schema with revision: 443485. Now:

    [java] 1) test(org.apache.jdo.tck.mapping.CompletenessTestMap)javax.jdo.JDOException: Unexpected error during precommit
    [java] at org.jpox.AbstractPersistenceManager.preCommit(AbstractPersistenceManager.java:3384)
    [java] at org.jpox.NonmanagedTransaction.commit(NonmanagedTransaction.java:492)
    [java] at org.apache.jdo.tck.mapping.CompletenessTestMap.localSetUp(CompletenessTestMap.java:84)
    [java] at org.apache.jdo.tck.JDO_Test.setUp(JDO_Test.java:236)
    [java] at org.apache.jdo.tck.JDO_Test.runBare(JDO_Test.java:252)
    [java] at org.apache.jdo.tck.util.BatchTestRunner.doRun(BatchTestRunner.java:107)
    [java] at org.apache.jdo.tck.util.BatchTestRunner.start(BatchTestRunner.java:147)
    [java] at org.apache.jdo.tck.util.BatchTestRunner.main(BatchTestRunner.java:122)
    [java] NestedThrowablesStackTrace:
    [java] java.lang.NullPointerException
    [java] at org.jpox.store.rdbms.scostore.MapValueSetStore.getIteratorStatement(MapValueSetStore.java:207)
    [java] at org.jpox.store.rdbms.scostore.AbstractSetStore.iterator(AbstractSetStore.java:101)
    [java] at org.jpox.sco.SCOUtils.populateMapDelegateWithStoreData(SCOUtils.java:806)
    [java] at org.jpox.sco.Map.loadFromStore(Map.java:891)
    [java] at org.jpox.sco.Map.entrySet(Map.java:595)
    [java] at org.jpox.sco.Map.runReachability(Map.java:325)
    [java] at org.jpox.state.StateManagerImpl.runReachability(StateManagerImpl.java:3453)
    [java] at org.jpox.sco.HashSet.runReachability(HashSet.java:296)
    [java] at org.jpox.state.StateManagerImpl.runReachability(StateManagerImpl.java:3453)
    [java] at org.jpox.AbstractPersistenceManager.preCommit(AbstractPersistenceManager.java:3303)
    [java] at org.jpox.NonmanagedTransaction.commit(NonmanagedTransaction.java:492)
    [java] at org.apache.jdo.tck.mapping.CompletenessTestMap.localSetUp(CompletenessTestMap.java:84)
    [java] at org.apache.jdo.tck.JDO_Test.setUp(JDO_Test.java:236)
    [java] at org.apache.jdo.tck.JDO_Test.runBare(JDO_Test.java:252)
    [java] at org.apache.jdo.tck.util.BatchTestRunner.doRun(BatchTestRunner.java:107)
    [java] at org.apache.jdo.tck.util.BatchTestRunner.start(BatchTestRunner.java:147)
    [java] at org.apache.jdo.tck.util.BatchTestRunner.main(BatchTestRunner.java:122)

Michelle Caisse added a comment - 19/Sep/06 10:34 PM
I added a similar test for Lists, which fails trying to insert a row into table COMPANY instead of COMPANIES.

To run a single test, do:

maven -Djdo.tck.cfglist=companyListWithoutJoin.conf installSchema
maven -Djdo.tck.cfglist=companyListWithoutJoin.conf runtck.jdori

Andy Jefferson added a comment - 20/Sep/06 06:33 AM
Map test passes with JPOX CVS.

Perhaps move your List issue to a different JIRA since it is unrelated to Maps.

Andy Jefferson added a comment - 20/Sep/06 06:43 AM
On the issue of a ListWithoutJoin please look at the file
src/orm/datastoreidentity/org/apache/jdo/tck/pc/companyListWithoutJoin/package-standard10.orm
and look at the package name specified. It is a cut-paste of companyMapWithoutJoin so JPOX doesnt use that ORM metadata for the classes required.

Andy Jefferson added a comment - 21/Sep/06 06:49 AM
Fixed in JPOX CVS