diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/test/PersistenceTestCase.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/test/PersistenceTestCase.java index e78332ea2..567fbefb6 100644 --- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/test/PersistenceTestCase.java +++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/test/PersistenceTestCase.java @@ -56,7 +56,15 @@ public abstract class PersistenceTestCase * configuration values in the form key,value,key,value... */ protected OpenJPAEntityManagerFactorySPI createEMF(Object... props) { - return createNamedEMF("test", props); + return createNamedEMF(getPersistenceUnitName(), props); + } + + /** + * The name of the persistence unit that this test class should use + * by default. This defaults to "test". + */ + protected String getPersistenceUnitName() { + return "test"; } /** @@ -83,7 +91,7 @@ public abstract class PersistenceTestCase + "SchemaAction='add,deleteTableContents')"); } else if (props[i] instanceof Class) types.add((Class) props[i]); - else + else if (props[i] != null) prop = true; } diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/xml/TestSimpleXmlEntity.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/xml/TestSimpleXmlEntity.java index 8c1e65a83..96c3baa00 100644 --- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/xml/TestSimpleXmlEntity.java +++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/xml/TestSimpleXmlEntity.java @@ -25,7 +25,11 @@ public class TestSimpleXmlEntity extends SingleEMTestCase { public void setUp() { - setUp(SimpleXmlEntity.class); + setUp(CLEAR_TABLES); + } + + protected String getPersistenceUnitName() { + return "xml-persistence-unit"; } public void testId() { diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/xml/TestXmlOverrideEntity.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/xml/TestXmlOverrideEntity.java index b49191214..155993f8b 100644 --- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/xml/TestXmlOverrideEntity.java +++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/xml/TestXmlOverrideEntity.java @@ -20,16 +20,51 @@ package org.apache.openjpa.persistence.xml; import javax.persistence.EntityManager; +import org.apache.openjpa.enhance.PCRegistry; +import org.apache.openjpa.enhance.PersistenceCapable; import org.apache.openjpa.jdbc.meta.ClassMapping; import org.apache.openjpa.jdbc.meta.FieldMapping; import org.apache.openjpa.jdbc.schema.Column; +import org.apache.openjpa.meta.ClassMetaData; +import org.apache.openjpa.meta.MetaDataRepository; import org.apache.openjpa.persistence.InvalidStateException; +import org.apache.openjpa.persistence.JPAFacadeHelper; import org.apache.openjpa.persistence.test.SingleEMFTestCase; public class TestXmlOverrideEntity extends SingleEMFTestCase { - public void setUp() { - setUp(XmlOverrideEntity.class); + public void setUp() throws ClassNotFoundException { + setUp(CLEAR_TABLES); + + // make sure that XmlOverrideEntity is registered for our metadata tests + Class.forName(XmlOverrideEntity.class.getName(), true, + XmlOverrideEntity.class.getClassLoader()); + } + + protected String getPersistenceUnitName() { + return "xml-persistence-unit"; + } + + public void testOverrideHappenedDuringEnhancement() + throws ClassNotFoundException { + // this mostly tests our test harness. Since XmlOverrideEntity + // has annotation-based metadata, it is important that the first + // PU in which it gets scanned-and-enhanced knows about overriding. + assertTrue(PersistenceCapable.class.isAssignableFrom( + XmlOverrideEntity.class)); + assertEquals("XmlOverride", + PCRegistry.getTypeAlias(XmlOverrideEntity.class)); + } + + public void testOverriddenEntityName() { + ClassMetaData meta = JPAFacadeHelper.getMetaData(emf, + XmlOverrideEntity.class); + assertEquals("XmlOverride", meta.getTypeAlias()); + emf.createEntityManager().close(); + MetaDataRepository repo = emf.getConfiguration() + .getMetaDataRepositoryInstance(); + assertEquals(meta, repo.getMetaData("XmlOverride", + XmlOverrideEntity.class.getClassLoader(), true)); } /** diff --git a/openjpa-persistence-jdbc/src/test/resources/META-INF/persistence.xml b/openjpa-persistence-jdbc/src/test/resources/META-INF/persistence.xml index ab9b90240..aaadf3e1c 100644 --- a/openjpa-persistence-jdbc/src/test/resources/META-INF/persistence.xml +++ b/openjpa-persistence-jdbc/src/test/resources/META-INF/persistence.xml @@ -21,26 +21,31 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0"> - - - - org/apache/openjpa/persistence/xml/orm.xml - + + This PU needs to be first because XmlOverrideEntity overrides the + entity name, and that data is stored statically in the enhanced + class. + + org/apache/openjpa/persistence/xml/orm.xml + + + + + +