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 04:48:19 UTC

svn commit: r500133 - in /incubator/openejb/trunk/openejb3/container: openejb-core/src/main/java/org/apache/openejb/config/ openejb-core/src/test/java/org/apache/openejb/config/ openejb-core/src/test/resources/convert/ openejb-core/src/test/resources/c...

Author: dain
Date: Thu Jan 25 19:48:18 2007
New Revision: 500133

URL: http://svn.apache.org/viewvc?view=rev&rev=500133
Log:
Moved conversion code to core module

Added:
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/CmpJpaConversion.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/OpenEjb2CmpConversion.java
      - copied, changed from r500112, incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/java/org/apache/openejb/jee/jpa/OpenEjb2CmpConversion.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/Cmp2ConversionTest.java
      - copied, changed from r500112, incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/java/org/apache/openejb/jee/jpa/Cmp2ConversionTest.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/test/resources/convert/
    incubator/openejb/trunk/openejb3/container/openejb-core/src/test/resources/convert/oej2/
      - copied from r500112, incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/oej2/
    incubator/openejb/trunk/openejb3/container/openejb-core/src/test/resources/convert/oej2/cmp/daytrader/
    incubator/openejb/trunk/openejb3/container/openejb-core/src/test/resources/convert/oej2/cmp/daytrader/daytrader-ejb-jar.xml
      - copied unchanged from r500112, incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/daytrader-ejb-jar.xml
    incubator/openejb/trunk/openejb3/container/openejb-core/src/test/resources/convert/oej2/cmp/daytrader/daytrader-openejb-jar.xml
      - copied unchanged from r500112, incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/daytrader-corrected.xml
    incubator/openejb/trunk/openejb3/container/openejb-core/src/test/resources/convert/oej2/cmp/daytrader/daytrader-orm.xml
      - copied unchanged from r500112, incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/daytrader-orm.xml
    incubator/openejb/trunk/openejb3/container/openejb-core/src/test/resources/convert/oej2/cmp/itest-2.2/
    incubator/openejb/trunk/openejb3/container/openejb-core/src/test/resources/convert/oej2/cmp/itest-2.2/itest-2.2-ejb-jar.xml
      - copied unchanged from r500112, incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/itest-2.2-ejb-jar.xml
    incubator/openejb/trunk/openejb3/container/openejb-core/src/test/resources/convert/oej2/cmp/itest-2.2/itest-2.2-openejb-jar.xml
      - copied unchanged from r500112, incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/openejb-jar-2.2.xml
    incubator/openejb/trunk/openejb3/container/openejb-core/src/test/resources/convert/oej2/cmp/itest-2.2/itest-2.2-orm.xml
      - copied unchanged from r500112, incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/itest-2.2-orm.xml
Removed:
    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-orm.xml
    incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/itest-2.2-ejb-jar.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/openejb-jar-2.2.xml

Added: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/CmpJpaConversion.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/CmpJpaConversion.java?view=auto&rev=500133
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/CmpJpaConversion.java (added)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/CmpJpaConversion.java Thu Jan 25 19:48:18 2007
@@ -0,0 +1,278 @@
+/**
+ * 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.
+ */
+package org.apache.openejb.config;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.openejb.jee.CmpField;
+import org.apache.openejb.jee.EjbJar;
+import org.apache.openejb.jee.EjbRelation;
+import org.apache.openejb.jee.EjbRelationshipRole;
+import org.apache.openejb.jee.EntityBean;
+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.jpa.EntityMappings;
+import org.apache.openejb.jee.jpa.Entity;
+import org.apache.openejb.jee.jpa.Attributes;
+import org.apache.openejb.jee.jpa.Id;
+import org.apache.openejb.jee.jpa.Basic;
+import org.apache.openejb.jee.jpa.OneToOne;
+import org.apache.openejb.jee.jpa.OneToMany;
+import org.apache.openejb.jee.jpa.ManyToOne;
+import org.apache.openejb.jee.jpa.ManyToMany;
+import org.apache.openejb.jee.jpa.RelationField;
+import org.apache.openejb.jee.jpa.CascadeType;
+
+public class CmpJpaConversion {
+    public EntityMappings generateEntityMappings(EjbJar ejbJar) {
+        EntityMappings entityMappings = new EntityMappings();
+        Map<String, Entity> entitiesByName = new HashMap<String,Entity>();
+        for (org.apache.openejb.jee.EnterpriseBean enterpriseBean : ejbJar.getEnterpriseBeans()) {
+            // skip all non-CMP beans
+            if (!(enterpriseBean instanceof EntityBean) ||
+                    ((EntityBean) enterpriseBean).getPersistenceType() != PersistenceType.CONTAINER) {
+                continue;
+            }
+            EntityBean bean = (EntityBean) enterpriseBean;
+
+            Entity entity = new Entity();
+
+            // description: contains the name of the entity bean
+            entity.setDescription(bean.getEjbName());
+
+            // class: the java class for the entity
+            entity.setClazz(bean.getEjbClass());
+
+            // name: the name of the entity in queries
+            if (bean.getAbstractSchemaName() != null) {
+                entity.setName(bean.getAbstractSchemaName());
+            } else {
+                String name = bean.getEjbName().trim().replaceAll("[ \\t\\n\\r]+", "_");
+                entity.setName(name);
+            }
+
+            //
+            // atributes: holds id, basic, oneToMany, manyToOne and manyToMany
+            //
+            Attributes attributes = new Attributes();
+            entity.setAttributes(attributes);
+
+            //
+            // id: the primary key
+            //
+            Id id = new Id();
+            // todo complex primary key
+            // todo unknown primary key
+            id.setName(bean.getPrimkeyField());
+            attributes.getId().add(id);
+
+            //
+            // basic: cmp-fields
+            //
+            for (CmpField cmpField : bean.getCmpField()) {
+                Basic basic = new Basic();
+                if (!cmpField.getFieldName().equals(bean.getPrimkeyField())) {
+                    basic.setName(cmpField.getFieldName());
+                    attributes.getBasic().add(basic);
+                }
+            }
+
+            // add the entity
+            entityMappings.getEntity().add(entity);
+            entitiesByName.put(bean.getEjbName(), entity);
+        }
+
+        Relationships relationships = ejbJar.getRelationships();
+        if (relationships != null) {
+            for (EjbRelation relation : relationships.getEjbRelation()) {
+                List<EjbRelationshipRole> roles = relation.getEjbRelationshipRole();
+                // if we don't have two roles, the relation is bad so we skip it
+                if (roles.size() != 2) {
+                    continue;
+                }
+
+                EjbRelationshipRole leftRole = roles.get(0);
+                RelationshipRoleSource leftRoleSource = leftRole.getRelationshipRoleSource();
+                String leftEjbName = leftRoleSource == null ? null : leftRoleSource.getEjbName();
+                Entity leftEntity = entitiesByName.get(leftEjbName);
+                String leftFieldName = null;
+                if (leftRole.getCmrField() != null) {
+                    leftFieldName = leftRole.getCmrField().getCmrFieldName();
+                }
+                boolean leftIsOne = leftRole.getMultiplicity() == Multiplicity.ONE;
+
+                EjbRelationshipRole rightRole = roles.get(1);
+                RelationshipRoleSource rightRoleSource = rightRole.getRelationshipRoleSource();
+                String rightEjbName = rightRoleSource == null ? null : rightRoleSource.getEjbName();
+                Entity rightEntity = entitiesByName.get(rightEjbName);
+                String rightFieldName = null;
+                if (rightRole.getCmrField() != null) {
+                    rightFieldName = rightRole.getCmrField().getCmrFieldName();
+                }
+                boolean rightIsOne = rightRole.getMultiplicity() == Multiplicity.ONE;
+
+                if (leftIsOne && rightIsOne) {
+                    //
+                    // one-to-one
+                    //
+
+                    // left
+                    OneToOne leftOneToOne = null;
+                    if (leftFieldName != null) {
+                        leftOneToOne = new OneToOne();
+                        leftOneToOne.setName(leftFieldName);
+                        setCascade(leftRole, leftOneToOne);
+                        leftEntity.getAttributes().getOneToOne().add(leftOneToOne);
+                    }
+
+                    // right
+                    OneToOne rightOneToOne = null;
+                    if (rightFieldName != null) {
+                        rightOneToOne = new OneToOne();
+                        rightOneToOne.setName(rightFieldName);
+                        // mapped by only required for bi-directional
+                        if (leftFieldName != null) {
+                            rightOneToOne.setMappedBy(leftFieldName);
+                        }
+                        setCascade(rightRole, rightOneToOne);
+                        rightEntity.getAttributes().getOneToOne().add(rightOneToOne);
+                    }
+
+                    // link
+                    if (leftFieldName != null && rightFieldName != null) {
+                        leftOneToOne.setRelatedField(rightOneToOne);
+                        rightOneToOne.setRelatedField(leftOneToOne);
+                    }
+                } else if (leftIsOne && !rightIsOne) {
+                    //
+                    // one-to-many
+                    //
+
+                    // left
+                    OneToMany leftOneToMany = null;
+                    if (leftFieldName != null) {
+                        leftOneToMany = new OneToMany();
+                        leftOneToMany.setName(leftFieldName);
+                        // mapped by only required for bi-directional
+                        if (rightFieldName != null) {
+                            leftOneToMany.setMappedBy(rightFieldName);
+                        }
+                        setCascade(leftRole, leftOneToMany);
+                        leftEntity.getAttributes().getOneToMany().add(leftOneToMany);
+                    }
+
+                    // right
+                    ManyToOne rightManyToOne = null;
+                    if (rightFieldName != null) {
+                        rightManyToOne = new ManyToOne();
+                        rightManyToOne.setName(rightFieldName);
+                        setCascade(rightRole, rightManyToOne);
+                        rightEntity.getAttributes().getManyToOne().add(rightManyToOne);
+                    }
+
+                    // link
+                    if (leftFieldName != null && rightFieldName != null) {
+                        leftOneToMany.setRelatedField(rightManyToOne);
+                        rightManyToOne.setRelatedField(leftOneToMany);
+                    }
+                } else if (!leftIsOne && rightIsOne) {
+                    //
+                    // many-to-one
+                    //
+
+                    // left
+                    ManyToOne leftManyToOne = null;
+                    if (leftFieldName != null) {
+                        leftManyToOne = new ManyToOne();
+                        leftManyToOne.setName(leftFieldName);
+                        setCascade(leftRole, leftManyToOne);
+                        leftEntity.getAttributes().getManyToOne().add(leftManyToOne);
+                    }
+
+                    // right
+                    OneToMany rightOneToMany = null;
+                    if (rightFieldName != null) {
+                        rightOneToMany = new OneToMany();
+                        rightOneToMany.setName(rightFieldName);
+                        // mapped by only required for bi-directional
+                        if (leftFieldName != null) {
+                            rightOneToMany.setMappedBy(leftFieldName);
+                        }
+                        setCascade(rightRole, rightOneToMany);
+                        rightEntity.getAttributes().getOneToMany().add(rightOneToMany);
+                    }
+
+                    // link
+                    if (leftFieldName != null && rightFieldName != null) {
+                        leftManyToOne.setRelatedField(rightOneToMany);
+                        rightOneToMany.setRelatedField(leftManyToOne);
+                    }
+                } else if (!leftIsOne && !rightIsOne) {
+                    //
+                    // many-to-many
+                    //
+
+                    // left
+                    ManyToMany leftManyToMany = null;
+                    if (leftFieldName != null) {
+                        leftManyToMany = new ManyToMany();
+                        leftManyToMany.setName(leftFieldName);
+                        setCascade(leftRole, leftManyToMany);
+                        leftEntity.getAttributes().getManyToMany().add(leftManyToMany);
+                    }
+
+                    // right
+                    ManyToMany rightManyToMany = null;
+                    if (rightFieldName != null) {
+                        rightManyToMany = new ManyToMany();
+                        rightManyToMany.setName(rightFieldName);
+                        // mapped by only required for bi-directional
+                        if (leftFieldName != null) {
+                            rightManyToMany.setMappedBy(leftFieldName);
+                        }
+                        setCascade(rightRole, rightManyToMany);
+                        rightEntity.getAttributes().getManyToMany().add(rightManyToMany);
+                    }
+
+                    // link
+                    if (leftFieldName != null && rightFieldName != null) {
+                        leftManyToMany.setRelatedField(rightManyToMany);
+                        rightManyToMany.setRelatedField(leftManyToMany);
+                    }
+                }
+            }
+        }
+
+        //
+        // transient: non-persistent fields
+        //
+        // todo scan class file for fields that are not cmp-fields or cmr-fields and mark them transient
+        return entityMappings;
+    }
+
+    private void setCascade(EjbRelationshipRole role, RelationField field) {
+        if (role.getCascadeDelete()) {
+            CascadeType cascadeType = new CascadeType();
+            cascadeType.setCascadeAll(true);
+            field.setCascade(cascadeType);
+        }
+    }
+}

Copied: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/OpenEjb2CmpConversion.java (from r500112, 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-core/src/main/java/org/apache/openejb/config/OpenEjb2CmpConversion.java?view=diff&rev=500133&p1=incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/java/org/apache/openejb/jee/jpa/OpenEjb2CmpConversion.java&r1=500112&p2=incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/OpenEjb2CmpConversion.java&r2=500133
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/java/org/apache/openejb/jee/jpa/OpenEjb2CmpConversion.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/OpenEjb2CmpConversion.java Thu Jan 25 19:48:18 2007
@@ -14,7 +14,7 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-package org.apache.openejb.jee.jpa;
+package org.apache.openejb.config;
 
 import java.util.Map;
 import java.util.TreeMap;
@@ -25,6 +25,20 @@
 import org.apache.openejb.jee.oejb2.EntityBeanType;
 import org.apache.openejb.jee.oejb2.OpenejbJarType;
 import org.apache.openejb.jee.oejb2.EjbRelationshipRoleType;
+import org.apache.openejb.jee.jpa.EntityMappings;
+import org.apache.openejb.jee.jpa.Entity;
+import org.apache.openejb.jee.jpa.Table;
+import org.apache.openejb.jee.jpa.Field;
+import org.apache.openejb.jee.jpa.Column;
+import org.apache.openejb.jee.jpa.Id;
+import org.apache.openejb.jee.jpa.GeneratedValue;
+import org.apache.openejb.jee.jpa.RelationField;
+import org.apache.openejb.jee.jpa.OneToMany;
+import org.apache.openejb.jee.jpa.OneToOne;
+import org.apache.openejb.jee.jpa.JoinColumn;
+import org.apache.openejb.jee.jpa.JoinTable;
+import org.apache.openejb.jee.jpa.Basic;
+import org.apache.openejb.jee.jpa.Attributes;
 
 public class OpenEjb2CmpConversion {
 
@@ -108,7 +122,7 @@
                     if (field == null) {
                         if (other instanceof OneToMany) {
                             // for a unidirectional oneToMany, the join column declaration
-                            // is placed on the oneToMany element instead of manyToOne 
+                            // is placed on the oneToMany element instead of manyToOne
                             field = other;
                         } else {
                             continue;

Copied: incubator/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/Cmp2ConversionTest.java (from r500112, 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-core/src/test/java/org/apache/openejb/config/Cmp2ConversionTest.java?view=diff&rev=500133&p1=incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/java/org/apache/openejb/jee/jpa/Cmp2ConversionTest.java&r1=500112&p2=incubator/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/Cmp2ConversionTest.java&r2=500133
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-jee/src/test/java/org/apache/openejb/jee/jpa/Cmp2ConversionTest.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/Cmp2ConversionTest.java Thu Jan 25 19:48:18 2007
@@ -14,32 +14,22 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-package org.apache.openejb.jee.jpa;
+package org.apache.openejb.config;
 
 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 javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBElement;
 import javax.xml.bind.JAXBException;
 import javax.xml.bind.Marshaller;
 
 import junit.framework.TestCase;
-import org.apache.openejb.jee.CmpField;
 import org.apache.openejb.jee.EjbJar;
-import org.apache.openejb.jee.EjbRelation;
-import org.apache.openejb.jee.EjbRelationshipRole;
-import org.apache.openejb.jee.EntityBean;
 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.jpa.EntityMappings;
 import org.apache.openejb.jee.oejb2.JaxbOpenejbJar2;
 import org.apache.openejb.jee.oejb2.OpenejbJarType;
 
@@ -48,39 +38,39 @@
  */
 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");
+        convert("convert/oej2/cmp/itest-2.2/itest-2.2-");
     }
 
     public void testDaytrader() throws Exception {
-        convert("daytrader-ejb-jar.xml", "daytrader-corrected.xml", "daytrader-orm.xml");
+        convert("convert/oej2/cmp/daytrader/daytrader-");
     }
 
     public void testOneToOne() throws Exception {
-        convert("oej2/cmp/onetoone/simplepk/");
+        convert("convert/oej2/cmp/onetoone/simplepk/");
     }
 
     public void testOneToOneUni() throws Exception {
-        convert("oej2/cmp/onetoone/simplepk/unidirectional-");
+        convert("convert/oej2/cmp/onetoone/simplepk/unidirectional-");
     }
 
     public void testOneToMany() throws Exception {
-        convert("oej2/cmp/onetomany/simplepk/ejb-jar.xml", "oej2/cmp/onetomany/simplepk/openejb-jar.xml", null);
+        convert("convert/oej2/cmp/onetomany/simplepk/");
     }
 
     public void testOneToManyUni() throws Exception {
-        convert("oej2/cmp/onetomany/simplepk/one-unidirectional-");
+        convert("convert/oej2/cmp/onetomany/simplepk/one-unidirectional-");
     }
 
     public void testManyToOneUni() throws Exception {
-        convert("oej2/cmp/onetomany/simplepk/many-unidirectional-");
+        convert("convert/oej2/cmp/onetomany/simplepk/many-unidirectional-");
     }
 
     public void testManyToMany() throws Exception {
-        convert("oej2/cmp/manytomany/simplepk/");
+        convert("convert/oej2/cmp/manytomany/simplepk/");
     }
 
     public void testManyToManyUni() throws Exception {
-        convert("oej2/cmp/manytomany/simplepk/unidirectional-");
+        convert("convert/oej2/cmp/manytomany/simplepk/unidirectional-");
     }
 
     private EntityMappings convert(String prefix) throws Exception {
@@ -88,7 +78,10 @@
     }
 
     private EntityMappings convert(String ejbJarFileName, String openejbJarFileName, String expectedFileName) throws Exception {
-        EntityMappings entityMappings = generateEntityMappings(ejbJarFileName);
+        InputStream in = getClass().getClassLoader().getResourceAsStream(ejbJarFileName);
+        EjbJar ejbJar = (EjbJar) JaxbJavaee.unmarshal(EjbJar.class, new ByteArrayInputStream(readContent(in).getBytes()));
+        CmpJpaConversion cmpJpaConversion = new CmpJpaConversion();
+        EntityMappings entityMappings = cmpJpaConversion.generateEntityMappings(ejbJar);
 
         String openejbJarXml = readContent(getClass().getClassLoader().getResourceAsStream(openejbJarFileName));
         JAXBElement element = (JAXBElement) JaxbOpenejbJar2.unmarshal(OpenejbJarType.class, new ByteArrayInputStream(openejbJarXml.getBytes()));
@@ -98,7 +91,7 @@
         openEjb2CmpConversion.mergeEntityMappings(entityMappings, openejbJarType);
 
         if (expectedFileName != null) {
-            InputStream in = getClass().getClassLoader().getResourceAsStream(expectedFileName);
+            in = getClass().getClassLoader().getResourceAsStream(expectedFileName);
             String expected = readContent(in);
             String actual = toString(entityMappings);
             assertEquals(expected, actual);
@@ -120,244 +113,6 @@
         return actual.trim();
     }
 
-    private EntityMappings generateEntityMappings(String fileName) throws Exception {
-        InputStream in = this.getClass().getClassLoader().getResourceAsStream(fileName);
-        String expected = readContent(in);
-
-        EjbJar ejbJar = (EjbJar) JaxbJavaee.unmarshal(EjbJar.class, new ByteArrayInputStream(expected.getBytes()));
-
-        EntityMappings entityMappings = new EntityMappings();
-        Map<String, Entity> entitiesByName = new HashMap<String,Entity>();
-        for (org.apache.openejb.jee.EnterpriseBean enterpriseBean : ejbJar.getEnterpriseBeans()) {
-            // skip all non-CMP beans
-            if (!(enterpriseBean instanceof EntityBean) ||
-                    ((EntityBean) enterpriseBean).getPersistenceType() != PersistenceType.CONTAINER) {
-                continue;
-            }
-            EntityBean bean = (EntityBean) enterpriseBean;
-
-            Entity entity = new Entity();
-
-            // description: contains the name of the entity bean
-            entity.setDescription(bean.getEjbName());
-
-            // class: the java class for the entity
-            entity.setClazz(bean.getEjbClass());
-
-            // name: the name of the entity in queries
-            if (bean.getAbstractSchemaName() != null) {
-                entity.setName(bean.getAbstractSchemaName());
-            } else {
-                String name = bean.getEjbName().trim().replaceAll("[ \\t\\n\\r]+", "_");
-                entity.setName(name);
-            }
-
-            //
-            // atributes: holds id, basic, oneToMany, manyToOne and manyToMany
-            //
-            Attributes attributes = new Attributes();
-            entity.setAttributes(attributes);
-
-            //
-            // id: the primary key
-            //
-            Id id = new Id();
-            // todo complex primary key
-            // todo unknown primary key
-            id.setName(bean.getPrimkeyField());
-            attributes.getId().add(id);
-
-            //
-            // basic: cmp-fields
-            //
-            for (CmpField cmpField : bean.getCmpField()) {
-                Basic basic = new Basic();
-                if (!cmpField.getFieldName().equals(bean.getPrimkeyField())) {
-                    basic.setName(cmpField.getFieldName());
-                    attributes.getBasic().add(basic);
-                }
-            }
-
-            // add the entity
-            entityMappings.getEntity().add(entity);
-            entitiesByName.put(bean.getEjbName(), entity);
-        }
-
-        Relationships relationships = ejbJar.getRelationships();
-        if (relationships != null) {
-            for (EjbRelation relation : relationships.getEjbRelation()) {
-                List<EjbRelationshipRole> roles = relation.getEjbRelationshipRole();
-                // if we don't have two roles, the relation is bad so we skip it
-                if (roles.size() != 2) {
-                    continue;
-                }
-
-                EjbRelationshipRole leftRole = roles.get(0);
-                RelationshipRoleSource leftRoleSource = leftRole.getRelationshipRoleSource();
-                String leftEjbName = leftRoleSource == null ? null : leftRoleSource.getEjbName();
-                Entity leftEntity = entitiesByName.get(leftEjbName);
-                String leftFieldName = null;
-                if (leftRole.getCmrField() != null) {
-                    leftFieldName = leftRole.getCmrField().getCmrFieldName();
-                }
-                boolean leftIsOne = leftRole.getMultiplicity() == Multiplicity.ONE;
-
-                EjbRelationshipRole rightRole = roles.get(1);
-                RelationshipRoleSource rightRoleSource = rightRole.getRelationshipRoleSource();
-                String rightEjbName = rightRoleSource == null ? null : rightRoleSource.getEjbName();
-                Entity rightEntity = entitiesByName.get(rightEjbName);
-                String rightFieldName = null;
-                if (rightRole.getCmrField() != null) {
-                    rightFieldName = rightRole.getCmrField().getCmrFieldName();
-                }
-                boolean rightIsOne = rightRole.getMultiplicity() == Multiplicity.ONE;
-
-                if (leftIsOne && rightIsOne) {
-                    //
-                    // one-to-one
-                    //
-
-                    // left
-                    OneToOne leftOneToOne = null;
-                    if (leftFieldName != null) {
-                        leftOneToOne = new OneToOne();
-                        leftOneToOne.setName(leftFieldName);
-                        setCascade(leftRole, leftOneToOne);
-                        leftEntity.getAttributes().getOneToOne().add(leftOneToOne);
-                    }
-
-                    // right
-                    OneToOne rightOneToOne = null;
-                    if (rightFieldName != null) {
-                        rightOneToOne = new OneToOne();
-                        rightOneToOne.setName(rightFieldName);
-                        // mapped by only required for bi-directional
-                        if (leftFieldName != null) {
-                            rightOneToOne.setMappedBy(leftFieldName);
-                        }
-                        setCascade(rightRole, rightOneToOne);
-                        rightEntity.getAttributes().getOneToOne().add(rightOneToOne);
-                    }
-
-                    // link
-                    if (leftFieldName != null && rightFieldName != null) {
-                        leftOneToOne.setRelatedField(rightOneToOne);
-                        rightOneToOne.setRelatedField(leftOneToOne);
-                    }
-                } else if (leftIsOne && !rightIsOne) {
-                    //
-                    // one-to-many
-                    //
-
-                    // left
-                    OneToMany leftOneToMany = null;
-                    if (leftFieldName != null) {
-                        leftOneToMany = new OneToMany();
-                        leftOneToMany.setName(leftFieldName);
-                        // mapped by only required for bi-directional
-                        if (rightFieldName != null) {
-                            leftOneToMany.setMappedBy(rightFieldName);
-                        }
-                        setCascade(leftRole, leftOneToMany);
-                        leftEntity.getAttributes().getOneToMany().add(leftOneToMany);
-                    }
-
-                    // right
-                    ManyToOne rightManyToOne = null;
-                    if (rightFieldName != null) {
-                        rightManyToOne = new ManyToOne();
-                        rightManyToOne.setName(rightFieldName);
-                        setCascade(rightRole, rightManyToOne);
-                        rightEntity.getAttributes().getManyToOne().add(rightManyToOne);
-                    }
-
-                    // link
-                    if (leftFieldName != null && rightFieldName != null) {
-                        leftOneToMany.setRelatedField(rightManyToOne);
-                        rightManyToOne.setRelatedField(leftOneToMany);
-                    }
-                } else if (!leftIsOne && rightIsOne) {
-                    //
-                    // many-to-one
-                    //
-
-                    // left
-                    ManyToOne leftManyToOne = null;
-                    if (leftFieldName != null) {
-                        leftManyToOne = new ManyToOne();
-                        leftManyToOne.setName(leftFieldName);
-                        setCascade(leftRole, leftManyToOne);
-                        leftEntity.getAttributes().getManyToOne().add(leftManyToOne);
-                    }
-
-                    // right
-                    OneToMany rightOneToMany = null;
-                    if (rightFieldName != null) {
-                        rightOneToMany = new OneToMany();
-                        rightOneToMany.setName(rightFieldName);
-                        // mapped by only required for bi-directional
-                        if (leftFieldName != null) {
-                            rightOneToMany.setMappedBy(leftFieldName);
-                        }
-                        setCascade(rightRole, rightOneToMany);
-                        rightEntity.getAttributes().getOneToMany().add(rightOneToMany);
-                    }
-
-                    // link
-                    if (leftFieldName != null && rightFieldName != null) {
-                        leftManyToOne.setRelatedField(rightOneToMany);
-                        rightOneToMany.setRelatedField(leftManyToOne);
-                    }
-                } else if (!leftIsOne && !rightIsOne) {
-                    //
-                    // many-to-many
-                    //
-
-                    // left
-                    ManyToMany leftManyToMany = null;
-                    if (leftFieldName != null) {
-                        leftManyToMany = new ManyToMany();
-                        leftManyToMany.setName(leftFieldName);
-                        setCascade(leftRole, leftManyToMany);
-                        leftEntity.getAttributes().getManyToMany().add(leftManyToMany);
-                    }
-
-                    // right
-                    ManyToMany rightManyToMany = null;
-                    if (rightFieldName != null) {
-                        rightManyToMany = new ManyToMany();
-                        rightManyToMany.setName(rightFieldName);
-                        // mapped by only required for bi-directional
-                        if (leftFieldName != null) {
-                            rightManyToMany.setMappedBy(leftFieldName);
-                        }
-                        setCascade(rightRole, rightManyToMany);
-                        rightEntity.getAttributes().getManyToMany().add(rightManyToMany);
-                    }
-
-                    // link
-                    if (leftFieldName != null && rightFieldName != null) {
-                        leftManyToMany.setRelatedField(rightManyToMany);
-                        rightManyToMany.setRelatedField(leftManyToMany);
-                    }
-                }
-            }
-        }
-
-        //
-        // transient: non-persistent fields
-        //
-        // todo scan class file for fields that are not cmp-fields or cmr-fields and mark them transient
-        return entityMappings;
-    }
-
-    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();