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