You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by pc...@apache.org on 2008/01/31 20:40:38 UTC
svn commit: r617199 - in /openjpa/trunk:
openjpa-kernel/src/main/java/org/apache/openjpa/meta/
openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/
Author: pcl
Date: Thu Jan 31 11:40:34 2008
New Revision: 617199
URL: http://svn.apache.org/viewvc?rev=617199&view=rev
Log:
OPENJPA-258 Merge from ../branches/1.0.x. svn merge -c 617073
Modified:
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/InheritanceComparator.java
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/A.java
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/AbstractThing.java
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/B.java
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/C.java
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/TestMetaDataInheritanceComparator.java
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/InheritanceComparator.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/InheritanceComparator.java?rev=617199&r1=617198&r2=617199&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/InheritanceComparator.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/InheritanceComparator.java Thu Jan 31 11:40:34 2008
@@ -30,11 +30,10 @@
public class InheritanceComparator
implements Comparator, Serializable {
- private Class _base = Object.class;
+ private Class _base = null;
/**
- * Set the least-derived type possible; defaults to
- * <code>Object.class</code>.
+ * Set the least-derived type possible; defaults to <code>null</code>.
*/
public void setBase(Class base) {
_base = base;
@@ -75,10 +74,9 @@
return 1;
return c1.getName().compareTo(c2.getName());
}
- int diff = i1 - i2;
- if (diff < 0)
+ if (i1 < i2)
return -1;
- else if (diff > 0)
+ else if (i1 > i2)
return 1;
else
return 0;
@@ -90,6 +88,8 @@
private int levels(Class to) {
if (to.isInterface())
return to.getInterfaces().length;
+ if (_base == null)
+ return 0;
for (int i = 0; to != null; i++, to = to.getSuperclass())
if (to == _base)
return i;
Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/A.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/A.java?rev=617199&r1=617198&r2=617199&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/A.java (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/A.java Thu Jan 31 11:40:34 2008
@@ -19,8 +19,10 @@
package org.apache.openjpa.meta;
import javax.persistence.Entity;
+import javax.persistence.Table;
@Entity
+@Table(name="meta_A")
public class A extends AbstractThing {
}
Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/AbstractThing.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/AbstractThing.java?rev=617199&r1=617198&r2=617199&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/AbstractThing.java (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/AbstractThing.java Thu Jan 31 11:40:34 2008
@@ -35,7 +35,7 @@
return id;
}
- void setId(final String id) {
+ protected void setId(final String id) {
this.id = id;
}
}
Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/B.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/B.java?rev=617199&r1=617198&r2=617199&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/B.java (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/B.java Thu Jan 31 11:40:34 2008
@@ -21,10 +21,12 @@
import java.util.Set;
import javax.persistence.Entity;
import javax.persistence.OneToMany;
+import javax.persistence.Table;
import org.apache.openjpa.meta.C;
@Entity
+@Table(name="meta_B")
public class B extends AbstractThing {
private Set<C> cs;
private Set<A> as;
Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/C.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/C.java?rev=617199&r1=617198&r2=617199&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/C.java (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/C.java Thu Jan 31 11:40:34 2008
@@ -23,11 +23,13 @@
import javax.persistence.ManyToOne;
import javax.persistence.Column;
import javax.persistence.Id;
+import javax.persistence.Table;
import org.apache.openjpa.meta.C.Identity;
@Entity
@IdClass(Identity.class)
+@Table(name="meta_C")
public class C {
private A a;
private B b;
Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/TestMetaDataInheritanceComparator.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/TestMetaDataInheritanceComparator.java?rev=617199&r1=617198&r2=617199&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/TestMetaDataInheritanceComparator.java (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/meta/TestMetaDataInheritanceComparator.java Thu Jan 31 11:40:34 2008
@@ -20,16 +20,45 @@
import javax.persistence.EntityManagerFactory;
-import junit.framework.TestCase;
import org.apache.openjpa.persistence.test.PersistenceTestCase;
-import org.apache.openjpa.persistence.test.SingleEMFTestCase;
import org.apache.openjpa.persistence.JPAFacadeHelper;
public class TestMetaDataInheritanceComparator extends PersistenceTestCase {
- public void testMetaDataInheritanceComparator() {
+ public void testInheritanceComparatorWithoutBase() {
+ inheritanceComparatorHelper(false);
+ }
+
+ public void testInheritanceComparatorWithBase() {
+ inheritanceComparatorHelper(true);
+ }
+
+ private void inheritanceComparatorHelper(boolean base) {
+ InheritanceComparator comp = new InheritanceComparator();
+ if (base)
+ comp.setBase(AbstractThing.class);
+
+ assertEquals(-1, comp.compare(A.class, B.class));
+ assertEquals(-1, comp.compare(B.class, C.class));
+ assertTrue(comp.compare(A.class, C.class) < 0);
+
+ assertEquals(-1, comp.compare(AbstractThing.class, A.class));
+ assertEquals(-1, comp.compare(AbstractThing.class, B.class));
+ assertTrue(comp.compare(AbstractThing.class, C.class) < 0);
+ }
+
+ public void testMetaDataInheritanceComparatorWithoutBase() {
+ metaDataInheritanceComparatorHelper(false);
+ }
+
+ public void testMetaDataInheritanceComparatorWithBase() {
+ metaDataInheritanceComparatorHelper(true);
+ }
+
+ private void metaDataInheritanceComparatorHelper(boolean base) {
InheritanceComparator comp = new MetaDataInheritanceComparator();
- comp.setBase(AbstractThing.class);
+ if (base)
+ comp.setBase(AbstractThing.class);
EntityManagerFactory emf = createEMF(A.class, B.class, C.class,
AbstractThing.class);
@@ -37,18 +66,29 @@
ClassMetaData a = JPAFacadeHelper.getMetaData(emf, A.class);
ClassMetaData b = JPAFacadeHelper.getMetaData(emf, B.class);
ClassMetaData c = JPAFacadeHelper.getMetaData(emf, C.class);
+ ClassMetaData at = JPAFacadeHelper.getMetaData(emf,
+ AbstractThing.class);
+
+ emf.close();
assertEquals(-1, comp.compare(a, b));
assertEquals(-1, comp.compare(b, c));
- assertEquals(-1, comp.compare(a, c));
- }
+ assertTrue(comp.compare(a, c) < 0);
- public void testInheritanceComparator() {
- InheritanceComparator comp = new InheritanceComparator();
- comp.setBase(AbstractThing.class);
+ assertEquals(1, comp.compare(b, a));
+ assertEquals(1, comp.compare(c, b));
+ assertTrue(comp.compare(c, a) > 0);
+
+ assertEquals(-1, comp.compare(at, a));
+ assertEquals(-1, comp.compare(at, b));
+ assertEquals(-1, comp.compare(at, c));
+ }
- assertEquals(-1, comp.compare(A.class, B.class));
- assertEquals(-1, comp.compare(B.class, C.class));
- assertEquals(-1, comp.compare(A.class, C.class));
+ public void testEndToEnd() {
+ // make sure we can get things fully instantiated
+ EntityManagerFactory emf = createEMF(A.class, B.class, C.class,
+ AbstractThing.class);
+ emf.createEntityManager().close();
+ emf.close();
}
}