You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by mi...@apache.org on 2009/06/30 04:46:44 UTC

svn commit: r789539 [1/4] - in /openjpa/branches/1.3.x: openjpa-kernel/src/main/java/org/apache/openjpa/enhance/ openjpa-kernel/src/main/java/org/apache/openjpa/meta/ openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/ op...

Author: mikedd
Date: Tue Jun 30 02:46:42 2009
New Revision: 789539

URL: http://svn.apache.org/viewvc?rev=789539&view=rev
Log:
OPENJPA-1061 committing patch from Jody Grassel.
	modified:   openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCEnhancer.java
	modified:   openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/TestInheritanceWithMSCID.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/TestMappedSuperclass.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/EntityMapping.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/PrimitiveIDMappedSuperclass.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/chardiscriminator/PIdJTCDMSCEntityB.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/chardiscriminator/PIdJTCDMSCEntityD.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/chardiscriminator/PIdJTCDMSCLeafA.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/chardiscriminator/PIdJTCDMSCLeafB1.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/chardiscriminator/PIdJTCDMSCLeafB2.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/chardiscriminator/PIdJTCDMSCLeafC.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/chardiscriminator/PIdJTCDMSCLeafD1.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/chardiscriminator/PIdJTCDMSCLeafD2.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/chardiscriminator/PIdJTCDMSCMappedSuperclass.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/chardiscriminator/PIdJTCDMSCRootEntity.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/intdiscriminator/PIdJTIDMSCEntityB.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/intdiscriminator/PIdJTIDMSCEntityD.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/intdiscriminator/PIdJTIDMSCLeafA.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/intdiscriminator/PIdJTIDMSCLeafB1.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/intdiscriminator/PIdJTIDMSCLeafB2.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/intdiscriminator/PIdJTIDMSCLeafC.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/intdiscriminator/PIdJTIDMSCLeafD1.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/intdiscriminator/PIdJTIDMSCLeafD2.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/intdiscriminator/PIdJTIDMSCMappedSuperclass.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/intdiscriminator/PIdJTIDMSCRootEntity.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/stringdiscriminator/PIdJTSDMSCEntityB.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/stringdiscriminator/PIdJTSDMSCEntityD.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/stringdiscriminator/PIdJTSDMSCLeafA.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/stringdiscriminator/PIdJTSDMSCLeafB1.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/stringdiscriminator/PIdJTSDMSCLeafB2.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/stringdiscriminator/PIdJTSDMSCLeafC.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/stringdiscriminator/PIdJTSDMSCLeafD1.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/stringdiscriminator/PIdJTSDMSCLeafD2.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/stringdiscriminator/PIdJTSDMSCMappedSuperclass.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/stringdiscriminator/PIdJTSDMSCRootEntity.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/chardiscriminator/PIdSTCDMSCEntityB.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/chardiscriminator/PIdSTCDMSCEntityD.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/chardiscriminator/PIdSTCDMSCLeafA.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/chardiscriminator/PIdSTCDMSCLeafB1.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/chardiscriminator/PIdSTCDMSCLeafB2.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/chardiscriminator/PIdSTCDMSCLeafC.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/chardiscriminator/PIdSTCDMSCLeafD1.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/chardiscriminator/PIdSTCDMSCLeafD2.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/chardiscriminator/PIdSTCDMSCMappedSuperclass.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/chardiscriminator/PIdSTCDMSCRootEntity.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/intdiscriminator/PIdSTIDMSCEntityB.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/intdiscriminator/PIdSTIDMSCEntityD.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/intdiscriminator/PIdSTIDMSCLeafA.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/intdiscriminator/PIdSTIDMSCLeafB1.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/intdiscriminator/PIdSTIDMSCLeafB2.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/intdiscriminator/PIdSTIDMSCLeafC.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/intdiscriminator/PIdSTIDMSCLeafD1.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/intdiscriminator/PIdSTIDMSCLeafD2.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/intdiscriminator/PIdSTIDMSCMappedSuperclass.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/intdiscriminator/PIdSTIDMSCRootEntity.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/stringdiscriminator/PIdSTSDMSCEntityB.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/stringdiscriminator/PIdSTSDMSCEntityD.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/stringdiscriminator/PIdSTSDMSCLeafA.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/stringdiscriminator/PIdSTSDMSCLeafB1.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/stringdiscriminator/PIdSTSDMSCLeafB2.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/stringdiscriminator/PIdSTSDMSCLeafC.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/stringdiscriminator/PIdSTSDMSCLeafD1.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/stringdiscriminator/PIdSTSDMSCLeafD2.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/stringdiscriminator/PIdSTSDMSCMappedSuperclass.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/stringdiscriminator/PIdSTSDMSCRootEntity.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/testinterfaces/EntityB.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/testinterfaces/EntityD.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/testinterfaces/LeafA.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/testinterfaces/LeafB1.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/testinterfaces/LeafB2.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/testinterfaces/LeafC.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/testinterfaces/LeafD1.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/testinterfaces/LeafD2.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/testinterfaces/MSC.java
	new file:   openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/testinterfaces/RootEntity.java
	modified:   openjpa-persistence/src/main/java/org/apache/openjpa/persistence/AnnotationPersistenceMetaDataParser.java
	modified:   openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataParser.java


Conflicts:

Added:
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/TestInheritanceWithMSCID.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/TestMappedSuperclass.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/EntityMapping.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/PrimitiveIDMappedSuperclass.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/chardiscriminator/
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/chardiscriminator/PIdJTCDMSCEntityB.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/chardiscriminator/PIdJTCDMSCEntityD.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/chardiscriminator/PIdJTCDMSCLeafA.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/chardiscriminator/PIdJTCDMSCLeafB1.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/chardiscriminator/PIdJTCDMSCLeafB2.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/chardiscriminator/PIdJTCDMSCLeafC.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/chardiscriminator/PIdJTCDMSCLeafD1.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/chardiscriminator/PIdJTCDMSCLeafD2.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/chardiscriminator/PIdJTCDMSCMappedSuperclass.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/chardiscriminator/PIdJTCDMSCRootEntity.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/intdiscriminator/
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/intdiscriminator/PIdJTIDMSCEntityB.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/intdiscriminator/PIdJTIDMSCEntityD.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/intdiscriminator/PIdJTIDMSCLeafA.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/intdiscriminator/PIdJTIDMSCLeafB1.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/intdiscriminator/PIdJTIDMSCLeafB2.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/intdiscriminator/PIdJTIDMSCLeafC.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/intdiscriminator/PIdJTIDMSCLeafD1.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/intdiscriminator/PIdJTIDMSCLeafD2.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/intdiscriminator/PIdJTIDMSCMappedSuperclass.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/intdiscriminator/PIdJTIDMSCRootEntity.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/stringdiscriminator/
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/stringdiscriminator/PIdJTSDMSCEntityB.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/stringdiscriminator/PIdJTSDMSCEntityD.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/stringdiscriminator/PIdJTSDMSCLeafA.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/stringdiscriminator/PIdJTSDMSCLeafB1.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/stringdiscriminator/PIdJTSDMSCLeafB2.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/stringdiscriminator/PIdJTSDMSCLeafC.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/stringdiscriminator/PIdJTSDMSCLeafD1.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/stringdiscriminator/PIdJTSDMSCLeafD2.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/stringdiscriminator/PIdJTSDMSCMappedSuperclass.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/stringdiscriminator/PIdJTSDMSCRootEntity.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/chardiscriminator/
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/chardiscriminator/PIdSTCDMSCEntityB.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/chardiscriminator/PIdSTCDMSCEntityD.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/chardiscriminator/PIdSTCDMSCLeafA.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/chardiscriminator/PIdSTCDMSCLeafB1.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/chardiscriminator/PIdSTCDMSCLeafB2.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/chardiscriminator/PIdSTCDMSCLeafC.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/chardiscriminator/PIdSTCDMSCLeafD1.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/chardiscriminator/PIdSTCDMSCLeafD2.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/chardiscriminator/PIdSTCDMSCMappedSuperclass.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/chardiscriminator/PIdSTCDMSCRootEntity.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/intdiscriminator/
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/intdiscriminator/PIdSTIDMSCEntityB.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/intdiscriminator/PIdSTIDMSCEntityD.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/intdiscriminator/PIdSTIDMSCLeafA.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/intdiscriminator/PIdSTIDMSCLeafB1.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/intdiscriminator/PIdSTIDMSCLeafB2.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/intdiscriminator/PIdSTIDMSCLeafC.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/intdiscriminator/PIdSTIDMSCLeafD1.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/intdiscriminator/PIdSTIDMSCLeafD2.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/intdiscriminator/PIdSTIDMSCMappedSuperclass.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/intdiscriminator/PIdSTIDMSCRootEntity.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/stringdiscriminator/
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/stringdiscriminator/PIdSTSDMSCEntityB.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/stringdiscriminator/PIdSTSDMSCEntityD.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/stringdiscriminator/PIdSTSDMSCLeafA.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/stringdiscriminator/PIdSTSDMSCLeafB1.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/stringdiscriminator/PIdSTSDMSCLeafB2.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/stringdiscriminator/PIdSTSDMSCLeafC.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/stringdiscriminator/PIdSTSDMSCLeafD1.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/stringdiscriminator/PIdSTSDMSCLeafD2.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/stringdiscriminator/PIdSTSDMSCMappedSuperclass.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/singletable/stringdiscriminator/PIdSTSDMSCRootEntity.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/testinterfaces/
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/testinterfaces/EntityB.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/testinterfaces/EntityD.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/testinterfaces/LeafA.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/testinterfaces/LeafB1.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/testinterfaces/LeafB2.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/testinterfaces/LeafC.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/testinterfaces/LeafD1.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/testinterfaces/LeafD2.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/testinterfaces/MSC.java   (with props)
    openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/testinterfaces/RootEntity.java   (with props)
Modified:
    openjpa/branches/1.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCEnhancer.java
    openjpa/branches/1.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java
    openjpa/branches/1.3.x/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/AnnotationPersistenceMetaDataParser.java
    openjpa/branches/1.3.x/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataParser.java

Modified: openjpa/branches/1.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCEnhancer.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCEnhancer.java?rev=789539&r1=789538&r2=789539&view=diff
==============================================================================
--- openjpa/branches/1.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCEnhancer.java (original)
+++ openjpa/branches/1.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCEnhancer.java Tue Jun 30 02:46:42 2009
@@ -151,12 +151,12 @@
             try {
                 auxEnhancers.add(AccessController.doPrivileged(
                     J2DoPrivHelper.newInstanceAction(classes[i])));
-		    } catch (Throwable t) {
+            } catch (Throwable t) {
                 // aux enhancer may rely on non-existant spec classes, etc
-		    }
-		}
-    	_auxEnhancers = (AuxiliaryEnhancer[]) auxEnhancers.toArray
-            (new AuxiliaryEnhancer[auxEnhancers.size()]);
+            }
+        }
+        _auxEnhancers = (AuxiliaryEnhancer[]) auxEnhancers.toArray
+        (new AuxiliaryEnhancer[auxEnhancers.size()]);
     }
 
     private BCClass _pc;
@@ -1093,8 +1093,13 @@
             addCopyKeyFieldsToObjectIdMethod(false);
             addCopyKeyFieldsFromObjectIdMethod(true);
             addCopyKeyFieldsFromObjectIdMethod(false);
+            if (_meta.hasAbstractPKField() == true) {
+                addGetIDOwningClass();
+            }
             addNewObjectIdInstanceMethod(true);
             addNewObjectIdInstanceMethod(false);
+        } else if (_meta.hasPKFieldsFromAbstractClass()) {
+            addGetIDOwningClass();
         }
     }
 
@@ -2486,22 +2491,27 @@
             // new ObjectId (cls, oid)
             code.anew().setType(ObjectId.class);
             code.dup();
-            if(_meta.isEmbeddedOnly()) {
+            if(_meta.isEmbeddedOnly() || _meta.hasAbstractPKField()) {
                 code.aload().setThis();
-                code.invokevirtual().setMethod(Object.class, "getClass", Class.class, null);
-            }else
+                 code.invokevirtual().setMethod(
+                        PRE + "GetIDOwningClass", Class.class, null);
+            } else {
                 code.classconstant().setClass(getType(_meta));
+            }
         }
 
         // new <oid class> ();
         code.anew().setType(oidType);
         code.dup();
-        if (_meta.isOpenJPAIdentity() || (obj && usesClsString == Boolean.TRUE)) {
-            if(_meta.isEmbeddedOnly()) {
+        if (_meta.isOpenJPAIdentity() || (obj && usesClsString == Boolean.TRUE))
+        {
+            if (_meta.isEmbeddedOnly() || _meta.hasAbstractPKField()) {
                 code.aload().setThis();
-                code.invokevirtual().setMethod(Object.class, "getClass", Class.class, null);
-            }else
+                code.invokevirtual().setMethod(
+                    PRE + "GetIDOwningClass", Class.class, null);
+            } else  {
                 code.classconstant().setClass(getType(_meta));
+            }
         }
         if (obj) {
             code.aload().setParam(0);
@@ -2535,6 +2545,18 @@
         code.calculateMaxLocals();
     }
 
+    private void addGetIDOwningClass() throws NoSuchMethodException {
+        BCMethod method = _pc.declareMethod(PRE + "GetIDOwningClass",
+            Class.class, null);
+        Code code = method.getCode(true);
+
+        code.classconstant().setClass(getType(_meta));
+        code.areturn();
+
+        code.calculateMaxStack();
+        code.calculateMaxLocals();
+    }
+
     /**
      * When communicating with the StateManager, many methods are used
      * depending on the class of state being passed. This method,

Modified: openjpa/branches/1.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java?rev=789539&r1=789538&r2=789539&view=diff
==============================================================================
--- openjpa/branches/1.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java (original)
+++ openjpa/branches/1.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java Tue Jun 30 02:46:42 2009
@@ -195,6 +195,9 @@
     private FetchGroup[] _fgs = null;
     private FetchGroup[] _customFGs = null;
     private boolean _intercepting = false;
+    private boolean _abstract = false;
+    private Boolean _hasAbstractPKField = null;
+    private Boolean _hasPKFieldsFromAbstractClass = null;
 
     /**
      * Constructor. Supply described type and repository.
@@ -2468,4 +2471,98 @@
         }
         return rval;
     }
+
+    /**
+     * Returns true if the pcType modeled by this ClassMetaData
+     * object is abstract (ie, a MappedSuperclass in JPA terms.)
+     *
+     * @return
+     */
+    public boolean isAbstract() {
+        return _abstract;
+    }
+
+    /**
+     * Sets the value determining if the pcType modeled by this
+     * ClassMetaData object is abstract (ie, a MappedSuperclass in JPA terms.)
+     *
+     * @return
+     */
+    public void setAbstract(boolean flag) {
+        _abstract = flag;
+        _hasAbstractPKField = null;
+    }
+
+    /**
+     * Convenience method to determine if the pcType modeled by
+     * this ClassMetaData object is both abstract and declares PKFields. This
+     * method is used by the PCEnhancer to determine if special handling is
+     * required.
+     *
+     * @return
+     */
+    public boolean hasAbstractPKField() {
+        if (_hasAbstractPKField != null) {
+            return _hasAbstractPKField.booleanValue();
+        }
+
+        // Default to false, set to true only if this type is abstract and
+        // declares a PKField.
+        _hasAbstractPKField = Boolean.FALSE;
+
+        if (isAbstract() == true) {
+            FieldMetaData[] declaredFields = getDeclaredFields();
+            if (declaredFields != null && declaredFields.length != 0) {
+                for (FieldMetaData fmd : declaredFields) {
+                    if (fmd.isPrimaryKey()) {
+                        _hasAbstractPKField = Boolean.TRUE;
+                        break;
+                    }
+                }
+            }
+        }
+
+        return _hasAbstractPKField.booleanValue();
+    }
+
+    /**
+     * Convenience method to determine if this type is a direct
+     * decendent of an abstract type declaring PKFields. Returns true if there
+     * are no pcTypes mapped to a table between this type and an abstract pcType
+     * declaring PKFields. Returns false if there no such abstract pcTypes in
+     * the inheritance hierarchy or if there are any pcTypes mapped to tables in
+     * between the type represented by this ClassMetaData object and the
+     * abstract pcType declaring PKFields.
+     *
+     * @return
+     */
+    public boolean hasPKFieldsFromAbstractClass() {
+        if (_hasPKFieldsFromAbstractClass != null) {
+            return _hasPKFieldsFromAbstractClass.booleanValue();
+        }
+
+        // Default to FALSE, until proven true.
+        _hasPKFieldsFromAbstractClass = Boolean.FALSE;
+
+        FieldMetaData[] pkFields = getPrimaryKeyFields();
+        for (FieldMetaData fmd : pkFields) {
+            ClassMetaData fmdDMDA = fmd.getDeclaringMetaData();
+            if (fmdDMDA.isAbstract()) {
+                ClassMetaData cmd = getPCSuperclassMetaData();
+                while (cmd != fmdDMDA) {
+                    if (fmdDMDA.isAbstract()) {
+                        cmd = cmd.getPCSuperclassMetaData();
+                    } else {
+                        break;
+                    }
+                }
+                if (cmd == fmdDMDA) {
+                    _hasPKFieldsFromAbstractClass = Boolean.TRUE;
+                    break;
+                }
+            }
+        }
+
+        return _hasPKFieldsFromAbstractClass.booleanValue();
+    }
 }

Added: openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/TestInheritanceWithMSCID.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/TestInheritanceWithMSCID.java?rev=789539&view=auto
==============================================================================
--- openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/TestInheritanceWithMSCID.java (added)
+++ openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/TestInheritanceWithMSCID.java Tue Jun 30 02:46:42 2009
@@ -0,0 +1,283 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.openjpa.persistence.inheritance;
+
+import java.util.List;
+
+import javax.persistence.EntityManager;
+
+import org.apache.openjpa.persistence.inheritance.entities.EntityMapping;
+import org.apache.openjpa.persistence.inheritance.entities.EntityMapping.
+    InheritanceEntityMapping;
+import org.apache.openjpa.persistence.inheritance.entities.testinterfaces.
+    RootEntity;
+import org.apache.openjpa.persistence.test.SingleEMFTestCase;
+
+public class TestInheritanceWithMSCID extends SingleEMFTestCase {
+    @SuppressWarnings("unchecked")
+    public void setUp() {
+        /*
+         * All entities used by this test are defined in the enumeration
+         * EntityMapping.InheritanceEntityMapping.
+         */
+        EntityMapping.InheritanceEntityMapping[] entityClassEnums = 
+            EntityMapping.InheritanceEntityMapping.values();
+        
+        Class[] entityClassTypes = new Class[entityClassEnums.length];
+        int idx = 0;
+        for (EntityMapping.InheritanceEntityMapping eEnum : entityClassEnums) {
+            entityClassTypes[idx] = eEnum.getEntityClass();
+            idx++;
+        }
+        
+        setUp((Object[]) entityClassTypes);
+    }
+
+    private InheritanceEntityMapping[][] allEntityGroups = { 
+            EntityMapping.PIdJTIDMSC, 
+            EntityMapping.PIdJTCDMSC,
+            EntityMapping.PIdJTSDMSC,
+            
+            EntityMapping.PIdSTIDMSC, 
+            EntityMapping.PIdSTCDMSC,
+            EntityMapping.PIdSTSDMSC
+    };
+    
+    /**
+     * Verifies that each entity type in the inheritance structure can be
+     * persisted.  Entities are not cleared out of the persistence context
+     * (the L1 cache) when they are created.
+     */
+    @SuppressWarnings("unchecked")
+    public void testPersistableWithEntitiesInL1Cache() {
+        EntityManager em = emf.createEntityManager();
+        
+        for (InheritanceEntityMapping[] tEntities : allEntityGroups ) {
+            int idx = 0;
+            
+            try {
+                for (InheritanceEntityMapping tEntity : tEntities) {
+                    RootEntity entity = (RootEntity) 
+                        EntityMapping.createEntityObjectInstance(tEntity);
+                    entity.updateId(new Integer(idx++));
+                    entity.setRootEntityData("Root " + (idx - 1));
+                    
+                    em.getTransaction().begin();
+                    em.persist(entity);
+                    em.getTransaction().commit();
+                }
+            } catch (Exception e) {
+                fail("Test failed with Exception\n" + e);
+            }
+            
+            List<RootEntity> resultList = (List<RootEntity>) em.createQuery(
+                    "SELECT e FROM " + tEntities[0].getEntityName() + 
+                    " e ORDER BY e.id").getResultList();
+            assertEquals(tEntities.length, resultList.size());
+      
+            idx = 0;
+            for (Object obj : resultList) {
+                RootEntity entity = (RootEntity) obj;
+                Class<? extends RootEntity> actualType = entity.getClass();
+                Class<? extends RootEntity> expectedType = 
+                    tEntities[idx].getEntityClass();
+                
+                assertEquals(
+                        "Assert Entity " + (idx + 1) + "is entity of type " + 
+                        expectedType, expectedType, actualType);
+                
+                idx++;
+            }
+        }
+        
+        em.close();
+    }
+    
+    /**
+     * Verifies that each entity type in the inheritance structure can be
+     * persisted.  Entities are cleared out of the persistence context
+     * (the L1 cache) after they are created.
+     */
+    @SuppressWarnings("unchecked")
+    public void testPersistableWithEntitiesClearedFromL1Cache() {
+        EntityManager em = emf.createEntityManager();       
+        
+        for (InheritanceEntityMapping[] tEntities : allEntityGroups ) {
+            int idx = 0;
+            
+            try {
+                for (InheritanceEntityMapping tEntity : tEntities) {
+                    RootEntity entity = (RootEntity) 
+                        EntityMapping.createEntityObjectInstance(tEntity);
+                    entity.updateId(new Integer(idx++));
+                    entity.setRootEntityData("Root " + (idx - 1));
+                    
+                    em.getTransaction().begin();
+                    em.persist(entity);
+                    em.getTransaction().commit();
+                    em.clear();
+                }
+            } catch (Exception e) {
+                fail("Test failed with Exception\n" + e);
+            }
+            
+            List<RootEntity>  resultList = (List<RootEntity>) em.createQuery(
+                    "SELECT e FROM " + tEntities[0].getEntityName() + 
+                    " e ORDER BY e.id").getResultList();
+            assertEquals(tEntities.length, resultList.size());
+      
+            idx = 0;
+            for (Object obj : resultList) {
+                RootEntity entity = (RootEntity) obj;
+                Class<? extends RootEntity> actualType = entity.getClass();
+                Class<? extends RootEntity> expectedType = 
+                    tEntities[idx].getEntityClass();
+                
+                assertEquals(
+                        "Assert Entity " + (idx + 1) + "is entity of type " + 
+                        expectedType, expectedType, actualType);
+                
+                idx++;
+            }
+        }
+        
+        em.close();
+    }
+    
+
+    
+    /*
+     * The following tests exercise the following scenario:
+     * 
+     * Verify that all-inclusive SELECT against an entity that is a member
+     * of an inheritance hierarchy will include all of its subclasses within
+     * the query results as well.
+     * 
+     * Variations of this test include clearing the L1 cache after db 
+     * population and between each Query check, and not clearing the L1 
+     * cache.
+     * 
+     */
+    
+    private boolean[][] queryLogic001AcceptenceMapping = new boolean[][] {
+            // RootEntity
+            new boolean[] { true, true, true, true, true, true, true, true,
+                    true },
+            // Leaf A
+            new boolean[] { false, true, false, false, false, false, false,
+                    false, false },
+            // EntityB
+            new boolean[] { false, false, true, true, true, false, false,
+                    false, false },
+            // Leaf B1
+            new boolean[] { false, false, false, true, false, false, false,
+                    false, false },
+            // Leaf B2
+            new boolean[] { false, false, false, false, true, false, false,
+                    false, false },
+            // Leaf C
+            new boolean[] { false, false, false, false, false, true, false,
+                    false, false },
+            // Entity D
+            new boolean[] { false, false, false, false, false, false, true,
+                    true, true },
+            // Leaf D1
+            new boolean[] { false, false, false, false, false, false, false,
+                    true, false },
+            // Leaf D2
+            new boolean[] { false, false, false, false, false, false, false,
+                    false, true } };
+
+    @SuppressWarnings("unchecked")
+    private void query001TestLogic(boolean clearL1Cache) {
+        EntityManager em = emf.createEntityManager();         
+            
+        boolean[][] acceptenceMapping = queryLogic001AcceptenceMapping;
+        
+        for (InheritanceEntityMapping[] tEntities : allEntityGroups ) {
+            // Populate Database
+            int idx = 0;
+            try {
+                for (InheritanceEntityMapping tEntity : tEntities) {
+                    RootEntity entity = (RootEntity) 
+                        EntityMapping.createEntityObjectInstance(tEntity);
+                    entity.updateId(new Integer(idx++));
+                    entity.setRootEntityData("Root " + (idx - 1));
+                    
+                    em.getTransaction().begin();
+                    em.persist(entity);
+                    em.getTransaction().commit();
+                    
+                    if (clearL1Cache)
+                        em.clear();
+                }
+            } catch (Exception e) {
+                fail("Test failed with Exception\n" + e);
+            }
+            
+            // Run through acceptance tests
+            idx = 0;
+            for (boolean[] acceptenceMap : acceptenceMapping) {
+                int expectedQueryResultListSize = 0;
+                for (boolean acceptence : acceptenceMap) {
+                    if (acceptence)
+                        expectedQueryResultListSize++;
+                }
+                String queryStr = "SELECT e FROM " + 
+                    tEntities[idx].getEntityName() + " e";
+                List<RootEntity> resultList = (List<RootEntity>)
+                    em.createQuery(queryStr).getResultList();
+
+                assertEquals(
+                        "Assert the following query creates a result list " +
+                        "with " + expectedQueryResultListSize + " entities: " +
+                        "\"" + queryStr + "\".  ",
+                        expectedQueryResultListSize, 
+                        resultList.size());
+                idx++;
+                
+                if (clearL1Cache)
+                    em.clear();
+            }        
+        }
+
+        em.close();
+    }
+    
+    /**
+     * Verify that all-inclusive SELECT against an entity that is a member of an
+     * inheritance hierarchy will include all of its subclasses within the query
+     * results as well.  Test will not clear the L1 cache after populating DB
+     * and will not clear the L1 cache in between Query executions.
+     */
+    public void testQuery001WithL1() {
+        query001TestLogic(false);
+    }
+    
+    /**
+     * Verify that all-inclusive SELECT against an entity that is a member of an
+     * inheritance hierarchy will include all of its subclasses within the query
+     * results as well.  Test will clear the L1 cache after populating DB
+     * and will  clear the L1 cache in between Query executions.
+     */
+    public void testQuery001NoL1() {
+        query001TestLogic(true);
+    }
+}

Propchange: openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/TestInheritanceWithMSCID.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/TestMappedSuperclass.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/TestMappedSuperclass.java?rev=789539&view=auto
==============================================================================
--- openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/TestMappedSuperclass.java (added)
+++ openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/TestMappedSuperclass.java Tue Jun 30 02:46:42 2009
@@ -0,0 +1,108 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+package org.apache.openjpa.persistence.inheritance;
+
+import javax.persistence.EntityManager;
+
+import org.apache.openjpa.persistence.inheritance.entity.BaseClass;
+import org.apache.openjpa.persistence.inheritance.entity.MappedSuper;
+import org.apache.openjpa.persistence.inheritance.entity.SubclassC;
+import org.apache.openjpa.persistence.inheritance.entity.SubclassD;
+import org.apache.openjpa.persistence.test.SingleEMFTestCase;
+
+/**
+ * This test verifies basic Mapped Superclass functionality as dictated by
+ * the JPA Specification contract. 
+ * 
+ * OpenJPA JIRA: {@link http://issues.apache.org/jira/browse/OPENJPA-1061}
+ *
+ */
+public class TestMappedSuperclass extends SingleEMFTestCase {
+    public void setUp() {
+        setUp(BaseClass.class, SubclassC.class, MappedSuper.class,
+                SubclassD.class);
+    }
+
+    private Class[] classArray(Class... classes) {
+        return classes;
+    }
+
+    /**
+     * Verify that two entity classes, extending a Mapped Superclass that
+     * defines an ID field, are not members of a common inheritance
+     * hierarchy.  This test variant inserts new entities into the persistence
+     * context by calling EntityManager.persist() on the new entity object.
+     */
+    public void testMappedSuperclassContract001() {
+        EntityManager em = emf.createEntityManager();
+
+        // Create two entities, SubclassC and SubclassD, with the same
+        // primary key value     
+        SubclassC sc = new SubclassC();
+        sc.setId(42);
+        sc.setName("SubclassCMappedSuperName");
+        sc.setClassCName("SubclassCName");
+
+        em.getTransaction().begin();
+        em.persist(sc);
+        em.getTransaction().commit();
+
+        SubclassD sd = new SubclassD();
+        sd.setId(42);
+        sd.setName("SubclassDMappedSuperName");
+        sd.setClassDName("SubclassDName");
+
+        // No EntityExistsException should be thrown by the persist
+        em.getTransaction().begin();
+        em.persist(sd);
+        em.getTransaction().commit();
+    }
+
+    /**
+     * Verify that two entity classes, extending a Mapped Superclass that
+     * defines an ID field, are not members of a common inheritance
+     * hierarchy.  This test variant inserts new entities into the persistence
+     * context by calling EntityManager.merge() on the new entity object.
+     */
+    public void testMappedSuperclassContract002() {
+        EntityManager em = emf.createEntityManager();
+
+        // Create two entities, SubclassC and SubclassD, with the same
+        // primary key value
+
+        SubclassC sc = new SubclassC();
+        sc.setId(43);
+        sc.setName("SubclassCMappedSuperName");
+        sc.setClassCName("SubclassCName");
+
+        em.getTransaction().begin();
+        em.merge(sc);
+        em.getTransaction().commit();
+
+        SubclassD sd = new SubclassD();
+        sd.setId(43);
+        sd.setName("SubclassDMappedSuperName");
+        sd.setClassDName("SubclassDName");
+
+        // No EntityExistsException should be thrown by the merge
+        em.getTransaction().begin();
+        em.merge(sd);
+        em.getTransaction().commit();
+    }
+}

Propchange: openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/TestMappedSuperclass.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/EntityMapping.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/EntityMapping.java?rev=789539&view=auto
==============================================================================
--- openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/EntityMapping.java (added)
+++ openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/EntityMapping.java Tue Jun 30 02:46:42 2009
@@ -0,0 +1,559 @@
+package org.apache.openjpa.persistence.inheritance.entities;
+
+import java.lang.reflect.Constructor;
+
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    PrimitiveIDMappedSuperclass;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.jointable.chardiscriminator.PIdJTCDMSCEntityB;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.jointable.chardiscriminator.PIdJTCDMSCEntityD;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.jointable.chardiscriminator.PIdJTCDMSCLeafA;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.jointable.chardiscriminator.PIdJTCDMSCLeafB1;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.jointable.chardiscriminator.PIdJTCDMSCLeafB2;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.jointable.chardiscriminator.PIdJTCDMSCLeafC;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.jointable.chardiscriminator.PIdJTCDMSCLeafD1;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.jointable.chardiscriminator.PIdJTCDMSCLeafD2;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.jointable.chardiscriminator.PIdJTCDMSCMappedSuperclass;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.jointable.chardiscriminator.PIdJTCDMSCRootEntity;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.jointable.intdiscriminator.PIdJTIDMSCEntityB;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.jointable.intdiscriminator.PIdJTIDMSCEntityD;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.jointable.intdiscriminator.PIdJTIDMSCLeafA;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.jointable.intdiscriminator.PIdJTIDMSCLeafB1;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.jointable.intdiscriminator.PIdJTIDMSCLeafB2;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.jointable.intdiscriminator.PIdJTIDMSCLeafC;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.jointable.intdiscriminator.PIdJTIDMSCLeafD1;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.jointable.intdiscriminator.PIdJTIDMSCLeafD2;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.jointable.intdiscriminator.PIdJTIDMSCMappedSuperclass;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.jointable.intdiscriminator.PIdJTIDMSCRootEntity;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.jointable.stringdiscriminator.PIdJTSDMSCEntityB;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.jointable.stringdiscriminator.PIdJTSDMSCEntityD;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.jointable.stringdiscriminator.PIdJTSDMSCLeafA;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.jointable.stringdiscriminator.PIdJTSDMSCLeafB1;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.jointable.stringdiscriminator.PIdJTSDMSCLeafB2;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.jointable.stringdiscriminator.PIdJTSDMSCLeafC;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.jointable.stringdiscriminator.PIdJTSDMSCLeafD1;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.jointable.stringdiscriminator.PIdJTSDMSCLeafD2;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.jointable.stringdiscriminator.PIdJTSDMSCMappedSuperclass;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.jointable.stringdiscriminator.PIdJTSDMSCRootEntity;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.singletable.chardiscriminator.PIdSTCDMSCEntityB;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.singletable.chardiscriminator.PIdSTCDMSCEntityD;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.singletable.chardiscriminator.PIdSTCDMSCLeafA;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.singletable.chardiscriminator.PIdSTCDMSCLeafB1;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.singletable.chardiscriminator.PIdSTCDMSCLeafB2;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.singletable.chardiscriminator.PIdSTCDMSCLeafC;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.singletable.chardiscriminator.PIdSTCDMSCLeafD1;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.singletable.chardiscriminator.PIdSTCDMSCLeafD2;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.singletable.chardiscriminator.PIdSTCDMSCMappedSuperclass;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.singletable.chardiscriminator.PIdSTCDMSCRootEntity;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.singletable.intdiscriminator.PIdSTIDMSCEntityB;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.singletable.intdiscriminator.PIdSTIDMSCEntityD;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.singletable.intdiscriminator.PIdSTIDMSCLeafA;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.singletable.intdiscriminator.PIdSTIDMSCLeafB1;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.singletable.intdiscriminator.PIdSTIDMSCLeafB2;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.singletable.intdiscriminator.PIdSTIDMSCLeafC;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.singletable.intdiscriminator.PIdSTIDMSCLeafD1;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.singletable.intdiscriminator.PIdSTIDMSCLeafD2;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.singletable.intdiscriminator.PIdSTIDMSCMappedSuperclass;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.singletable.intdiscriminator.PIdSTIDMSCRootEntity;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.singletable.stringdiscriminator.PIdSTSDMSCEntityB;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.singletable.stringdiscriminator.PIdSTSDMSCEntityD;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.singletable.stringdiscriminator.PIdSTSDMSCLeafA;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.singletable.stringdiscriminator.PIdSTSDMSCLeafB1;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.singletable.stringdiscriminator.PIdSTSDMSCLeafB2;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.singletable.stringdiscriminator.PIdSTSDMSCLeafC;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.singletable.stringdiscriminator.PIdSTSDMSCLeafD1;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.singletable.stringdiscriminator.PIdSTSDMSCLeafD2;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.singletable.stringdiscriminator.PIdSTSDMSCMappedSuperclass;
+import org.apache.openjpa.persistence.inheritance.entities.idmsc.
+    primitiveidentity.singletable.stringdiscriminator.PIdSTSDMSCRootEntity;
+
+public class EntityMapping {
+    @SuppressWarnings("unchecked")
+    public static enum InheritanceEntityMapping {
+        /*
+         * Primitive Identity defined on a Mapped Superclass, 
+         * Joined Table Entity Inheritance
+         */
+        
+        // Primitive Identity defined on a Mapped Superclass, 
+        // Joined Table Entity Inheritance, Integer Discriminator
+        PIdJTIDMSCRootEntity {         
+            public Class getEntityClass() {
+                return PIdJTIDMSCRootEntity.class;
+            }
+        },
+        PIdJTIDMSCLeafA {
+            public Class getEntityClass() {
+                return PIdJTIDMSCLeafA.class;
+            }
+        },
+        PIdJTIDMSCEntityB {
+            public Class getEntityClass() {
+                return PIdJTIDMSCEntityB.class;
+            }
+        },
+        PIdJTIDMSCLeafB1 {
+            public Class getEntityClass() {
+                return PIdJTIDMSCLeafB1.class;
+            }
+        },
+        PIdJTIDMSCLeafB2 {
+            public Class getEntityClass() {
+                return PIdJTIDMSCLeafB2.class;
+            }
+        },
+        PIdJTIDMSCLeafC {
+            public Class getEntityClass() {
+                return PIdJTIDMSCLeafC.class;
+            }
+        },
+        PIdJTIDMSCEntityD {
+            public Class getEntityClass() {
+                return PIdJTIDMSCEntityD.class;
+            }
+        },
+        PIdJTIDMSCLeafD1 {
+            public Class getEntityClass() {
+                return PIdJTIDMSCLeafD1.class;
+            }
+        },
+        PIdJTIDMSCLeafD2 {
+            public Class getEntityClass() {
+                return PIdJTIDMSCLeafD2.class;
+            }
+        },
+        
+        // Primitive Identity defined on a Mapped Superclass, 
+        // Joined Table Entity Inheritance, Char Discriminator
+        PIdJTCDMSCRootEntity {
+            public Class getEntityClass() {
+                return PIdJTCDMSCRootEntity.class;
+            }
+        },
+        PIdJTCDMSCLeafA {
+            public Class getEntityClass() {
+                return PIdJTCDMSCLeafA.class;
+            }
+        },
+        PIdJTCDMSCEntityB {
+            public Class getEntityClass() {
+                return PIdJTCDMSCEntityB.class;
+            }
+        },
+        PIdJTCDMSCLeafB1 {
+            public Class getEntityClass() {
+                return PIdJTCDMSCLeafB1.class;
+            }
+        },
+        PIdJTCDMSCLeafB2 {
+            public Class getEntityClass() {
+                return PIdJTCDMSCLeafB2.class;
+            }
+        },
+        PIdJTCDMSCLeafC {
+            public Class getEntityClass() {
+                return PIdJTCDMSCLeafC.class;
+            }
+        },
+        PIdJTCDMSCEntityD {
+            public Class getEntityClass() {
+                return PIdJTCDMSCEntityD.class;
+            }
+        },
+        PIdJTCDMSCLeafD1 {
+            public Class getEntityClass() {
+                return PIdJTCDMSCLeafD1.class;
+            }
+        },
+        PIdJTCDMSCLeafD2 {
+            public Class getEntityClass() {
+                return PIdJTCDMSCLeafD2.class;
+            }
+        },
+        
+        // Primitive Identity defined on a Mapped Superclass, 
+        // Joined Table Entity Inheritance, String Discriminator
+        PIdJTSDMSCRootEntity {
+            public Class getEntityClass() {
+                return PIdJTSDMSCRootEntity.class;
+            }
+        },
+        PIdJTSDMSCLeafA {
+            public Class getEntityClass() {
+                return PIdJTSDMSCLeafA.class;
+            }
+        },
+        PIdJTSDMSCEntityB {
+            public Class getEntityClass() {
+                return PIdJTSDMSCEntityB.class;
+            }
+        },
+        PIdJTSDMSCLeafB1 {
+            public Class getEntityClass() {
+                return PIdJTSDMSCLeafB1.class;
+            }
+        },
+        PIdJTSDMSCLeafB2 {
+            public Class getEntityClass() {
+                return PIdJTSDMSCLeafB2.class;
+            }
+        },
+        PIdJTSDMSCLeafC {
+            public Class getEntityClass() {
+                return PIdJTSDMSCLeafC.class;
+            }
+        },
+        PIdJTSDMSCEntityD {
+            public Class getEntityClass() {
+                return PIdJTSDMSCEntityD.class;
+            }
+        },
+        PIdJTSDMSCLeafD1 {
+            public Class getEntityClass() {
+                return PIdJTSDMSCLeafD1.class;
+            }
+        },
+        PIdJTSDMSCLeafD2 {
+            public Class getEntityClass() {
+                return PIdJTSDMSCLeafD2.class;
+            }
+        },
+        
+        /*
+         * Primitive Identity defined on a Mapped Superclass, 
+         * Single Table Entity Inheritance
+         */
+        
+        // Primitive Identity defined on a Mapped Superclass, 
+        // Single Table Entity Inheritance, Integer Discriminator
+        PIdSTIDMSCRootEntity {
+            public Class getEntityClass() {
+                return PIdSTIDMSCRootEntity.class;
+            }
+        },
+        PIdSTIDMSCLeafA {
+            public Class getEntityClass() {
+                return PIdSTIDMSCLeafA.class;
+            }
+        },
+        PIdSTIDMSCEntityB {
+            public Class getEntityClass() {
+                return PIdSTIDMSCEntityB.class;
+            }
+        },
+        PIdSTIDMSCLeafB1 {
+            public Class getEntityClass() {
+                return PIdSTIDMSCLeafB1.class;
+            }
+        },
+        PIdSTIDMSCLeafB2 {
+            public Class getEntityClass() {
+                return PIdSTIDMSCLeafB2.class;
+            }
+        },
+        PIdSTIDMSCLeafC {
+            public Class getEntityClass() {
+                return PIdSTIDMSCLeafC.class;
+            }
+        },
+        PIdSTIDMSCEntityD {
+            public Class getEntityClass() {
+                return PIdSTIDMSCEntityD.class;
+            }
+        },
+        PIdSTIDMSCLeafD1 {
+            public Class getEntityClass() {
+                return PIdSTIDMSCLeafD1.class;
+            }
+        },
+        PIdSTIDMSCLeafD2 {
+            public Class getEntityClass() {
+                return PIdSTIDMSCLeafD2.class;
+            }
+        },
+        
+        // Primitive Identity defined on a Mapped Superclass, 
+        // Single Table Entity Inheritance, Char Discriminator
+        PIdSTCDMSCRootEntity {
+            public Class getEntityClass() {
+                return PIdSTCDMSCRootEntity.class;
+            }
+        },
+        PIdSTCDMSCLeafA {
+            public Class getEntityClass() {
+                return PIdSTCDMSCLeafA.class;
+            }
+        },
+        PIdSTCDMSCEntityB {
+            public Class getEntityClass() {
+                return PIdSTCDMSCEntityB.class;
+            }
+        },
+        PIdSTCDMSCLeafB1 {
+            public Class getEntityClass() {
+                return PIdSTCDMSCLeafB1.class;
+            }
+        },
+        PIdSTCDMSCLeafB2 {
+            public Class getEntityClass() {
+                return PIdSTCDMSCLeafB2.class;
+            }
+        },
+        PIdSTCDMSCLeafC {
+            public Class getEntityClass() {
+                return PIdSTCDMSCLeafC.class;
+            }
+        },
+        PIdSTCDMSCEntityD {
+            public Class getEntityClass() {
+                return PIdSTCDMSCEntityD.class;
+            }
+        },
+        PIdSTCDMSCLeafD1 {
+            public Class getEntityClass() {
+                return PIdSTCDMSCLeafD1.class;
+            }
+        },
+        PIdSTCDMSCLeafD2 {
+            public Class getEntityClass() {
+                return PIdSTCDMSCLeafD2.class;
+            }
+        },
+        
+        // Primitive Identity defined on a Mapped Superclass, 
+        // Single Table Entity Inheritance, String Discriminator
+        PIdSTSDMSCRootEntity {
+            public Class getEntityClass() {
+                return PIdSTSDMSCRootEntity.class;
+            }
+        },
+        PIdSTSDMSCLeafA {
+            public Class getEntityClass() {
+                return PIdSTSDMSCLeafA.class;
+            }
+        },
+        PIdSTSDMSCEntityB {
+            public Class getEntityClass() {
+                return PIdSTSDMSCEntityB.class;
+            }
+        },
+        PIdSTSDMSCLeafB1 {
+            public Class getEntityClass() {
+                return PIdSTSDMSCLeafB1.class;
+            }
+        },
+        PIdSTSDMSCLeafB2 {
+            public Class getEntityClass() {
+                return PIdSTSDMSCLeafB2.class;
+            }
+        },
+        PIdSTSDMSCLeafC {
+            public Class getEntityClass() {
+                return PIdSTSDMSCLeafC.class;
+            }
+        },
+        PIdSTSDMSCEntityD {
+            public Class getEntityClass() {
+                return PIdSTSDMSCEntityD.class;
+            }
+        },
+        PIdSTSDMSCLeafD1 {
+            public Class getEntityClass() {
+                return PIdSTSDMSCLeafD1.class;
+            }
+        },
+        PIdSTSDMSCLeafD2 {
+            public Class getEntityClass() {
+                return PIdSTSDMSCLeafD2.class;
+            }
+        },
+
+        
+        /*
+         * Non Entity PC-Aware Types
+         */
+        PrimitiveIDMappedSuperclass {
+            public Class getEntityClass() {
+                return PrimitiveIDMappedSuperclass.class;
+            }
+        }, 
+        PIdJTIDMSCMappedSuperclass {
+            public Class getEntityClass() {
+                return PIdJTIDMSCMappedSuperclass.class;
+            }
+        },
+        PIdJTICMSCMappedSuperclass {
+            public Class getEntityClass() {
+                return PIdJTCDMSCMappedSuperclass.class;
+            }
+        },
+        PIdJTISMSCMappedSuperclass {
+            public Class getEntityClass() {
+                return PIdJTSDMSCMappedSuperclass.class;
+            }
+        },
+        PIdSTIDMSCMappedSuperclass {
+            public Class getEntityClass() {
+                return PIdSTIDMSCMappedSuperclass.class;
+            }
+        },
+        PIdSTICMSCMappedSuperclass {
+            public Class getEntityClass() {
+                return PIdSTCDMSCMappedSuperclass.class;
+            }
+        },
+        PIdSTISMSCMappedSuperclass {
+            public Class getEntityClass() {
+                return PIdSTSDMSCMappedSuperclass.class;
+            }
+        }
+        
+        ;
+        
+        public abstract Class getEntityClass();
+        public String getEntityName() {
+            return getEntityClass().getSimpleName();
+        }
+    };
+    
+    public final static InheritanceEntityMapping[] PIdJTIDMSC = {
+        InheritanceEntityMapping.PIdJTIDMSCRootEntity,
+        InheritanceEntityMapping.PIdJTIDMSCLeafA,
+        InheritanceEntityMapping.PIdJTIDMSCEntityB,
+        InheritanceEntityMapping.PIdJTIDMSCLeafB1,
+        InheritanceEntityMapping.PIdJTIDMSCLeafB2,
+        InheritanceEntityMapping.PIdJTIDMSCLeafC,
+        InheritanceEntityMapping.PIdJTIDMSCEntityD,
+        InheritanceEntityMapping.PIdJTIDMSCLeafD1,
+        InheritanceEntityMapping.PIdJTIDMSCLeafD2
+    };
+    
+    public final static InheritanceEntityMapping[] PIdJTCDMSC = {
+        InheritanceEntityMapping.PIdJTCDMSCRootEntity,
+        InheritanceEntityMapping.PIdJTCDMSCLeafA,
+        InheritanceEntityMapping.PIdJTCDMSCEntityB,
+        InheritanceEntityMapping.PIdJTCDMSCLeafB1,
+        InheritanceEntityMapping.PIdJTCDMSCLeafB2,
+        InheritanceEntityMapping.PIdJTCDMSCLeafC,
+        InheritanceEntityMapping.PIdJTCDMSCEntityD,
+        InheritanceEntityMapping.PIdJTCDMSCLeafD1,
+        InheritanceEntityMapping.PIdJTCDMSCLeafD2
+    };
+    
+    public final static InheritanceEntityMapping[] PIdJTSDMSC = {
+        InheritanceEntityMapping.PIdJTSDMSCRootEntity,
+        InheritanceEntityMapping.PIdJTSDMSCLeafA,
+        InheritanceEntityMapping.PIdJTSDMSCEntityB,
+        InheritanceEntityMapping.PIdJTSDMSCLeafB1,
+        InheritanceEntityMapping.PIdJTSDMSCLeafB2,
+        InheritanceEntityMapping.PIdJTSDMSCLeafC,
+        InheritanceEntityMapping.PIdJTSDMSCEntityD,
+        InheritanceEntityMapping.PIdJTSDMSCLeafD1,
+        InheritanceEntityMapping.PIdJTSDMSCLeafD2
+    };
+    
+    public final static InheritanceEntityMapping[] PIdSTIDMSC = {
+        InheritanceEntityMapping.PIdSTIDMSCRootEntity,
+        InheritanceEntityMapping.PIdSTIDMSCLeafA,
+        InheritanceEntityMapping.PIdSTIDMSCEntityB,
+        InheritanceEntityMapping.PIdSTIDMSCLeafB1,
+        InheritanceEntityMapping.PIdSTIDMSCLeafB2,
+        InheritanceEntityMapping.PIdSTIDMSCLeafC,
+        InheritanceEntityMapping.PIdSTIDMSCEntityD,
+        InheritanceEntityMapping.PIdSTIDMSCLeafD1,
+        InheritanceEntityMapping.PIdSTIDMSCLeafD2
+    };
+    
+    public final static InheritanceEntityMapping[] PIdSTCDMSC = {
+        InheritanceEntityMapping.PIdSTCDMSCRootEntity,
+        InheritanceEntityMapping.PIdSTCDMSCLeafA,
+        InheritanceEntityMapping.PIdSTCDMSCEntityB,
+        InheritanceEntityMapping.PIdSTCDMSCLeafB1,
+        InheritanceEntityMapping.PIdSTCDMSCLeafB2,
+        InheritanceEntityMapping.PIdSTCDMSCLeafC,
+        InheritanceEntityMapping.PIdSTCDMSCEntityD,
+        InheritanceEntityMapping.PIdSTCDMSCLeafD1,
+        InheritanceEntityMapping.PIdSTCDMSCLeafD2
+    };
+    
+    public final static InheritanceEntityMapping[] PIdSTSDMSC = {
+        InheritanceEntityMapping.PIdSTSDMSCRootEntity,
+        InheritanceEntityMapping.PIdSTSDMSCLeafA,
+        InheritanceEntityMapping.PIdSTSDMSCEntityB,
+        InheritanceEntityMapping.PIdSTSDMSCLeafB1,
+        InheritanceEntityMapping.PIdSTSDMSCLeafB2,
+        InheritanceEntityMapping.PIdSTSDMSCLeafC,
+        InheritanceEntityMapping.PIdSTSDMSCEntityD,
+        InheritanceEntityMapping.PIdSTSDMSCLeafD1,
+        InheritanceEntityMapping.PIdSTSDMSCLeafD2
+    };
+
+    
+    @SuppressWarnings("unchecked")
+    public static Object createEntityObjectInstance(
+            InheritanceEntityMapping eType) throws Exception {
+        Class eClassType = eType.getEntityClass();
+        
+        Constructor c = eClassType.getConstructor(new Class[] {});
+        Object eObj = c.newInstance(new Object[] {});
+        return eObj;
+    }
+}

Propchange: openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/EntityMapping.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/PrimitiveIDMappedSuperclass.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/PrimitiveIDMappedSuperclass.java?rev=789539&view=auto
==============================================================================
--- openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/PrimitiveIDMappedSuperclass.java (added)
+++ openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/PrimitiveIDMappedSuperclass.java Tue Jun 30 02:46:42 2009
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openjpa.persistence.inheritance.entities.idmsc;
+
+import javax.persistence.Id;
+import javax.persistence.MappedSuperclass;
+
+/**
+ * Mapped Superclass defining an integer-type primary key field.
+ *
+ */
+@MappedSuperclass
+public abstract class PrimitiveIDMappedSuperclass {
+    @Id
+    private int id;
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+    
+    public Object fetchId() {
+        return new Integer(getId());
+    }
+    
+    public void updateId(Object obj) {
+        Integer i = (Integer) obj;
+        setId(i.intValue());
+    }
+}

Propchange: openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/PrimitiveIDMappedSuperclass.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/chardiscriminator/PIdJTCDMSCEntityB.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/chardiscriminator/PIdJTCDMSCEntityB.java?rev=789539&view=auto
==============================================================================
--- openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/chardiscriminator/PIdJTCDMSCEntityB.java (added)
+++ openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/chardiscriminator/PIdJTCDMSCEntityB.java Tue Jun 30 02:46:42 2009
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.openjpa.persistence.inheritance.entities.idmsc.
+primitiveidentity.jointable.chardiscriminator;
+
+import javax.persistence.DiscriminatorValue;
+import javax.persistence.Entity;
+
+import org.apache.openjpa.persistence.inheritance.entities.testinterfaces.
+    EntityB;
+
+@Entity
+@DiscriminatorValue("C")
+public class PIdJTCDMSCEntityB 
+extends PIdJTCDMSCRootEntity implements EntityB {
+    private String entityBData;
+    
+    public String getEntityBData() {
+        return entityBData;
+    }
+    public void setEntityBData(String entityBData) {
+        this.entityBData = entityBData;
+    }
+}

Propchange: openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/chardiscriminator/PIdJTCDMSCEntityB.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/chardiscriminator/PIdJTCDMSCEntityD.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/chardiscriminator/PIdJTCDMSCEntityD.java?rev=789539&view=auto
==============================================================================
--- openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/chardiscriminator/PIdJTCDMSCEntityD.java (added)
+++ openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/chardiscriminator/PIdJTCDMSCEntityD.java Tue Jun 30 02:46:42 2009
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.openjpa.persistence.inheritance.entities.idmsc.
+primitiveidentity.jointable.chardiscriminator;
+
+import javax.persistence.DiscriminatorValue;
+import javax.persistence.Entity;
+
+import org.apache.openjpa.persistence.inheritance.entities.testinterfaces.
+    EntityD;
+@Entity
+@DiscriminatorValue("G")
+public class PIdJTCDMSCEntityD 
+extends PIdJTCDMSCMappedSuperclass implements EntityD {
+private String entityDData;
+    
+    public String getEntityDData() {
+        return entityDData;
+    }
+    public void setEntityDData(String entityDData) {
+        this.entityDData = entityDData;
+    }
+}

Propchange: openjpa/branches/1.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/entities/idmsc/primitiveidentity/jointable/chardiscriminator/PIdJTCDMSCEntityD.java
------------------------------------------------------------------------------
    svn:eol-style = native