You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by da...@apache.org on 2007/01/26 02:57:14 UTC

svn commit: r500087 [1/2] - in /incubator/openejb/trunk/openejb3/container/openejb-jee/src: main/java/org/apache/openejb/jee/ test/java/org/apache/openejb/jee/jpa/ test/resources/ test/resources/oej2/ test/resources/oej2/cmp/ test/resources/oej2/cmp/cm...

Author: dain
Date: Thu Jan 25 17:57:12 2007
New Revision: 500087

URL: http://svn.apache.org/viewvc?view=rev&rev=500087
Log:
Added tests for conversion of all working CMR types and fixed bugs found

Added:
    incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/daytrader-orm.xml
    incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/itest-2.2-ejb-jar.xml
      - copied, changed from r500066, incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/itest-ejb-jar-2.2.xml
    incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/itest-2.2-orm.xml
    incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/
    incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/
      - copied from r498542, incubator/openejb/trunk/openejb2/modules/openejb-builder/src/test-cmp/
    incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/cmr-mapping/
      - copied from r500086, incubator/openejb/trunk/openejb2/modules/openejb-builder/src/test-cmp/cmr-mapping/
    incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/ejb-ql/
      - copied from r500086, incubator/openejb/trunk/openejb2/modules/openejb-builder/src/test-cmp/ejb-ql/
    incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/manytomany/
      - copied from r500086, incubator/openejb/trunk/openejb2/modules/openejb-builder/src/test-cmp/manytomany/
    incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/manytomany/simplepk/orm.xml
    incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/manytomany/simplepk/unidirectional-ejb-jar.xml
    incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/manytomany/simplepk/unidirectional-orm.xml
    incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetomany/
      - copied from r500086, incubator/openejb/trunk/openejb2/modules/openejb-builder/src/test-cmp/onetomany/
    incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetomany/simplepk/many-unidirectional-ejb-jar.xml
    incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetomany/simplepk/many-unidirectional-openejb-jar.xml   (with props)
    incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetomany/simplepk/many-unidirectional-orm.xml
    incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetomany/simplepk/one-unidirectional-ejb-jar.xml
    incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetomany/simplepk/one-unidirectional-openejb-jar.xml
    incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetomany/simplepk/one-unidirectional-orm.xml
    incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetomany/simplepk/orm.xml
    incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetoone/
      - copied from r500086, incubator/openejb/trunk/openejb2/modules/openejb-builder/src/test-cmp/onetoone/
    incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetoone/simplepk/orm.xml
    incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetoone/simplepk/unidirectional-ejb-jar.xml
    incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetoone/simplepk/unidirectional-orm.xml
Removed:
    incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/itest-ejb-jar-2.2.xml
    incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetomany/simplepk/unidirectional-openejb-jar.xml
Modified:
    incubator/openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/EjbRelationshipRole.java
    incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/java/org/apache/openejb/jee/jpa/Cmp2ConversionTest.java
    incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/java/org/apache/openejb/jee/jpa/OpenEjb2CmpConversion.java
    incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/daytrader-ejb-jar.xml
    incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetomany/simplepk/ejb-jar.xml

Modified: incubator/openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/EjbRelationshipRole.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/EjbRelationshipRole.java?view=diff&rev=500087&r1=500086&r2=500087
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/EjbRelationshipRole.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/EjbRelationshipRole.java Thu Jan 25 17:57:12 2007
@@ -119,12 +119,12 @@
         this.multiplicity = value;
     }
 
-    public EmptyType getCascadeDelete() {
-        return cascadeDelete;
+    public boolean getCascadeDelete() {
+        return cascadeDelete != null;
     }
 
-    public void setCascadeDelete(EmptyType value) {
-        this.cascadeDelete = value;
+    public void setCascadeDelete(boolean value) {
+        this.cascadeDelete = value ? new EmptyType() : null;
     }
 
     public RelationshipRoleSource getRelationshipRoleSource() {

Modified: incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/java/org/apache/openejb/jee/jpa/Cmp2ConversionTest.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/java/org/apache/openejb/jee/jpa/Cmp2ConversionTest.java?view=diff&rev=500087&r1=500086&r2=500087
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/java/org/apache/openejb/jee/jpa/Cmp2ConversionTest.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/java/org/apache/openejb/jee/jpa/Cmp2ConversionTest.java Thu Jan 25 17:57:12 2007
@@ -16,59 +16,94 @@
  */
 package org.apache.openejb.jee.jpa;
 
-import java.io.InputStream;
-import java.io.IOException;
 import java.io.BufferedInputStream;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.HashMap;
+import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBElement;
 import javax.xml.bind.JAXBException;
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.Unmarshaller;
 import javax.xml.bind.Marshaller;
-import javax.xml.bind.ValidationEventHandler;
-import javax.xml.bind.ValidationEvent;
 
 import junit.framework.TestCase;
-import org.apache.openejb.jee.oejb2.OpenejbJarType;
+import org.apache.openejb.jee.CmpField;
 import org.apache.openejb.jee.EjbJar;
-import org.apache.openejb.jee.Relationships;
 import org.apache.openejb.jee.EjbRelation;
 import org.apache.openejb.jee.EjbRelationshipRole;
-import org.apache.openejb.jee.RelationshipRoleSource;
 import org.apache.openejb.jee.EntityBean;
-import org.apache.openejb.jee.CmpField;
+import org.apache.openejb.jee.JaxbJavaee;
 import org.apache.openejb.jee.Multiplicity;
 import org.apache.openejb.jee.PersistenceType;
+import org.apache.openejb.jee.RelationshipRoleSource;
+import org.apache.openejb.jee.Relationships;
+import org.apache.openejb.jee.oejb2.JaxbOpenejbJar2;
+import org.apache.openejb.jee.oejb2.OpenejbJarType;
 
 /**
  * @version $Rev$ $Date$
  */
 public class Cmp2ConversionTest extends TestCase {
+    public void testItests22() throws Exception {
+        convert("itest-2.2-ejb-jar.xml", "openejb-jar-2.2.xml", "itest-2.2-orm.xml");
+    }
 
-    public void testEjbJarDoc() throws Exception {
-        marshalAndUnmarshal(EjbJar.class, "ejb-jar-cmp-example1.xml");
+    public void testDaytrader() throws Exception {
+        convert("daytrader-ejb-jar.xml", "daytrader-corrected.xml", "daytrader-orm.xml");
     }
 
-    public void testConversion() throws Exception {
-        EntityMappings entityMappings = generateEntityMappings("daytrader-ejb-jar.xml");
+    public void testOneToOne() throws Exception {
+        convert("oej2/cmp/onetoone/simplepk/");
+    }
 
-        JAXBContext ctx = JAXBContext.newInstance(OpenejbJarType.class);
-        Unmarshaller unmarshaller = ctx.createUnmarshaller();
+    public void testOneToOneUni() throws Exception {
+        convert("oej2/cmp/onetoone/simplepk/unidirectional-");
+    }
 
-        InputStream in = this.getClass().getClassLoader().getResourceAsStream("daytrader-corrected.xml");
-        String expected = readContent(in);
+    public void testOneToMany() throws Exception {
+        convert("oej2/cmp/onetomany/simplepk/ejb-jar.xml", "oej2/cmp/onetomany/simplepk/openejb-jar.xml", null);
+    }
+
+    public void testOneToManyUni() throws Exception {
+        convert("oej2/cmp/onetomany/simplepk/one-unidirectional-");
+    }
+
+    public void testManyToOneUni() throws Exception {
+        convert("oej2/cmp/onetomany/simplepk/many-unidirectional-");
+    }
+
+    public void testManyToMany() throws Exception {
+        convert("oej2/cmp/manytomany/simplepk/");
+    }
+
+    public void testManyToManyUni() throws Exception {
+        convert("oej2/cmp/manytomany/simplepk/unidirectional-");
+    }
+
+    private EntityMappings convert(String prefix) throws Exception {
+        return convert(prefix + "ejb-jar.xml", prefix + "openejb-jar.xml", prefix + "orm.xml");
+    }
+
+    private EntityMappings convert(String ejbJarFileName, String openejbJarFileName, String expectedFileName) throws Exception {
+        EntityMappings entityMappings = generateEntityMappings(ejbJarFileName);
 
-        JAXBElement element = (JAXBElement) unmarshaller.unmarshal(new ByteArrayInputStream(expected.getBytes()));
+        String openejbJarXml = readContent(getClass().getClassLoader().getResourceAsStream(openejbJarFileName));
+        JAXBElement element = (JAXBElement) JaxbOpenejbJar2.unmarshal(OpenejbJarType.class, new ByteArrayInputStream(openejbJarXml.getBytes()));
         OpenejbJarType openejbJarType = (OpenejbJarType) element.getValue();
 
         OpenEjb2CmpConversion openEjb2CmpConversion = new OpenEjb2CmpConversion();
         openEjb2CmpConversion.mergeEntityMappings(entityMappings, openejbJarType);
-        String actual = toString(entityMappings);
-        System.out.println(actual);
+
+        if (expectedFileName != null) {
+            InputStream in = getClass().getClassLoader().getResourceAsStream(expectedFileName);
+            String expected = readContent(in);
+            String actual = toString(entityMappings);
+            assertEquals(expected, actual);
+        }
+        return entityMappings;
     }
 
 
@@ -82,16 +117,14 @@
         marshaller.marshal(entityMappings, baos);
 
         String actual = new String(baos.toByteArray());
-        return actual;
+        return actual.trim();
     }
 
-    private EntityMappings generateEntityMappings(String fileName) throws IOException, JAXBException {
-        JAXBContext ctx = JAXBContext.newInstance(EjbJar.class);
-        Unmarshaller unmarshaller = ctx.createUnmarshaller();
-
+    private EntityMappings generateEntityMappings(String fileName) throws Exception {
         InputStream in = this.getClass().getClassLoader().getResourceAsStream(fileName);
         String expected = readContent(in);
-        EjbJar ejbJar = (EjbJar) unmarshaller.unmarshal(new ByteArrayInputStream(expected.getBytes()));
+
+        EjbJar ejbJar = (EjbJar) JaxbJavaee.unmarshal(EjbJar.class, new ByteArrayInputStream(expected.getBytes()));
 
         EntityMappings entityMappings = new EntityMappings();
         Map<String, Entity> entitiesByName = new HashMap<String,Entity>();
@@ -167,7 +200,6 @@
                 if (leftRole.getCmrField() != null) {
                     leftFieldName = leftRole.getCmrField().getCmrFieldName();
                 }
-                boolean leftCascade = leftRole.getCascadeDelete() != null;
                 boolean leftIsOne = leftRole.getMultiplicity() == Multiplicity.ONE;
 
                 EjbRelationshipRole rightRole = roles.get(1);
@@ -178,7 +210,6 @@
                 if (rightRole.getCmrField() != null) {
                     rightFieldName = rightRole.getCmrField().getCmrFieldName();
                 }
-                boolean rightCascade = rightRole.getCascadeDelete() != null;
                 boolean rightIsOne = rightRole.getMultiplicity() == Multiplicity.ONE;
 
                 if (leftIsOne && rightIsOne) {
@@ -191,11 +222,7 @@
                     if (leftFieldName != null) {
                         leftOneToOne = new OneToOne();
                         leftOneToOne.setName(leftFieldName);
-                        if (leftCascade) {
-                            CascadeType cascadeType = new CascadeType();
-                            cascadeType.setCascadeAll(true);
-                            leftOneToOne.setCascade(cascadeType);
-                        }
+                        setCascade(leftRole, leftOneToOne);
                         leftEntity.getAttributes().getOneToOne().add(leftOneToOne);
                     }
 
@@ -208,11 +235,7 @@
                         if (leftFieldName != null) {
                             rightOneToOne.setMappedBy(leftFieldName);
                         }
-                        if (rightCascade) {
-                            CascadeType cascadeType = new CascadeType();
-                            cascadeType.setCascadeAll(true);
-                            rightOneToOne.setCascade(cascadeType);
-                        }
+                        setCascade(rightRole, rightOneToOne);
                         rightEntity.getAttributes().getOneToOne().add(rightOneToOne);
                     }
 
@@ -235,11 +258,7 @@
                         if (rightFieldName != null) {
                             leftOneToMany.setMappedBy(rightFieldName);
                         }
-                        if (leftCascade) {
-                            CascadeType cascadeType = new CascadeType();
-                            cascadeType.setCascadeAll(true);
-                            leftOneToMany.setCascade(cascadeType);
-                        }
+                        setCascade(leftRole, leftOneToMany);
                         leftEntity.getAttributes().getOneToMany().add(leftOneToMany);
                     }
 
@@ -248,6 +267,7 @@
                     if (rightFieldName != null) {
                         rightManyToOne = new ManyToOne();
                         rightManyToOne.setName(rightFieldName);
+                        setCascade(rightRole, rightManyToOne);
                         rightEntity.getAttributes().getManyToOne().add(rightManyToOne);
                     }
 
@@ -266,6 +286,7 @@
                     if (leftFieldName != null) {
                         leftManyToOne = new ManyToOne();
                         leftManyToOne.setName(leftFieldName);
+                        setCascade(leftRole, leftManyToOne);
                         leftEntity.getAttributes().getManyToOne().add(leftManyToOne);
                     }
 
@@ -278,11 +299,7 @@
                         if (leftFieldName != null) {
                             rightOneToMany.setMappedBy(leftFieldName);
                         }
-                        if (rightCascade) {
-                            CascadeType cascadeType = new CascadeType();
-                            cascadeType.setCascadeAll(true);
-                            rightOneToMany.setCascade(cascadeType);
-                        }
+                        setCascade(rightRole, rightOneToMany);
                         rightEntity.getAttributes().getOneToMany().add(rightOneToMany);
                     }
 
@@ -301,11 +318,7 @@
                     if (leftFieldName != null) {
                         leftManyToMany = new ManyToMany();
                         leftManyToMany.setName(leftFieldName);
-                        if (leftCascade) {
-                            CascadeType cascadeType = new CascadeType();
-                            cascadeType.setCascadeAll(true);
-                            leftManyToMany.setCascade(cascadeType);
-                        }
+                        setCascade(leftRole, leftManyToMany);
                         leftEntity.getAttributes().getManyToMany().add(leftManyToMany);
                     }
 
@@ -318,11 +331,7 @@
                         if (leftFieldName != null) {
                             rightManyToMany.setMappedBy(leftFieldName);
                         }
-                        if (rightCascade) {
-                            CascadeType cascadeType = new CascadeType();
-                            cascadeType.setCascadeAll(true);
-                            rightManyToMany.setCascade(cascadeType);
-                        }
+                        setCascade(rightRole, rightManyToMany);
                         rightEntity.getAttributes().getManyToMany().add(rightManyToMany);
                     }
 
@@ -342,36 +351,14 @@
         return entityMappings;
     }
 
-    private <T> void marshalAndUnmarshal(Class<T> type, String xmlFileName) throws JAXBException, IOException {
-        JAXBContext ctx = JAXBContext.newInstance(type);
-        Unmarshaller unmarshaller = ctx.createUnmarshaller();
-
-        InputStream in = this.getClass().getClassLoader().getResourceAsStream(xmlFileName);
-        String expected = readContent(in);
-
-        Object object = unmarshaller.unmarshal(new ByteArrayInputStream(expected.getBytes()));
-//        JAXBElement element =  (JAXBElement) object;
-        unmarshaller.setEventHandler(new TestValidationEventHandler());
-//        T app = (T) element.getValue();
-//        System.out.println("unmarshalled");
-
-        Marshaller marshaller = ctx.createMarshaller();
-        marshaller.setProperty("jaxb.formatted.output", true);
-
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        marshaller.marshal(object, baos);
-
-        String actual = new String(baos.toByteArray());
-
-        assertEquals(expected, actual);
-    }
-
-    private static class TestValidationEventHandler implements ValidationEventHandler {
-        public boolean handleEvent(ValidationEvent validationEvent) {
-            System.out.println(validationEvent.getMessage());
-            return true;
+    private void setCascade(EjbRelationshipRole role, RelationField field) {
+        if (role.getCascadeDelete()) {
+            CascadeType cascadeType = new CascadeType();
+            cascadeType.setCascadeAll(true);
+            field.setCascade(cascadeType);
         }
     }
+
     private String readContent(InputStream in) throws IOException {
         StringBuffer sb = new StringBuffer();
         in = new BufferedInputStream(in);
@@ -380,7 +367,7 @@
             sb.append((char) i);
             i = in.read();
         }
-        return sb.toString();
+        return sb.toString().trim();
     }
 
 }

Modified: incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/java/org/apache/openejb/jee/jpa/OpenEjb2CmpConversion.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/java/org/apache/openejb/jee/jpa/OpenEjb2CmpConversion.java?view=diff&rev=500087&r1=500086&r2=500087
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/java/org/apache/openejb/jee/jpa/OpenEjb2CmpConversion.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/java/org/apache/openejb/jee/jpa/OpenEjb2CmpConversion.java Thu Jan 25 17:57:12 2007
@@ -106,7 +106,13 @@
                     field = other.getRelatedField();
                     // todo warn field not found
                     if (field == null) {
-                        continue;
+                        if (other instanceof OneToMany) {
+                            // for a unidirectional oneToMany, the join column declaration
+                            // is placed on the oneToMany element instead of manyToOne 
+                            field = other;
+                        } else {
+                            continue;
+                        }
                     }
                 }
 
@@ -163,29 +169,33 @@
                 if (roles.size() > 1) {
                     EjbRelationshipRoleType rightRole = roles.get(1);
 
-                    RelationField right = left.getRelatedField();
-                    if (right == null) {
-                        if (rightRole.getRelationshipRoleSource() != null) {
-                            String rightEjbName = rightRole.getRelationshipRoleSource().getEjbName();
-                            EntityData rightEntityData = entities.get(rightEjbName);
-                            if (rightEntityData == null) {
-                                // todo warn no such entity in ejb-jar.xml
+                    // if there wasn't a left cmr field, find the field for the right, so we can add the join table to it
+                    if (left == null) {
+                        RelationField right = left.getRelatedField();
+                        if (right == null) {
+                            if (rightRole.getCmrField() == null) {
+                                // todo warn no cmr field declared for either role
                                 continue;
                             }
-                            right = rightEntityData.relations.get(rightRole.getCmrField().getCmrFieldName());
+                            if (rightRole.getRelationshipRoleSource() != null) {
+                                String rightEjbName = rightRole.getRelationshipRoleSource().getEjbName();
+                                EntityData rightEntityData = entities.get(rightEjbName);
+                                if (rightEntityData == null) {
+                                    // todo warn no such entity in ejb-jar.xml
+                                    continue;
+                                }
+                                right = rightEntityData.relations.get(rightRole.getCmrField().getCmrFieldName());
+                            }
                         }
+                        right.setJoinTable(joinTable);
                     }
-                    if (right != null) {
-                        if (left == null) {
-                            right.setJoinTable(joinTable);
-                        }
-                        EjbRelationshipRoleType.RoleMapping roleMapping = rightRole.getRoleMapping();
-                        for (EjbRelationshipRoleType.RoleMapping.CmrFieldMapping cmrFieldMapping : roleMapping.getCmrFieldMapping()) {
-                            JoinColumn joinColumn = new JoinColumn();
-                            joinColumn.setName(cmrFieldMapping.getForeignKeyColumn());
-                            joinColumn.setReferencedColumnName(cmrFieldMapping.getKeyColumn());
-                            joinTable.getInverseJoinColumn().add(joinColumn);
-                        }
+
+                    EjbRelationshipRoleType.RoleMapping roleMapping = rightRole.getRoleMapping();
+                    for (EjbRelationshipRoleType.RoleMapping.CmrFieldMapping cmrFieldMapping : roleMapping.getCmrFieldMapping()) {
+                        JoinColumn joinColumn = new JoinColumn();
+                        joinColumn.setName(cmrFieldMapping.getForeignKeyColumn());
+                        joinColumn.setReferencedColumnName(cmrFieldMapping.getKeyColumn());
+                        joinTable.getInverseJoinColumn().add(joinColumn);
                     }
                 }
             }
@@ -193,10 +203,10 @@
     }
 
     private class EntityData {
-        public final Entity entity;
+        private final Entity entity;
         private final Id id;
-        public final Map<String, Basic> fields = new TreeMap<String, Basic>();
-        public final Map<String, RelationField> relations = new TreeMap<String, RelationField>();
+        private final Map<String, Basic> fields = new TreeMap<String, Basic>();
+        private final Map<String, RelationField> relations = new TreeMap<String, RelationField>();
 
         public EntityData(Entity entity) {
             this.entity = entity;

Modified: incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/daytrader-ejb-jar.xml
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/daytrader-ejb-jar.xml?view=diff&rev=500087&r1=500086&r2=500087
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/daytrader-ejb-jar.xml (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/daytrader-ejb-jar.xml Thu Jan 25 17:57:12 2007
@@ -15,10 +15,9 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 -->
-<!--<ejb-jar version="2.1"-->
-    <!--xmlns="http://java.sun.com/xml/ns/j2ee"-->
-    <!--xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd"> -->
-<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee" version="3.0" metadata-complete="true">
+<ejb-jar version="2.1"
+    xmlns="http://java.sun.com/xml/ns/j2ee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd">
     <display-name>TradeEJBs</display-name>
     <enterprise-beans>
         <session>

Added: incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/daytrader-orm.xml
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/daytrader-orm.xml?view=auto&rev=500087
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/daytrader-orm.xml (added)
+++ incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/daytrader-orm.xml Thu Jan 25 17:57:12 2007
@@ -0,0 +1,179 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm">
+    <entity name="Holding" class="org.apache.geronimo.samples.daytrader.ejb.HoldingBean">
+        <description>HoldingEJB</description>
+        <table name="HOLDINGEJB"/>
+        <attributes>
+            <id name="holdingID">
+                <column name="holdingID"/>
+            </id>
+            <basic name="purchasePrice">
+                <column name="purchasePrice"/>
+            </basic>
+            <basic name="quantity">
+                <column name="quantity"/>
+            </basic>
+            <basic name="purchaseDate">
+                <column name="purchaseDate"/>
+            </basic>
+            <many-to-one name="account">
+                <join-column referenced-column-name="accountID" name="account_accountID"/>
+                <cascade>
+                    <cascade-all/>
+                </cascade>
+            </many-to-one>
+            <many-to-one name="quote">
+                <join-column referenced-column-name="symbol" name="quote_symbol"/>
+            </many-to-one>
+        </attributes>
+    </entity>
+    <entity name="AccountProfile" class="org.apache.geronimo.samples.daytrader.ejb.AccountProfileBean">
+        <description>AccountProfileEJB</description>
+        <table name="AccountProfileEJB"/>
+        <attributes>
+            <id name="userID">
+                <column name="userID"/>
+            </id>
+            <basic name="address">
+                <column name="address"/>
+            </basic>
+            <basic name="passwd">
+                <column name="passwd"/>
+            </basic>
+            <basic name="email">
+                <column name="email"/>
+            </basic>
+            <basic name="creditCard">
+                <column name="creditCard"/>
+            </basic>
+            <basic name="fullName">
+                <column name="fullName"/>
+            </basic>
+            <one-to-one name="account" mapped-by="profile">
+                <cascade>
+                    <cascade-all/>
+                </cascade>
+            </one-to-one>
+        </attributes>
+    </entity>
+    <entity name="Quote" class="org.apache.geronimo.samples.daytrader.ejb.QuoteBean">
+        <description>QuoteEJB</description>
+        <table name="QuoteEJB"/>
+        <attributes>
+            <id name="symbol">
+                <column name="symbol"/>
+            </id>
+            <basic name="low">
+                <column name="low"/>
+            </basic>
+            <basic name="open">
+                <column name="open1"/>
+            </basic>
+            <basic name="volume">
+                <column name="volume"/>
+            </basic>
+            <basic name="price">
+                <column name="price"/>
+            </basic>
+            <basic name="high">
+                <column name="high"/>
+            </basic>
+            <basic name="companyName">
+                <column name="companyName"/>
+            </basic>
+            <basic name="change">
+                <column name="change1"/>
+            </basic>
+            <one-to-many name="orders" mapped-by="quote"/>
+        </attributes>
+    </entity>
+    <entity name="KeyGen" class="org.apache.geronimo.samples.daytrader.ejb.KeyGenBean">
+        <description>KeyGenEJB</description>
+        <table name="KeyGenEJB"/>
+        <attributes>
+            <id name="keyName">
+                <column name="keyName"/>
+            </id>
+            <basic name="keyVal">
+                <column name="keyVal"/>
+            </basic>
+        </attributes>
+    </entity>
+    <entity name="Account" class="org.apache.geronimo.samples.daytrader.ejb.AccountBean">
+        <description>AccountEJB</description>
+        <table name="AccountEJB"/>
+        <attributes>
+            <id name="accountID">
+                <column name="accountID"/>
+            </id>
+            <basic name="creationDate">
+                <column name="creationDate"/>
+            </basic>
+            <basic name="openBalance">
+                <column name="openBalance"/>
+            </basic>
+            <basic name="logoutCount">
+                <column name="logoutCount"/>
+            </basic>
+            <basic name="balance">
+                <column name="balance"/>
+            </basic>
+            <basic name="lastLogin">
+                <column name="lastLogin"/>
+            </basic>
+            <basic name="loginCount">
+                <column name="loginCount"/>
+            </basic>
+            <one-to-many name="orders" mapped-by="account"/>
+            <one-to-many name="holdings" mapped-by="account"/>
+            <one-to-one name="profile">
+                <join-column referenced-column-name="userID" name="profile_userID"/>
+            </one-to-one>
+        </attributes>
+    </entity>
+    <entity name="Orders" class="org.apache.geronimo.samples.daytrader.ejb.OrderBean">
+        <description>OrderEJB</description>
+        <table name="OrderEJB"/>
+        <attributes>
+            <id name="orderID">
+                <column name="orderID"/>
+            </id>
+            <basic name="orderFee">
+                <column name="orderFee"/>
+            </basic>
+            <basic name="completionDate">
+                <column name="completionDate"/>
+            </basic>
+            <basic name="orderType">
+                <column name="orderType"/>
+            </basic>
+            <basic name="orderStatus">
+                <column name="orderStatus"/>
+            </basic>
+            <basic name="price">
+                <column name="price"/>
+            </basic>
+            <basic name="quantity">
+                <column name="quantity"/>
+            </basic>
+            <basic name="openDate">
+                <column name="openDate"/>
+            </basic>
+            <many-to-one name="account">
+                <join-column referenced-column-name="accountID" name="account_accountID"/>
+                <cascade>
+                    <cascade-all/>
+                </cascade>
+            </many-to-one>
+            <many-to-one name="quote">
+                <join-column referenced-column-name="symbol" name="quote_symbol"/>
+                <cascade>
+                    <cascade-all/>
+                </cascade>
+            </many-to-one>
+            <one-to-one name="holding">
+                <join-column referenced-column-name="holdingID" name="holding_holdingID"/>
+            </one-to-one>
+        </attributes>
+    </entity>
+</entity-mappings>

Copied: incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/itest-2.2-ejb-jar.xml (from r500066, incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/itest-ejb-jar-2.2.xml)
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/itest-2.2-ejb-jar.xml?view=diff&rev=500087&p1=incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/itest-ejb-jar-2.2.xml&r1=500066&p2=incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/itest-2.2-ejb-jar.xml&r2=500087
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/itest-ejb-jar-2.2.xml (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/itest-2.2-ejb-jar.xml Thu Jan 25 17:57:12 2007
@@ -16,12 +16,11 @@
     limitations under the License.
 -->
 
-<!--<ejb-jar xmlns="http://java.sun.com/xml/ns/j2ee"-->
-    <!--xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"-->
-    <!--xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee-->
-    <!--http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd"-->
-    <!--version="2.1">-->
-<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee" version="3.0" metadata-complete="true">
+<ejb-jar xmlns="http://java.sun.com/xml/ns/j2ee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
+    http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd"
+    version="2.1">
 
     <description>
         This ejb-jar file contains assembled enterprise beans that are

Added: incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/itest-2.2-orm.xml
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/itest-2.2-orm.xml?view=auto&rev=500087
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/itest-2.2-orm.xml (added)
+++ incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/itest-2.2-orm.xml Thu Jan 25 17:57:12 2007
@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm">
+    <entity name="BasicCmpBean" class="org.apache.openejb.test.entity.cmp.BasicCmpBean">
+        <description>BasicCmpBean</description>
+        <table name="entity"/>
+        <attributes>
+            <id name="id">
+                <column name="id"/>
+                <generated-value generator="IDENTITY"/>
+            </id>
+            <basic name="firstName">
+                <column name="first_name"/>
+            </basic>
+            <basic name="lastName">
+                <column name="last_name"/>
+            </basic>
+        </attributes>
+    </entity>
+    <entity name="BasicCmpBeanExplicitPK" class="org.apache.openejb.test.entity.cmp.BasicCmpBean">
+        <description>BasicCmpBeanExplicitPK</description>
+        <table name="entity_explicit_pk"/>
+        <attributes>
+            <id name="id">
+                <column name="id"/>
+            </id>
+            <basic name="firstName">
+                <column name="first_name"/>
+            </basic>
+            <basic name="lastName">
+                <column name="last_name"/>
+            </basic>
+        </attributes>
+    </entity>
+    <entity name="AOBasicCmpBean" class="org.apache.openejb.test.entity.cmp.AllowedOperationsCmpBean">
+        <description>AOBasicCmpBean</description>
+        <table name="entity"/>
+        <attributes>
+            <id name="id">
+                <column name="id"/>
+                <generated-value generator="IDENTITY"/>
+            </id>
+            <basic name="firstName">
+                <column name="first_name"/>
+            </basic>
+            <basic name="lastName">
+                <column name="last_name"/>
+            </basic>
+        </attributes>
+    </entity>
+    <entity name="EncCmpBean" class="org.apache.openejb.test.entity.cmp.EncCmpBean">
+        <description>EncCmpBean</description>
+        <table name="entity"/>
+        <attributes>
+            <id name="id">
+                <column name="id"/>
+                <generated-value generator="IDENTITY"/>
+            </id>
+            <basic name="firstName">
+                <column name="first_name"/>
+            </basic>
+            <basic name="lastName">
+                <column name="last_name"/>
+            </basic>
+        </attributes>
+    </entity>
+    <entity name="CmpRMIIIOPBean" class="org.apache.openejb.test.entity.cmp.RmiIiopCmpBean">
+        <description>CmpRMIIIOPBean</description>
+        <table name="entity"/>
+        <attributes>
+            <id name="id">
+                <column name="id"/>
+                <generated-value generator="IDENTITY"/>
+            </id>
+            <basic name="firstName">
+                <column name="first_name"/>
+            </basic>
+            <basic name="lastName">
+                <column name="last_name"/>
+            </basic>
+        </attributes>
+    </entity>
+    <entity name="BasicCmp2" class="org.apache.openejb.test.entity.cmp.BasicCmp2Bean">
+        <description>BasicCmp2Bean</description>
+        <table name="entity"/>
+        <attributes>
+            <id name="id">
+                <column name="id"/>
+                <generated-value generator="IDENTITY"/>
+            </id>
+            <basic name="firstName">
+                <column name="first_name"/>
+            </basic>
+            <basic name="lastName">
+                <column name="last_name"/>
+            </basic>
+        </attributes>
+    </entity>
+    <entity name="AOBasicCmp2" class="org.apache.openejb.test.entity.cmp.AllowedOperationsCmp2Bean">
+        <description>AOBasicCmp2Bean</description>
+        <table name="entity"/>
+        <attributes>
+            <id name="id">
+                <column name="id"/>
+                <generated-value generator="IDENTITY"/>
+            </id>
+            <basic name="firstName">
+                <column name="first_name"/>
+            </basic>
+            <basic name="lastName">
+                <column name="last_name"/>
+            </basic>
+        </attributes>
+    </entity>
+    <entity name="EncCmp2" class="org.apache.openejb.test.entity.cmp.EncCmp2Bean">
+        <description>EncCmp2Bean</description>
+        <table name="entity"/>
+        <attributes>
+            <id name="id">
+                <column name="id"/>
+                <generated-value generator="IDENTITY"/>
+            </id>
+            <basic name="firstName">
+                <column name="first_name"/>
+            </basic>
+            <basic name="lastName">
+                <column name="last_name"/>
+            </basic>
+        </attributes>
+    </entity>
+    <entity name="Cmp2RmiIiop" class="org.apache.openejb.test.entity.cmp.RmiIiopCmp2Bean">
+        <description>Cmp2RMIIIOPBean</description>
+        <table name="entity"/>
+        <attributes>
+            <id name="id">
+                <column name="id"/>
+                <generated-value generator="IDENTITY"/>
+            </id>
+            <basic name="firstName">
+                <column name="first_name"/>
+            </basic>
+            <basic name="lastName">
+                <column name="last_name"/>
+            </basic>
+        </attributes>
+    </entity>
+    <entity name="Order" class="org.apache.openejb.test.entity.cmp2.cmrmapping.OneOwningSideBean">
+        <description>OneOwningSideBean</description>
+        <table name="OneOwning"/>
+        <attributes>
+            <id/>
+            <basic name="id">
+                <column name="col_id"/>
+            </basic>
+            <basic name="field1">
+                <column name="col_field1"/>
+            </basic>
+            <one-to-one name="oneInverseSide">
+                <join-column referenced-column-name="col_id" name="col_field1"/>
+            </one-to-one>
+        </attributes>
+    </entity>
+    <entity name="Order" class="org.apache.openejb.test.entity.cmp2.cmrmapping.OneInverseSideBean">
+        <description>OneInverseSideBean</description>
+        <table name="OneInverse"/>
+        <attributes>
+            <id name="id">
+                <column name="col_id"/>
+            </id>
+            <one-to-many name="manyOwningSide" mapped-by="oneInverseSide"/>
+            <one-to-one name="oneOwningSide" mapped-by="oneInverseSide"/>
+        </attributes>
+    </entity>
+    <entity name="Order" class="org.apache.openejb.test.entity.cmp2.cmrmapping.ManyOwningSideBean">
+        <description>ManyOwningSideBean</description>
+        <table name="ManyOwning"/>
+        <attributes>
+            <id/>
+            <basic name="id">
+                <column name="col_id"/>
+            </basic>
+            <basic name="field1">
+                <column name="col_field1"/>
+            </basic>
+            <many-to-one name="oneInverseSide">
+                <join-column referenced-column-name="col_id" name="col_field1"/>
+            </many-to-one>
+        </attributes>
+    </entity>
+    <entity name="Address" class="org.apache.openejb.test.entity.cmp2.petstore.AddressEJB">
+        <description>AddressEJB</description>
+        <table name="address"/>
+        <attributes>
+            <id/>
+            <basic name="street">
+                <column name="street"/>
+            </basic>
+            <basic name="city">
+                <column name="city"/>
+            </basic>
+        </attributes>
+    </entity>
+    <entity name="Storage" class="org.apache.openejb.test.entity.cmp2.model.StorageBean">
+        <description>StorageBean</description>
+        <table name="storage"/>
+        <attributes>
+            <id name="id">
+                <column name="id"/>
+            </id>
+            <basic name="blob">
+                <column name="blob_column"/>
+            </basic>
+            <basic name="char">
+                <column name="char_column"/>
+            </basic>
+        </attributes>
+    </entity>
+</entity-mappings>

Added: incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/manytomany/simplepk/orm.xml
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/manytomany/simplepk/orm.xml?view=auto&rev=500087
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/manytomany/simplepk/orm.xml (added)
+++ incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/manytomany/simplepk/orm.xml Thu Jan 25 17:57:12 2007
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm">
+    <entity name="manytomanyA" class="org.apache.openejb.deployment.entity.cmp.cmr.manytomany.ABean">
+        <description>A</description>
+        <table name="A"/>
+        <attributes>
+            <id name="field1">
+                <column name="a1"/>
+            </id>
+            <basic name="field2">
+                <column name="a2"/>
+            </basic>
+            <many-to-many name="b">
+                <join-table name="MTM">
+                    <join-column referenced-column-name="a1" name="fka1"/>
+                    <inverse-join-column referenced-column-name="b1" name="fkb1"/>
+                </join-table>
+            </many-to-many>
+        </attributes>
+    </entity>
+    <entity name="manytomanyB" class="org.apache.openejb.deployment.entity.cmp.cmr.manytomany.BBean">
+        <description>B</description>
+        <table name="B"/>
+        <attributes>
+            <id name="field1">
+                <column name="b1"/>
+            </id>
+            <basic name="field2">
+                <column name="b2"/>
+            </basic>
+            <basic name="field3">
+                <column name="fka1"/>
+            </basic>
+            <many-to-many name="a" mapped-by="b"/>
+        </attributes>
+    </entity>
+</entity-mappings>

Added: incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/manytomany/simplepk/unidirectional-ejb-jar.xml
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/manytomany/simplepk/unidirectional-ejb-jar.xml?view=auto&rev=500087
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/manytomany/simplepk/unidirectional-ejb-jar.xml (added)
+++ incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/manytomany/simplepk/unidirectional-ejb-jar.xml Thu Jan 25 17:57:12 2007
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<!--
+    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.
+-->
+
+<ejb-jar xmlns="http://java.sun.com/xml/ns/j2ee"
+	      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	      xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
+		  http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd"
+	      version="2.1">
+
+    <enterprise-beans>
+        <entity>
+            <ejb-name>A</ejb-name>
+            <local-home>org.apache.openejb.deployment.entity.cmp.cmr.manytomany.ALocalHome</local-home>
+            <local>org.apache.openejb.deployment.entity.cmp.cmr.manytomany.ALocal</local>
+            <ejb-class>org.apache.openejb.deployment.entity.cmp.cmr.manytomany.ABean</ejb-class>
+            <persistence-type>Container</persistence-type>
+            <prim-key-class>java.lang.Integer</prim-key-class>
+            <reentrant>false</reentrant>
+            <cmp-version>2.x</cmp-version>
+            <abstract-schema-name>manytomanyA</abstract-schema-name>
+            <cmp-field>
+                <field-name>field1</field-name>
+            </cmp-field>
+            <cmp-field>
+                <field-name>field2</field-name>
+            </cmp-field>
+            <primkey-field>field1</primkey-field>
+            <query>
+                <!-- CompondPK one-to-many shares the local home interface so we need to declare this useless finder -->
+                <query-method>
+                    <method-name>findByPrimaryKey</method-name>
+                    <method-params>
+                        <method-param>org.apache.openejb.deployment.entity.cmp.cmr.CompoundPK</method-param>
+                    </method-params>
+                </query-method>
+                <ejb-ql>SELECT OBJECT(A) FROM manytomanyA A</ejb-ql>
+            </query>
+        </entity>
+        <entity>
+            <ejb-name>B</ejb-name>
+            <local-home>org.apache.openejb.deployment.entity.cmp.cmr.manytomany.BLocalHome</local-home>
+            <local>org.apache.openejb.deployment.entity.cmp.cmr.manytomany.BLocal</local>
+            <ejb-class>org.apache.openejb.deployment.entity.cmp.cmr.manytomany.BBean</ejb-class>
+            <persistence-type>Container</persistence-type>
+            <prim-key-class>java.lang.Integer</prim-key-class>
+            <reentrant>false</reentrant>
+            <cmp-version>2.x</cmp-version>
+            <abstract-schema-name>manytomanyB</abstract-schema-name>
+            <cmp-field>
+                <field-name>field1</field-name>
+            </cmp-field>
+            <cmp-field>
+                <field-name>field2</field-name>
+            </cmp-field>
+            <cmp-field>
+                <field-name>field3</field-name>
+            </cmp-field>
+            <primkey-field>field1</primkey-field>
+        </entity>
+    </enterprise-beans>
+    <relationships>
+        <ejb-relation>
+            <ejb-relation-name>relation</ejb-relation-name>
+            <ejb-relationship-role>
+                <ejb-relationship-role-name>ASide</ejb-relationship-role-name>
+                <multiplicity>Many</multiplicity>
+                <relationship-role-source>
+                    <ejb-name>A</ejb-name>
+                </relationship-role-source>
+                <cmr-field>
+                    <cmr-field-name>b</cmr-field-name>
+                </cmr-field>
+            </ejb-relationship-role>
+            <ejb-relationship-role>
+                <ejb-relationship-role-name>BSide</ejb-relationship-role-name>
+                <multiplicity>Many</multiplicity>
+                <relationship-role-source>
+                    <ejb-name>B</ejb-name>
+                </relationship-role-source>
+            </ejb-relationship-role>
+        </ejb-relation>
+    </relationships>
+    <assembly-descriptor>
+        <container-transaction>
+            <method>
+                <ejb-name>A</ejb-name>
+                <method-name>*</method-name>
+            </method>
+            <trans-attribute>Required</trans-attribute>
+        </container-transaction>
+        <container-transaction>
+            <method>
+                <ejb-name>B</ejb-name>
+                <method-name>*</method-name>
+            </method>
+            <trans-attribute>Required</trans-attribute>
+        </container-transaction>
+    </assembly-descriptor>
+
+</ejb-jar>

Added: incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/manytomany/simplepk/unidirectional-orm.xml
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/manytomany/simplepk/unidirectional-orm.xml?view=auto&rev=500087
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/manytomany/simplepk/unidirectional-orm.xml (added)
+++ incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/manytomany/simplepk/unidirectional-orm.xml Thu Jan 25 17:57:12 2007
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm">
+    <entity name="manytomanyA" class="org.apache.openejb.deployment.entity.cmp.cmr.manytomany.ABean">
+        <description>A</description>
+        <table name="A"/>
+        <attributes>
+            <id name="field1">
+                <column name="a1"/>
+            </id>
+            <basic name="field2">
+                <column name="a2"/>
+            </basic>
+            <many-to-many name="b">
+                <join-table name="MTM">
+                    <join-column referenced-column-name="a1" name="fka1"/>
+                    <inverse-join-column referenced-column-name="b1" name="fkb1"/>
+                </join-table>
+            </many-to-many>
+        </attributes>
+    </entity>
+    <entity name="manytomanyB" class="org.apache.openejb.deployment.entity.cmp.cmr.manytomany.BBean">
+        <description>B</description>
+        <table name="B"/>
+        <attributes>
+            <id name="field1">
+                <column name="b1"/>
+            </id>
+            <basic name="field2">
+                <column name="b2"/>
+            </basic>
+            <basic name="field3">
+                <column name="fka1"/>
+            </basic>
+        </attributes>
+    </entity>
+</entity-mappings>

Modified: incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetomany/simplepk/ejb-jar.xml
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetomany/simplepk/ejb-jar.xml?view=diff&rev=500087&r1=500086&r2=500087
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetomany/simplepk/ejb-jar.xml (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetomany/simplepk/ejb-jar.xml Thu Jan 25 17:57:12 2007
@@ -99,6 +99,7 @@
             <ejb-relationship-role>
                 <ejb-relationship-role-name>BSide</ejb-relationship-role-name>
                 <multiplicity>Many</multiplicity>
+                <cascade-delete/>
                 <relationship-role-source>
                     <ejb-name>B</ejb-name>
                 </relationship-role-source>

Added: incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetomany/simplepk/many-unidirectional-ejb-jar.xml
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetomany/simplepk/many-unidirectional-ejb-jar.xml?view=auto&rev=500087
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetomany/simplepk/many-unidirectional-ejb-jar.xml (added)
+++ incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetomany/simplepk/many-unidirectional-ejb-jar.xml Thu Jan 25 17:57:12 2007
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<!--
+    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.
+-->
+
+<ejb-jar xmlns="http://java.sun.com/xml/ns/j2ee"
+	      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	      xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
+		  http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd"
+	      version="2.1">
+
+    <enterprise-beans>
+        <entity>
+            <ejb-name>A</ejb-name>
+            <local-home>org.apache.openejb.deployment.entity.cmp.cmr.onetomany.ALocalHome</local-home>
+            <local>org.apache.openejb.deployment.entity.cmp.cmr.onetomany.ALocal</local>
+            <ejb-class>org.apache.openejb.deployment.entity.cmp.cmr.onetomany.ABean</ejb-class>
+            <persistence-type>Container</persistence-type>
+            <prim-key-class>java.lang.Integer</prim-key-class>
+            <reentrant>false</reentrant>
+            <cmp-version>2.x</cmp-version>
+            <abstract-schema-name>onetomanyA</abstract-schema-name>
+            <cmp-field>
+                <field-name>field1</field-name>
+            </cmp-field>
+            <cmp-field>
+                <field-name>field2</field-name>
+            </cmp-field>
+            <primkey-field>field1</primkey-field>
+            <query>
+                <!-- CompondPK one-to-many shares the local home interface so we need to declare this useless finder -->
+                <query-method>
+                    <method-name>findByPrimaryKey</method-name>
+                    <method-params>
+                        <method-param>org.apache.openejb.deployment.entity.cmp.cmr.CompoundPK</method-param>
+                    </method-params>
+                </query-method>
+                <ejb-ql>SELECT OBJECT(A) FROM onetomanyA A</ejb-ql>
+            </query>
+        </entity>
+        <entity>
+            <ejb-name>B</ejb-name>
+            <local-home>org.apache.openejb.deployment.entity.cmp.cmr.onetomany.BLocalHome</local-home>
+            <local>org.apache.openejb.deployment.entity.cmp.cmr.onetomany.BLocal</local>
+            <ejb-class>org.apache.openejb.deployment.entity.cmp.cmr.onetomany.BBean</ejb-class>
+            <persistence-type>Container</persistence-type>
+            <prim-key-class>java.lang.Integer</prim-key-class>
+            <reentrant>false</reentrant>
+            <cmp-version>2.x</cmp-version>
+            <abstract-schema-name>onetomanyB</abstract-schema-name>
+            <cmp-field>
+                <field-name>field1</field-name>
+            </cmp-field>
+            <cmp-field>
+                <field-name>field2</field-name>
+            </cmp-field>
+            <cmp-field>
+                <field-name>field3</field-name>
+            </cmp-field>
+            <primkey-field>field1</primkey-field>
+            <query>
+                <!-- CompondPK one-to-many shares the local home interface so we need to declare this useless finder -->
+                <query-method>
+                    <method-name>findByPrimaryKey</method-name>
+                    <method-params>
+                        <method-param>org.apache.openejb.deployment.entity.cmp.cmr.CompoundPK</method-param>
+                    </method-params>
+                </query-method>
+                <ejb-ql>SELECT OBJECT(B) FROM onetomanyB B</ejb-ql>
+            </query>
+        </entity>
+    </enterprise-beans>
+    <relationships>
+        <ejb-relation>
+            <ejb-relation-name>relation</ejb-relation-name>
+            <ejb-relationship-role>
+                <ejb-relationship-role-name>ASide</ejb-relationship-role-name>
+                <multiplicity>One</multiplicity>
+                <relationship-role-source>
+                    <ejb-name>A</ejb-name>
+                </relationship-role-source>
+            </ejb-relationship-role>
+            <ejb-relationship-role>
+                <ejb-relationship-role-name>BSide</ejb-relationship-role-name>
+                <multiplicity>Many</multiplicity>
+                <cascade-delete/>
+                <relationship-role-source>
+                    <ejb-name>B</ejb-name>
+                </relationship-role-source>
+                <cmr-field>
+                    <cmr-field-name>a</cmr-field-name>
+                </cmr-field>
+            </ejb-relationship-role>
+        </ejb-relation>
+    </relationships>
+    <assembly-descriptor>
+        <container-transaction>
+            <method>
+                <ejb-name>A</ejb-name>
+                <method-name>*</method-name>
+            </method>
+            <trans-attribute>Required</trans-attribute>
+        </container-transaction>
+        <container-transaction>
+            <method>
+                <ejb-name>B</ejb-name>
+                <method-name>*</method-name>
+            </method>
+            <trans-attribute>Required</trans-attribute>
+        </container-transaction>
+    </assembly-descriptor>
+
+</ejb-jar>

Added: incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetomany/simplepk/many-unidirectional-openejb-jar.xml
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetomany/simplepk/many-unidirectional-openejb-jar.xml?view=auto&rev=500087
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetomany/simplepk/many-unidirectional-openejb-jar.xml (added)
+++ incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetomany/simplepk/many-unidirectional-openejb-jar.xml Thu Jan 25 17:57:12 2007
@@ -0,0 +1,87 @@
+<?xml version="1.0"?>
+<!--
+    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.
+-->
+
+<openejb-jar xmlns="http://www.openejb.org/xml/ns/openejb-jar-2.1">
+
+    <environment>
+        <moduleId>
+            <groupId>foo</groupId>
+            <artifactId>bar</artifactId>
+            <version>1</version>
+            <type>car</type>
+        </moduleId>
+    </environment>
+
+    <cmp-connection-factory>
+        <resource-link>DefaultDatasource</resource-link>
+    </cmp-connection-factory>
+
+    <enterprise-beans>
+        <entity>
+            <ejb-name>A</ejb-name>
+            <table-name>A</table-name>
+            <cmp-field-mapping>
+                <cmp-field-name>field1</cmp-field-name>
+                <table-column>a1</table-column>
+            </cmp-field-mapping>
+            <cmp-field-mapping>
+                <cmp-field-name>field2</cmp-field-name>
+                <table-column>a2</table-column>
+            </cmp-field-mapping>
+        </entity>
+        <entity>
+            <ejb-name>B</ejb-name>
+            <table-name>B</table-name>
+            <cmp-field-mapping>
+                <cmp-field-name>field1</cmp-field-name>
+                <table-column>b1</table-column>
+            </cmp-field-mapping>
+            <cmp-field-mapping>
+                <cmp-field-name>field2</cmp-field-name>
+                <table-column>b2</table-column>
+            </cmp-field-mapping>
+            <cmp-field-mapping>
+                <cmp-field-name>field3</cmp-field-name>
+                <table-column>fka1</table-column>
+            </cmp-field-mapping>
+        </entity>
+    </enterprise-beans>
+
+    <relationships>
+        <ejb-relation>
+            <ejb-relation-name>relation</ejb-relation-name>
+            <ejb-relationship-role>
+                <ejb-relationship-role-name>BSide</ejb-relationship-role-name>
+                <relationship-role-source>
+                    <ejb-name>B</ejb-name>
+                </relationship-role-source>
+                <cmr-field>
+                    <cmr-field-name>a</cmr-field-name>
+                </cmr-field>
+                <foreign-key-column-on-source/>
+                <role-mapping>
+                    <cmr-field-mapping>
+                        <key-column>a1</key-column>
+                        <foreign-key-column>fka1</foreign-key-column>
+                    </cmr-field-mapping>
+                </role-mapping>
+            </ejb-relationship-role>
+        </ejb-relation>
+    </relationships>
+
+</openejb-jar>

Propchange: incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetomany/simplepk/many-unidirectional-openejb-jar.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetomany/simplepk/many-unidirectional-openejb-jar.xml
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetomany/simplepk/many-unidirectional-orm.xml
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetomany/simplepk/many-unidirectional-orm.xml?view=auto&rev=500087
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetomany/simplepk/many-unidirectional-orm.xml (added)
+++ incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetomany/simplepk/many-unidirectional-orm.xml Thu Jan 25 17:57:12 2007
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm">
+    <entity name="onetomanyA" class="org.apache.openejb.deployment.entity.cmp.cmr.onetomany.ABean">
+        <description>A</description>
+        <table name="A"/>
+        <attributes>
+            <id name="field1">
+                <column name="a1"/>
+            </id>
+            <basic name="field2">
+                <column name="a2"/>
+            </basic>
+        </attributes>
+    </entity>
+    <entity name="onetomanyB" class="org.apache.openejb.deployment.entity.cmp.cmr.onetomany.BBean">
+        <description>B</description>
+        <table name="B"/>
+        <attributes>
+            <id name="field1">
+                <column name="b1"/>
+            </id>
+            <basic name="field2">
+                <column name="b2"/>
+            </basic>
+            <basic name="field3">
+                <column name="fka1"/>
+            </basic>
+            <many-to-one name="a">
+                <join-column referenced-column-name="a1" name="fka1"/>
+                <cascade>
+                    <cascade-all/>
+                </cascade>
+            </many-to-one>
+        </attributes>
+    </entity>
+</entity-mappings>

Added: incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetomany/simplepk/one-unidirectional-ejb-jar.xml
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetomany/simplepk/one-unidirectional-ejb-jar.xml?view=auto&rev=500087
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetomany/simplepk/one-unidirectional-ejb-jar.xml (added)
+++ incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetomany/simplepk/one-unidirectional-ejb-jar.xml Thu Jan 25 17:57:12 2007
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<!--
+    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.
+-->
+
+<ejb-jar xmlns="http://java.sun.com/xml/ns/j2ee"
+	      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	      xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
+		  http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd"
+	      version="2.1">
+
+    <enterprise-beans>
+        <entity>
+            <ejb-name>A</ejb-name>
+            <local-home>org.apache.openejb.deployment.entity.cmp.cmr.onetomany.ALocalHome</local-home>
+            <local>org.apache.openejb.deployment.entity.cmp.cmr.onetomany.ALocal</local>
+            <ejb-class>org.apache.openejb.deployment.entity.cmp.cmr.onetomany.ABean</ejb-class>
+            <persistence-type>Container</persistence-type>
+            <prim-key-class>java.lang.Integer</prim-key-class>
+            <reentrant>false</reentrant>
+            <cmp-version>2.x</cmp-version>
+            <abstract-schema-name>onetomanyA</abstract-schema-name>
+            <cmp-field>
+                <field-name>field1</field-name>
+            </cmp-field>
+            <cmp-field>
+                <field-name>field2</field-name>
+            </cmp-field>
+            <primkey-field>field1</primkey-field>
+            <query>
+                <!-- CompondPK one-to-many shares the local home interface so we need to declare this useless finder -->
+                <query-method>
+                    <method-name>findByPrimaryKey</method-name>
+                    <method-params>
+                        <method-param>org.apache.openejb.deployment.entity.cmp.cmr.CompoundPK</method-param>
+                    </method-params>
+                </query-method>
+                <ejb-ql>SELECT OBJECT(A) FROM onetomanyA A</ejb-ql>
+            </query>
+        </entity>
+        <entity>
+            <ejb-name>B</ejb-name>
+            <local-home>org.apache.openejb.deployment.entity.cmp.cmr.onetomany.BLocalHome</local-home>
+            <local>org.apache.openejb.deployment.entity.cmp.cmr.onetomany.BLocal</local>
+            <ejb-class>org.apache.openejb.deployment.entity.cmp.cmr.onetomany.BBean</ejb-class>
+            <persistence-type>Container</persistence-type>
+            <prim-key-class>java.lang.Integer</prim-key-class>
+            <reentrant>false</reentrant>
+            <cmp-version>2.x</cmp-version>
+            <abstract-schema-name>onetomanyB</abstract-schema-name>
+            <cmp-field>
+                <field-name>field1</field-name>
+            </cmp-field>
+            <cmp-field>
+                <field-name>field2</field-name>
+            </cmp-field>
+            <cmp-field>
+                <field-name>field3</field-name>
+            </cmp-field>
+            <primkey-field>field1</primkey-field>
+            <query>
+                <!-- CompondPK one-to-many shares the local home interface so we need to declare this useless finder -->
+                <query-method>
+                    <method-name>findByPrimaryKey</method-name>
+                    <method-params>
+                        <method-param>org.apache.openejb.deployment.entity.cmp.cmr.CompoundPK</method-param>
+                    </method-params>
+                </query-method>
+                <ejb-ql>SELECT OBJECT(B) FROM onetomanyB B</ejb-ql>
+            </query>
+        </entity>
+    </enterprise-beans>
+    <relationships>
+        <ejb-relation>
+            <ejb-relation-name>relation</ejb-relation-name>
+            <ejb-relationship-role>
+                <ejb-relationship-role-name>ASide</ejb-relationship-role-name>
+                <multiplicity>One</multiplicity>
+                <relationship-role-source>
+                    <ejb-name>A</ejb-name>
+                </relationship-role-source>
+                <cmr-field>
+                    <cmr-field-name>b</cmr-field-name>
+                </cmr-field>
+            </ejb-relationship-role>
+            <ejb-relationship-role>
+                <ejb-relationship-role-name>BSide</ejb-relationship-role-name>
+                <multiplicity>Many</multiplicity>
+                <cascade-delete/>
+                <relationship-role-source>
+                    <ejb-name>B</ejb-name>
+                </relationship-role-source>
+            </ejb-relationship-role>
+        </ejb-relation>
+    </relationships>
+    <assembly-descriptor>
+        <container-transaction>
+            <method>
+                <ejb-name>A</ejb-name>
+                <method-name>*</method-name>
+            </method>
+            <trans-attribute>Required</trans-attribute>
+        </container-transaction>
+        <container-transaction>
+            <method>
+                <ejb-name>B</ejb-name>
+                <method-name>*</method-name>
+            </method>
+            <trans-attribute>Required</trans-attribute>
+        </container-transaction>
+    </assembly-descriptor>
+
+</ejb-jar>

Added: incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetomany/simplepk/one-unidirectional-openejb-jar.xml
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetomany/simplepk/one-unidirectional-openejb-jar.xml?view=auto&rev=500087
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetomany/simplepk/one-unidirectional-openejb-jar.xml (added)
+++ incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetomany/simplepk/one-unidirectional-openejb-jar.xml Thu Jan 25 17:57:12 2007
@@ -0,0 +1,92 @@
+<?xml version="1.0"?>
+<!--
+    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.
+-->
+
+<openejb-jar xmlns="http://www.openejb.org/xml/ns/openejb-jar-2.1">
+
+    <environment>
+        <moduleId>
+            <groupId>foo</groupId>
+            <artifactId>bar</artifactId>
+            <version>1</version>
+            <type>car</type>
+        </moduleId>
+    </environment>
+
+    <cmp-connection-factory>
+        <resource-link>DefaultDatasource</resource-link>
+    </cmp-connection-factory>
+
+    <enterprise-beans>
+        <entity>
+            <ejb-name>A</ejb-name>
+            <table-name>A</table-name>
+            <cmp-field-mapping>
+                <cmp-field-name>field1</cmp-field-name>
+                <table-column>a1</table-column>
+            </cmp-field-mapping>
+            <cmp-field-mapping>
+                <cmp-field-name>
+                  field2
+                </cmp-field-name>
+                <table-column>a2</table-column>
+            </cmp-field-mapping>
+        </entity>
+        <entity>
+            <ejb-name>B</ejb-name>
+            <table-name>B</table-name>
+            <cmp-field-mapping>
+                <cmp-field-name>
+                  field1
+                </cmp-field-name>
+                <table-column>b1</table-column>
+            </cmp-field-mapping>
+            <cmp-field-mapping>
+                <cmp-field-name>field2</cmp-field-name>
+                <table-column>b2</table-column>
+            </cmp-field-mapping>
+            <cmp-field-mapping>
+                <cmp-field-name>
+                  field3
+                </cmp-field-name>
+                <table-column>fka1</table-column>
+            </cmp-field-mapping>
+        </entity>
+    </enterprise-beans>
+
+    <relationships>
+        <ejb-relation>
+            <ejb-relation-name>relation</ejb-relation-name>
+            <ejb-relationship-role>
+                <ejb-relationship-role-name>ASide</ejb-relationship-role-name>
+                <relationship-role-source>
+                    <ejb-name>A</ejb-name>
+                </relationship-role-source>
+                <cmr-field>
+                    <cmr-field-name>b</cmr-field-name>
+                </cmr-field>
+                <role-mapping>
+                    <cmr-field-mapping>
+                        <key-column>a1</key-column>
+                        <foreign-key-column>fka1</foreign-key-column>
+                    </cmr-field-mapping>
+                </role-mapping>
+            </ejb-relationship-role>
+        </ejb-relation>
+    </relationships>
+
+</openejb-jar>

Added: incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetomany/simplepk/one-unidirectional-orm.xml
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetomany/simplepk/one-unidirectional-orm.xml?view=auto&rev=500087
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetomany/simplepk/one-unidirectional-orm.xml (added)
+++ incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetomany/simplepk/one-unidirectional-orm.xml Thu Jan 25 17:57:12 2007
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm">
+    <entity name="onetomanyA" class="org.apache.openejb.deployment.entity.cmp.cmr.onetomany.ABean">
+        <description>A</description>
+        <table name="A"/>
+        <attributes>
+            <id name="field1">
+                <column name="a1"/>
+            </id>
+            <basic name="field2"/>
+            <one-to-many name="b">
+                <join-column referenced-column-name="a1" name="fka1"/>
+            </one-to-many>
+        </attributes>
+    </entity>
+    <entity name="onetomanyB" class="org.apache.openejb.deployment.entity.cmp.cmr.onetomany.BBean">
+        <description>B</description>
+        <table name="B"/>
+        <attributes>
+            <id name="field1"/>
+            <basic name="field2">
+                <column name="b2"/>
+            </basic>
+            <basic name="field3"/>
+        </attributes>
+    </entity>
+</entity-mappings>

Added: incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetomany/simplepk/orm.xml
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetomany/simplepk/orm.xml?view=auto&rev=500087
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetomany/simplepk/orm.xml (added)
+++ incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetomany/simplepk/orm.xml Thu Jan 25 17:57:12 2007
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm">
+    <entity name="onetomanyA" class="org.apache.openejb.deployment.entity.cmp.cmr.onetomany.ABean">
+        <description>A</description>
+        <table name="A"/>
+        <attributes>
+            <id name="field1">
+                <column name="a1"/>
+            </id>
+            <basic name="field2"/>
+            <one-to-many name="b" mapped-by="a"/>
+        </attributes>
+    </entity>
+    <entity name="onetomanyB" class="org.apache.openejb.deployment.entity.cmp.cmr.onetomany.BBean">
+        <description>B</description>
+        <table name="B"/>
+        <attributes>
+            <id name="field1"/>
+            <basic name="field2">
+                <column name="b2"/>
+            </basic>
+            <basic name="field3"/>
+            <many-to-one name="a">
+                <join-column referenced-column-name="a1" name="fka1"/>
+                <cascade>
+                    <cascade-all/>
+                </cascade>
+            </many-to-one>
+        </attributes>
+    </entity>
+</entity-mappings>

Added: incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetoone/simplepk/orm.xml
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetoone/simplepk/orm.xml?view=auto&rev=500087
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetoone/simplepk/orm.xml (added)
+++ incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/cmp/onetoone/simplepk/orm.xml Thu Jan 25 17:57:12 2007
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm">
+    <entity name="OneToOneA" class="org.apache.openejb.deployment.entity.cmp.cmr.onetoone.ABean">
+        <description>A</description>
+        <table name="A"/>
+        <attributes>
+            <id name="field1">
+                <column name="a1"/>
+            </id>
+            <basic name="field2"/>
+            <one-to-one name="b" mapped-by="a">
+                <cascade>
+                    <cascade-all/>
+                </cascade>
+            </one-to-one>
+        </attributes>
+    </entity>
+    <entity name="OneToOneB" class="org.apache.openejb.deployment.entity.cmp.cmr.onetoone.BBean">
+        <description>B</description>
+        <table name="B"/>
+        <attributes>
+            <id name="field1"/>
+            <basic name="field2">
+                <column name="b2"/>
+            </basic>
+            <basic name="field3"/>
+            <one-to-one name="a">
+                <join-column referenced-column-name="a1" name="fka1"/>
+            </one-to-one>
+        </attributes>
+    </entity>
+</entity-mappings>