gdamour 2005/05/17 11:49:38
Modified:
modules/openejb-builder/src/test/org/openejb/deployment/entity/cmp/cmr/onetomany
BBean.java BLocal.java BLocalHome.java
OneToManyCascadeDeleteTest.java
OneToManyCompoundPKTest.java OneToManyTest.java
Log:
Support mapping of CMP fields to foreign key columns.
When such a CMP field is fetched, the engine actually sources the value
from the CMR field defining the foreign key column. In other words, the
values of such CMP fields always mirror the values of the associated CMR
field.
Also, the implementation does not allow for the update of such CMP fields
as its breaks the CMR relationship contract.
Revision Changes Path
1.2 +19 -2
openejb/modules/openejb-builder/src/test/org/openejb/deployment/entity/cmp/cmr/onetomany/BBean.java
Index: BBean.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/openejb-builder/src/test/org/openejb/deployment/entity/cmp/cmr/onetomany/BBean.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- BBean.java 10 Nov 2004 01:35:11 -0000 1.1
+++ BBean.java 17 May 2005 15:49:38 -0000 1.2
@@ -52,6 +52,8 @@
import javax.ejb.EntityContext;
import javax.ejb.RemoveException;
+import org.openejb.deployment.entity.cmp.cmr.CompoundPK;
+
/**
*
* @version $Revision$ $Date$
@@ -66,7 +68,13 @@
public abstract String getField2();
public abstract void setField2(String field2);
-
+
+ public abstract Integer getField3();
+ public abstract void setField3(Integer field3);
+
+ public abstract String getField4();
+ public abstract void setField4(String field4);
+
// CMR
public abstract ALocal getA();
public abstract void setA(ALocal a);
@@ -79,6 +87,15 @@
public void ejbPostCreate(Integer field1) {
}
+ public CompoundPK ejbCreate(CompoundPK primaryKey) throws
CreateException {
+ setField1(primaryKey.field1);
+ setField2(primaryKey.field2);
+ return null;
+ }
+
+ public void ejbPostCreate(CompoundPK primaryKey) {
+ }
+
public void setEntityContext(EntityContext ctx) {
context = ctx;
}
1.2 +8 -2
openejb/modules/openejb-builder/src/test/org/openejb/deployment/entity/cmp/cmr/onetomany/BLocal.java
Index: BLocal.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/openejb-builder/src/test/org/openejb/deployment/entity/cmp/cmr/onetomany/BLocal.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- BLocal.java 10 Nov 2004 01:35:11 -0000 1.1
+++ BLocal.java 17 May 2005 15:49:38 -0000 1.2
@@ -61,7 +61,13 @@
public String getField2();
public void setField2(String field2);
-
+
+ public Integer getField3();
+ public void setField3(Integer field3);
+
+ public String getField4();
+ public void setField4(String field4);
+
// CMR
public ALocal getA();
public void setA(ALocal a);
1.2 +5 -1
openejb/modules/openejb-builder/src/test/org/openejb/deployment/entity/cmp/cmr/onetomany/BLocalHome.java
Index: BLocalHome.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/openejb-builder/src/test/org/openejb/deployment/entity/cmp/cmr/onetomany/BLocalHome.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- BLocalHome.java 10 Nov 2004 01:35:11 -0000 1.1
+++ BLocalHome.java 17 May 2005 15:49:38 -0000 1.2
@@ -51,6 +51,8 @@
import javax.ejb.EJBLocalHome;
import javax.ejb.FinderException;
+import org.openejb.deployment.entity.cmp.cmr.CompoundPK;
+
/**
*
@@ -60,8 +62,10 @@
// Create
public BLocal create(Integer field1) throws CreateException;
+ public BLocal create(CompoundPK primaryKey) throws CreateException;
// Finder
public BLocal findByPrimaryKey(Integer primaryKey) throws
FinderException;
+ public BLocal findByPrimaryKey(CompoundPK primaryKey) throws
FinderException;
}
1.3 +4 -5
openejb/modules/openejb-builder/src/test/org/openejb/deployment/entity/cmp/cmr/onetomany/OneToManyCascadeDeleteTest.java
Index: OneToManyCascadeDeleteTest.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/openejb-builder/src/test/org/openejb/deployment/entity/cmp/cmr/onetomany/OneToManyCascadeDeleteTest.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- OneToManyCascadeDeleteTest.java 1 Mar 2005 23:34:39 -0000 1.2
+++ OneToManyCascadeDeleteTest.java 17 May 2005 15:49:38 -0000 1.3
@@ -54,7 +54,6 @@
import org.apache.geronimo.transaction.context.TransactionContext;
import org.openejb.deployment.entity.cmp.cmr.AbstractCMRTest;
-import org.openejb.deployment.entity.cmp.cmr.CompoundPK;
/**
*
@@ -68,7 +67,7 @@
public void testCascadeDelete() throws Exception {
TransactionContext ctx = newTransactionContext();
- ALocal a = ahome.findByPrimaryKey(new CompoundPK(new Integer(1),
"value1"));
+ ALocal a = ahome.findByPrimaryKey(new Integer(1));
a.remove();
ctx.commit();
@@ -113,11 +112,11 @@
}
protected String getEjbJarDD() {
- return
"src/test-cmp/onetomany/compoundpk/cascade-delete-ejb-jar.xml";
+ return "src/test-cmp/onetomany/simplepk/cascade-delete-ejb-jar.xml";
}
protected String getOpenEjbJarDD() {
- return "src/test-cmp/onetomany/compoundpk/openejb-jar.xml";
+ return "src/test-cmp/onetomany/simplepk/openejb-jar.xml";
}
protected EJBClass getA() {
1.4 +32 -8
openejb/modules/openejb-builder/src/test/org/openejb/deployment/entity/cmp/cmr/onetomany/OneToManyCompoundPKTest.java
Index: OneToManyCompoundPKTest.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/openejb-builder/src/test/org/openejb/deployment/entity/cmp/cmr/onetomany/OneToManyCompoundPKTest.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- OneToManyCompoundPKTest.java 1 Mar 2005 23:34:39 -0000 1.3
+++ OneToManyCompoundPKTest.java 17 May 2005 15:49:38 -0000 1.4
@@ -55,6 +55,8 @@
import java.util.Iterator;
import java.util.Set;
+import javax.ejb.EJBException;
+
import org.apache.geronimo.transaction.context.TransactionContext;
import org.openejb.deployment.entity.cmp.cmr.AbstractCMRTest;
import org.openejb.deployment.entity.cmp.cmr.CompoundPK;
@@ -89,13 +91,13 @@
public void testBGetAExistingAB() throws Exception {
TransactionContext ctx = newTransactionContext();
- BLocal b = bhome.findByPrimaryKey(new Integer(11));
+ BLocal b = bhome.findByPrimaryKey(new CompoundPK(new Integer(11),
"value11"));
ALocal a = b.getA();
assertNotNull(a);
assertEquals(new Integer(1), a.getField1());
assertEquals("value1", a.getField2());
- b = bhome.findByPrimaryKey(new Integer(22));
+ b = bhome.findByPrimaryKey(new CompoundPK(new Integer(22),
"value22"));
a = b.getA();
assertNotNull(a);
assertEquals(new Integer(1), a.getField1());
@@ -147,8 +149,7 @@
TransactionContext ctx = newTransactionContext();
a = ahome.create(pkA);
- b = bhome.create(new Integer(22));
- b.setField2("value22");
+ b = bhome.create(new CompoundPK(new Integer(22), "value22"));
return ctx;
}
@@ -192,7 +193,7 @@
TransactionContext ctx = newTransactionContext();
a = ahome.create(pkA);
- b = bhome.findByPrimaryKey(new Integer(11));
+ b = bhome.findByPrimaryKey(new CompoundPK(new Integer(11),
"value11"));
return ctx;
}
@@ -235,8 +236,7 @@
TransactionContext ctx = newTransactionContext();
a = ahome.findByPrimaryKey(pkA);
- b = bhome.create(new Integer(33));
- b.setField2("value33");
+ b = bhome.create(new CompoundPK(new Integer(33), "value33"));
return ctx;
}
@@ -297,6 +297,30 @@
c.close();
}
+ public void testCMPMappedToForeignKeyColumn() throws Exception {
+ TransactionContext ctx = newTransactionContext();
+ BLocal b = bhome.findByPrimaryKey(new CompoundPK(new Integer(11),
"value11"));
+
+ Integer field3 = b.getField3();
+ assertEquals(((CompoundPK) b.getA().getPrimaryKey()).field1, field3);
+
+ String field4 = b.getField4();
+ assertEquals(((CompoundPK) b.getA().getPrimaryKey()).field2, field4);
+ ctx.commit();
+ }
+
+ public void testSetCMPMappedToForeignKeyColumn() throws Exception {
+ TransactionContext ctx = newTransactionContext();
+ BLocal b = bhome.findByPrimaryKey(new CompoundPK(new Integer(11),
"value11"));
+
+ try {
+ b.setField3(new Integer(13));
+ fail("Cannot set the value of a CMP field mapped to a foreign
key column.");
+ } catch (EJBException e) {
+ }
+ ctx.commit();
+ }
+
protected void setUp() throws Exception {
super.setUp();
1.4 +24 -1
openejb/modules/openejb-builder/src/test/org/openejb/deployment/entity/cmp/cmr/onetomany/OneToManyTest.java
Index: OneToManyTest.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/openejb-builder/src/test/org/openejb/deployment/entity/cmp/cmr/onetomany/OneToManyTest.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- OneToManyTest.java 1 Mar 2005 23:34:39 -0000 1.3
+++ OneToManyTest.java 17 May 2005 15:49:38 -0000 1.4
@@ -55,6 +55,8 @@
import java.util.Iterator;
import java.util.Set;
+import javax.ejb.EJBException;
+
import org.apache.geronimo.transaction.context.TransactionContext;
import org.openejb.deployment.entity.cmp.cmr.AbstractCMRTest;
@@ -290,7 +292,28 @@
s.close();
c.close();
}
+
+ public void testCMPMappedToForeignKeyColumn() throws Exception {
+ TransactionContext ctx = newTransactionContext();
+ BLocal b = bhome.findByPrimaryKey(new Integer(11));
+
+ Integer field3 = b.getField3();
+ assertEquals(b.getA().getPrimaryKey(), field3);
+ ctx.commit();
+ }
+
+ public void testSetCMPMappedToForeignKeyColumn() throws Exception {
+ TransactionContext ctx = newTransactionContext();
+ BLocal b = bhome.findByPrimaryKey(new Integer(11));
+ try {
+ b.setField3(new Integer(13));
+ fail("Cannot set the value of a CMP field mapped to a foreign
key column.");
+ } catch (EJBException e) {
+ }
+ ctx.commit();
+ }
+
protected void setUp() throws Exception {
super.setUp();