You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by dj...@apache.org on 2006/09/25 22:03:26 UTC

svn commit: r449796 - in /incubator/openejb/trunk/openejb2: ./ modules/openejb-builder/ modules/openejb-builder/src/main/java/org/openejb/deployment/ modules/openejb-builder/src/main/java/org/openejb/deployment/ant/ modules/openejb-builder/src/test/jav...

Author: djencks
Date: Mon Sep 25 13:03:25 2006
New Revision: 449796

URL: http://svn.apache.org/viewvc?view=rev&rev=449796
Log:
GERONIMO-2414 move the ejb conversions to the openejb module builders

Added:
    incubator/openejb/trunk/openejb2/modules/openejb-builder/src/test/java/org/openejb/deployment/SchemaConversionTest.java   (with props)
    incubator/openejb/trunk/openejb2/modules/openejb-builder/src/test/resources/
      - copied from r449747, geronimo/server/trunk/modules/geronimo-j2ee-schema/src/test/resources/
Removed:
    incubator/openejb/trunk/openejb2/modules/openejb-builder/src/test/resources/geronimo/
    incubator/openejb/trunk/openejb2/modules/openejb-builder/src/test/resources/j2ee_1_3dtd/DescriptionGroupTestExpected.xml
    incubator/openejb/trunk/openejb2/modules/openejb-builder/src/test/resources/j2ee_1_3dtd/DescriptionGroupTestSource.xml
    incubator/openejb/trunk/openejb2/modules/openejb-builder/src/test/resources/j2ee_1_3dtd/JNDIEnvironmentRefsGroupTestExpected.xml
    incubator/openejb/trunk/openejb2/modules/openejb-builder/src/test/resources/j2ee_1_3dtd/JNDIEnvironmentRefsGroupTestSource.xml
    incubator/openejb/trunk/openejb2/modules/openejb-builder/src/test/resources/j2ee_1_3dtd/application-client-13.xml
    incubator/openejb/trunk/openejb2/modules/openejb-builder/src/test/resources/j2ee_1_3dtd/application-client-14.xml
    incubator/openejb/trunk/openejb2/modules/openejb-builder/src/test/resources/j2ee_1_3dtd/ra-10.xml
    incubator/openejb/trunk/openejb2/modules/openejb-builder/src/test/resources/j2ee_1_3dtd/ra-15.xml
    incubator/openejb/trunk/openejb2/modules/openejb-builder/src/test/resources/j2ee_1_3dtd/tmp.xml
Modified:
    incubator/openejb/trunk/openejb2/modules/openejb-builder/pom.xml
    incubator/openejb/trunk/openejb2/modules/openejb-builder/src/main/java/org/openejb/deployment/OpenEjbModuleBuilder.java
    incubator/openejb/trunk/openejb2/modules/openejb-builder/src/main/java/org/openejb/deployment/XmlBeansHelper.java
    incubator/openejb/trunk/openejb2/modules/openejb-builder/src/main/java/org/openejb/deployment/ant/DDLExporterTask.java
    incubator/openejb/trunk/openejb2/pom.xml

Modified: incubator/openejb/trunk/openejb2/modules/openejb-builder/pom.xml
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb2/modules/openejb-builder/pom.xml?view=diff&rev=449796&r1=449795&r2=449796
==============================================================================
--- incubator/openejb/trunk/openejb2/modules/openejb-builder/pom.xml (original)
+++ incubator/openejb/trunk/openejb2/modules/openejb-builder/pom.xml Mon Sep 25 13:03:25 2006
@@ -70,6 +70,13 @@
         <!--</dependency>-->
         <!---->
         <dependency>
+            <groupId>org.apache.geronimo.testsupport</groupId>
+            <artifactId>testsupport-common</artifactId>
+            <version>${geronimoVersion}</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
             <groupId>ant</groupId>
             <artifactId>ant</artifactId>
         </dependency>

Modified: incubator/openejb/trunk/openejb2/modules/openejb-builder/src/main/java/org/openejb/deployment/OpenEjbModuleBuilder.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb2/modules/openejb-builder/src/main/java/org/openejb/deployment/OpenEjbModuleBuilder.java?view=diff&rev=449796&r1=449795&r2=449796
==============================================================================
--- incubator/openejb/trunk/openejb2/modules/openejb-builder/src/main/java/org/openejb/deployment/OpenEjbModuleBuilder.java (original)
+++ incubator/openejb/trunk/openejb2/modules/openejb-builder/src/main/java/org/openejb/deployment/OpenEjbModuleBuilder.java Mon Sep 25 13:03:25 2006
@@ -109,6 +109,8 @@
 import org.apache.geronimo.xbeans.j2ee.SessionBeanType;
 import org.apache.xmlbeans.XmlException;
 import org.apache.xmlbeans.XmlObject;
+import org.apache.xmlbeans.XmlCursor;
+import org.apache.xmlbeans.XmlDocumentProperties;
 import org.openejb.EJBModuleImplGBean;
 import org.openejb.EjbDeployment;
 import org.openejb.proxy.EJBProxyFactory;
@@ -144,6 +146,7 @@
     private final NamingBuilder namingBuilders;
     private final ActivationSpecInfoLocator activationSpecInfoLocator;
     private final ResourceEnvironmentSetter resourceEnvironmentSetter;
+    private static final QName CMP_VERSION = new QName(SchemaConversionUtils.J2EE_NAMESPACE, "cmp-version");
 
 
     static {
@@ -290,7 +293,7 @@
         //there is a file named ejb-jar.xml in META-INF.  If we can't process it, it is an error.
         try {
             // parse it
-            EjbJarDocument ejbJarDoc = SchemaConversionUtils.convertToEJBSchema(XmlBeansUtil.parse(specDD));
+            EjbJarDocument ejbJarDoc = convertToEJBSchema(XmlBeansUtil.parse(specDD));
             ejbJar = ejbJarDoc.getEjbJar();
         } catch (XmlException e) {
             throw new DeploymentException("Error parsing ejb-jar.xml", e);
@@ -389,6 +392,151 @@
         return openejbEjbJar;
     }
 
+    public ActivationSpecInfoLocator getActivationSpecInfoLocator() {
+        return activationSpecInfoLocator;
+    }
+
+    public ResourceEnvironmentSetter getResourceEnvironmentSetter() {
+        return resourceEnvironmentSetter;
+    }
+
+    public static EjbJarDocument convertToEJBSchema(XmlObject xmlObject) throws XmlException {
+        if (EjbJarDocument.type.equals(xmlObject.schemaType())) {
+            XmlBeansUtil.validateDD(xmlObject);
+            return (EjbJarDocument) xmlObject;
+        }
+        XmlCursor cursor = xmlObject.newCursor();
+        XmlCursor moveable = xmlObject.newCursor();
+        //cursor is intially located before the logical STARTDOC token
+        try {
+            cursor.toFirstChild();
+            if ("http://java.sun.com/xml/ns/j2ee".equals(cursor.getName().getNamespaceURI())) {
+                XmlObject result = xmlObject.changeType(EjbJarDocument.type);
+                XmlBeansUtil.validateDD(result);
+                return (EjbJarDocument) result;
+            }
+            // deployment descriptor is probably in EJB 1.1 or 2.0 format
+            XmlDocumentProperties xmlDocumentProperties = cursor.documentProperties();
+            String publicId = xmlDocumentProperties.getDoctypePublicId();
+            String cmpVersion;
+            if ("-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 1.1//EN".equals(publicId)) {
+                cmpVersion = "1.x";
+            } else if ("-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN".equals(publicId)) {
+                cmpVersion = null;//2.x is the default "2.x";
+            } else {
+                throw new XmlException("Unrecognized document type: " + publicId);
+            }
+            String schemaLocationURL = "http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd";
+            String version = "2.1";
+            SchemaConversionUtils.convertToSchema(cursor, SchemaConversionUtils.J2EE_NAMESPACE, schemaLocationURL, version);
+            //play with message-driven
+            cursor.toStartDoc();
+            convertBeans(cursor, moveable, cmpVersion);
+        } finally {
+            cursor.dispose();
+            moveable.dispose();
+        }
+        XmlObject result = xmlObject.changeType(EjbJarDocument.type);
+        if (result != null) {
+            XmlBeansUtil.validateDD(result);
+            return (EjbJarDocument) result;
+        }
+        XmlBeansUtil.validateDD(xmlObject);
+        return (EjbJarDocument) xmlObject;
+    }
+
+    private static void convertBeans(XmlCursor cursor, XmlCursor moveable, String cmpVersion) {
+        cursor.toChild(SchemaConversionUtils.J2EE_NAMESPACE, "ejb-jar");
+        cursor.toChild(SchemaConversionUtils.J2EE_NAMESPACE, "enterprise-beans");
+        if (cursor.toFirstChild()) {
+            //there's at least one ejb...
+            do {
+                cursor.push();
+                String type = cursor.getName().getLocalPart();
+                if ("session".equals(type)) {
+                    cursor.toChild(SchemaConversionUtils.J2EE_NAMESPACE, "transaction-type");
+                    cursor.toNextSibling();
+                    SchemaConversionUtils.convertToJNDIEnvironmentRefsGroup(SchemaConversionUtils.J2EE_NAMESPACE, cursor, moveable);
+                } else if ("entity".equals(type)) {
+                    cursor.toChild(SchemaConversionUtils.J2EE_NAMESPACE, "persistence-type");
+                    String persistenceType = cursor.getTextValue();
+                    //reentrant is the last required tag before jndiEnvironmentRefsGroup
+                    cursor.toNextSibling(SchemaConversionUtils.J2EE_NAMESPACE, "reentrant");
+                    //Convert 2.0 True/False to true/false for 2.1
+                    cursor.setTextValue(cursor.getTextValue().toLowerCase());
+                    if (cmpVersion != null && !cursor.toNextSibling(CMP_VERSION) && "Container".equals(persistenceType)) {
+                        cursor.toNextSibling();
+                        cursor.insertElementWithText(CMP_VERSION, cmpVersion);
+                    }
+
+                    cursor.toNextSibling(SchemaConversionUtils.J2EE_NAMESPACE, "abstract-schema-name");
+                    while (cursor.toNextSibling(SchemaConversionUtils.J2EE_NAMESPACE, "cmp-field")) {
+                    }
+                    cursor.toNextSibling(SchemaConversionUtils.J2EE_NAMESPACE, "primkey-field");
+                    cursor.toNextSibling();
+                    SchemaConversionUtils.convertToJNDIEnvironmentRefsGroup(SchemaConversionUtils.J2EE_NAMESPACE, cursor, moveable);
+                } else if ("message-driven".equals(type)) {
+                    cursor.toFirstChild();
+                    if (cursor.toNextSibling(SchemaConversionUtils.J2EE_NAMESPACE, "messaging-type")) {
+                        cursor.toNextSibling(SchemaConversionUtils.J2EE_NAMESPACE, "transaction-type");
+                    } else {
+                        cursor.toNextSibling(SchemaConversionUtils.J2EE_NAMESPACE, "transaction-type");
+                        //insert messaging-type (introduced in EJB 2.1 spec) before transaction-type
+                        cursor.insertElementWithText("messaging-type", SchemaConversionUtils.J2EE_NAMESPACE, "javax.jms.MessageListener");
+                        //cursor still on transaction-type
+                    }
+                    if (!cursor.toNextSibling(SchemaConversionUtils.J2EE_NAMESPACE, "activation-config")) {
+                        //skip transaction-type
+                        cursor.toNextSibling();
+                        //convert EJB 2.0 elements to activation-config-properties.
+                        moveable.toCursor(cursor);
+                        cursor.push();
+                        cursor.beginElement("activation-config", SchemaConversionUtils.J2EE_NAMESPACE);
+                        boolean hasProperties = addActivationConfigProperty(moveable, cursor, "message-selector", "messageSelector");
+                        hasProperties |= addActivationConfigProperty(moveable, cursor, "acknowledge-mode", "acknowledgeMode");
+                        if (new QName(SchemaConversionUtils.J2EE_NAMESPACE, "message-driven-destination").equals(moveable.getName()) ||
+                                moveable.toNextSibling(SchemaConversionUtils.J2EE_NAMESPACE, "message-driven-destination")) {
+                            moveable.push();
+                            moveable.toFirstChild();
+                            hasProperties |= addActivationConfigProperty(moveable, cursor, "destination-type", "destinationType");
+                            hasProperties |= addActivationConfigProperty(moveable, cursor, "subscription-durability", "subscriptionDurability");
+                            moveable.pop();
+                            moveable.removeXml();
+                        }
+                        cursor.pop();
+                        if (!hasProperties) {
+                            //the activation-config element that we created is empty so delete it
+                            cursor.toPrevSibling();
+                            cursor.removeXml();
+                            //cursor should now be at first element in JNDIEnvironmentRefsGroup
+                        }
+                    } else {
+                        //cursor pointing at activation-config
+                        cursor.toNextSibling();
+                        //cursor should now be at first element in JNDIEnvironmentRefsGroup
+                    }
+                    SchemaConversionUtils.convertToJNDIEnvironmentRefsGroup(SchemaConversionUtils.J2EE_NAMESPACE, cursor, moveable);
+                }
+                cursor.pop();
+            } while (cursor.toNextSibling());
+        }
+    }
+
+    private static boolean addActivationConfigProperty(XmlCursor moveable, XmlCursor cursor, String elementName, String propertyName) {
+        QName name = new QName(SchemaConversionUtils.J2EE_NAMESPACE, elementName);
+        if (name.equals(moveable.getName()) || moveable.toNextSibling(name)) {
+            cursor.push();
+            cursor.beginElement("activation-config-property", SchemaConversionUtils.J2EE_NAMESPACE);
+            cursor.insertElementWithText("activation-config-property-name", SchemaConversionUtils.J2EE_NAMESPACE, propertyName);
+            cursor.insertElementWithText("activation-config-property-value", SchemaConversionUtils.J2EE_NAMESPACE, moveable.getTextValue());
+            moveable.removeXml();
+            cursor.pop();
+            cursor.toNextSibling();
+            return true;
+        }
+        return false;
+    }
+
     public void installModule(JarFile earFile, EARContext earContext, Module module, Collection configurationStores, ConfigurationStore targetConfigurationStore, Collection repository) throws DeploymentException {
         JarFile moduleFile = module.getModuleFile();
         try {
@@ -652,11 +800,4 @@
         return GBEAN_INFO;
     }
 
-    public ActivationSpecInfoLocator getActivationSpecInfoLocator() {
-        return activationSpecInfoLocator;
-    }
-
-    public ResourceEnvironmentSetter getResourceEnvironmentSetter() {
-        return resourceEnvironmentSetter;
-    }
 }

Modified: incubator/openejb/trunk/openejb2/modules/openejb-builder/src/main/java/org/openejb/deployment/XmlBeansHelper.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb2/modules/openejb-builder/src/main/java/org/openejb/deployment/XmlBeansHelper.java?view=diff&rev=449796&r1=449795&r2=449796
==============================================================================
--- incubator/openejb/trunk/openejb2/modules/openejb-builder/src/main/java/org/openejb/deployment/XmlBeansHelper.java (original)
+++ incubator/openejb/trunk/openejb2/modules/openejb-builder/src/main/java/org/openejb/deployment/XmlBeansHelper.java Mon Sep 25 13:03:25 2006
@@ -79,7 +79,7 @@
 
     public static EjbJarType loadEjbJar(File file) throws IOException, XmlException {
         EjbJarDocument ejbJarDoc = ((EjbJarDocument) XmlObject.Factory.parse(file));
-        ejbJarDoc = SchemaConversionUtils.convertToEJBSchema(ejbJarDoc);
+        ejbJarDoc = OpenEjbModuleBuilder.convertToEJBSchema(ejbJarDoc);
         return ejbJarDoc.getEjbJar();
     }
 

Modified: incubator/openejb/trunk/openejb2/modules/openejb-builder/src/main/java/org/openejb/deployment/ant/DDLExporterTask.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb2/modules/openejb-builder/src/main/java/org/openejb/deployment/ant/DDLExporterTask.java?view=diff&rev=449796&r1=449795&r2=449796
==============================================================================
--- incubator/openejb/trunk/openejb2/modules/openejb-builder/src/main/java/org/openejb/deployment/ant/DDLExporterTask.java (original)
+++ incubator/openejb/trunk/openejb2/modules/openejb-builder/src/main/java/org/openejb/deployment/ant/DDLExporterTask.java Mon Sep 25 13:03:25 2006
@@ -71,6 +71,7 @@
 import org.apache.xmlbeans.XmlObject;
 import org.openejb.deployment.CmpSchemaBuilder;
 import org.openejb.deployment.TranqlCmpSchemaBuilder;
+import org.openejb.deployment.OpenEjbModuleBuilder;
 import org.openejb.entity.cmp.ModuleSchema;
 import org.openejb.entity.cmp.TranqlSchemaBuilder;
 import org.openejb.xbeans.ejbjar.OpenejbOpenejbJarDocument;
@@ -157,7 +158,7 @@
             } finally {
                 in.close();
             }
-            EjbJarType ejbJarType = SchemaConversionUtils.convertToEJBSchema(xmlObject).getEjbJar();
+            EjbJarType ejbJarType = OpenEjbModuleBuilder.convertToEJBSchema(xmlObject).getEjbJar();
 
             in = openejbJarLocation.getInputStream(project);
             try {

Added: incubator/openejb/trunk/openejb2/modules/openejb-builder/src/test/java/org/openejb/deployment/SchemaConversionTest.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb2/modules/openejb-builder/src/test/java/org/openejb/deployment/SchemaConversionTest.java?view=auto&rev=449796
==============================================================================
--- incubator/openejb/trunk/openejb2/modules/openejb-builder/src/test/java/org/openejb/deployment/SchemaConversionTest.java (added)
+++ incubator/openejb/trunk/openejb2/modules/openejb-builder/src/test/java/org/openejb/deployment/SchemaConversionTest.java Mon Sep 25 13:03:25 2006
@@ -0,0 +1,175 @@
+/*
+ * 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.openejb.deployment;
+
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+
+import junit.framework.Assert;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.geronimo.deployment.xmlbeans.XmlBeansUtil;
+import org.apache.geronimo.schema.SchemaConversionUtils;
+import org.apache.geronimo.testsupport.XmlBeansTestSupport;
+import org.apache.xmlbeans.XmlCursor;
+import org.apache.xmlbeans.XmlObject;
+
+/**
+ * ejb 1.1 dtd appears to be a subset of ejb 2.0 dtd so the same xsl should
+ * work for both.
+ *
+ * @version $Rev$ $Date$
+ */
+public class SchemaConversionTest extends XmlBeansTestSupport {
+    private static final Log log = LogFactory.getLog(SchemaConversionTest.class);
+
+    private ClassLoader classLoader = this.getClass().getClassLoader();
+
+    public void testEJB11ToEJB21Transform() throws Exception {
+        URL srcXml = classLoader.getResource("j2ee_1_2dtd/ejb-1-11.xml");
+        URL expectedOutputXml = classLoader.getResource("j2ee_1_2dtd/ejb-1-21.xml");
+        XmlObject xmlObject = XmlObject.Factory.parse(srcXml);
+        XmlObject expected = XmlObject.Factory.parse(expectedOutputXml);
+        XmlBeansUtil.validateDD(expected);
+        xmlObject = OpenEjbModuleBuilder.convertToEJBSchema(xmlObject);
+//        log.debug(xmlObject.toString());
+//        log.debug(expected.toString());
+        List problems = new ArrayList();
+        boolean ok = compareXmlObjects(xmlObject, expected, problems);
+        Assert.assertTrue("Differences: " + problems, ok);
+        //make sure trying to convert twice has no bad effects
+        XmlCursor cursor2 = xmlObject.newCursor();
+        try {
+            String schemaLocationURL = "http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd";
+            String version = "2.1";
+            Assert.assertFalse(SchemaConversionUtils.convertToSchema(cursor2, SchemaConversionUtils.J2EE_NAMESPACE, schemaLocationURL, version));
+        } finally {
+            cursor2.dispose();
+        }
+        boolean ok2 = compareXmlObjects(xmlObject, expected, problems);
+        Assert.assertTrue("Differences after reconverting to schema: " + problems, ok2);
+        //do the whole transform twice...
+        xmlObject = OpenEjbModuleBuilder.convertToEJBSchema(xmlObject);
+        boolean ok3 = compareXmlObjects(xmlObject, expected, problems);
+        Assert.assertTrue("Differences after reconverting to ejb schema: " + problems, ok3);
+    }
+
+    public void testEJB20ToEJB21Transform() throws Exception {
+        URL srcXml = classLoader.getResource("j2ee_1_3dtd/ejb-jar.xml");
+        URL expectedOutputXml = classLoader.getResource("j2ee_1_3dtd/ejb-jar-21.xml");
+        XmlObject xmlObject = XmlObject.Factory.parse(srcXml);
+        XmlObject expected = XmlObject.Factory.parse(expectedOutputXml);
+        XmlBeansUtil.validateDD(expected);
+        xmlObject = OpenEjbModuleBuilder.convertToEJBSchema(xmlObject);
+//        log.debug(xmlObject.toString());
+//        log.debug(expected.toString());
+        List problems = new ArrayList();
+        boolean ok = compareXmlObjects(xmlObject, expected, problems);
+        Assert.assertTrue("Differences: " + problems, ok);
+        //make sure trying to convert twice has no bad effects
+        XmlCursor cursor2 = xmlObject.newCursor();
+        try {
+            String schemaLocationURL = "http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd";
+            String version = "2.1";
+            Assert.assertFalse(SchemaConversionUtils.convertToSchema(cursor2, SchemaConversionUtils.J2EE_NAMESPACE, schemaLocationURL, version));
+        } finally {
+            cursor2.dispose();
+        }
+        boolean ok2 = compareXmlObjects(xmlObject, expected, problems);
+        Assert.assertTrue("Differences after reconverting to schema: " + problems, ok2);
+        //do the whole transform twice...
+        xmlObject = OpenEjbModuleBuilder.convertToEJBSchema(xmlObject);
+        boolean ok3 = compareXmlObjects(xmlObject, expected, problems);
+        Assert.assertTrue("Differences after reconverting to ejb schema: " + problems, ok3);
+    }
+
+    public void testMDB20ToEJB21TransformBugGERONIMO_1649() throws Exception {
+        URL srcXml = classLoader.getResource("j2ee_1_3dtd/mdb-ejb-jar-20-GERONIMO-1649.xml");
+        URL expectedOutputXml = classLoader.getResource("j2ee_1_3dtd/mdb-ejb-jar-21-GERONIMO-1649.xml");
+        XmlObject xmlObject = XmlObject.Factory.parse(srcXml);
+        XmlObject expected = XmlObject.Factory.parse(expectedOutputXml);
+        XmlBeansUtil.validateDD(expected);
+        xmlObject = OpenEjbModuleBuilder.convertToEJBSchema(xmlObject);
+//        log.debug(xmlObject.toString());
+//        log.debug(expected.toString());
+        List problems = new ArrayList();
+        boolean ok = compareXmlObjects(xmlObject, expected, problems);
+        Assert.assertTrue("Differences: " + problems, ok);
+        //make sure trying to convert twice has no bad effects
+        XmlCursor cursor2 = xmlObject.newCursor();
+        try {
+            String schemaLocationURL = "http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd";
+            String version = "2.1";
+            Assert.assertFalse(SchemaConversionUtils.convertToSchema(cursor2, SchemaConversionUtils.J2EE_NAMESPACE, schemaLocationURL, version));
+        } finally {
+            cursor2.dispose();
+        }
+        boolean ok2 = compareXmlObjects(xmlObject, expected, problems);
+        Assert.assertTrue("Differences after reconverting to schema: " + problems, ok2);
+        //do the whole transform twice...
+        xmlObject = OpenEjbModuleBuilder.convertToEJBSchema(xmlObject);
+        boolean ok3 = compareXmlObjects(xmlObject, expected, problems);
+        Assert.assertTrue("Differences after reconverting to ejb schema: " + problems, ok3);
+    }
+
+    public void testMDB20To21Transform() throws Exception {
+        URL srcXml = classLoader.getResource("j2ee_1_3dtd/mdb-ejb-jar-20.xml");
+        URL expectedOutputXml = classLoader.getResource("j2ee_1_3dtd/mdb-ejb-jar-21.xml");
+        XmlObject xmlObject = XmlObject.Factory.parse(srcXml);
+        XmlObject expected = XmlObject.Factory.parse(expectedOutputXml);
+        XmlBeansUtil.validateDD(expected);
+        xmlObject = OpenEjbModuleBuilder.convertToEJBSchema(xmlObject);
+//        log.debug(xmlObject.toString());
+//        log.debug(expected.toString());
+        List problems = new ArrayList();
+        boolean ok = compareXmlObjects(xmlObject, expected, problems);
+        Assert.assertTrue("Differences: " + problems, ok);
+        //make sure trying to convert twice has no bad effects
+        XmlCursor cursor2 = xmlObject.newCursor();
+        try {
+            String schemaLocationURL = "http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd";
+            String version = "2.1";
+            Assert.assertFalse(SchemaConversionUtils.convertToSchema(cursor2, SchemaConversionUtils.J2EE_NAMESPACE, schemaLocationURL, version));
+        } finally {
+            cursor2.dispose();
+        }
+        boolean ok2 = compareXmlObjects(xmlObject, expected, problems);
+        Assert.assertTrue("Differences after reconverting to schema: " + problems, ok2);
+        //do the whole transform twice...
+        xmlObject = OpenEjbModuleBuilder.convertToEJBSchema(xmlObject);
+        boolean ok3 = compareXmlObjects(xmlObject, expected, problems);
+        Assert.assertTrue("Differences after reconverting to ejb schema: " + problems, ok3);
+    }
+
+
+    public void testEJB21To21DoesNothing() throws Exception {
+        URL srcXml = classLoader.getResource("j2ee_1_4schema/ejb-jar.xml");
+        URL expectedOutputXml = classLoader.getResource("j2ee_1_4schema/ejb-jar.xml");
+        XmlObject xmlObject = XmlObject.Factory.parse(srcXml);
+        xmlObject = OpenEjbModuleBuilder.convertToEJBSchema(xmlObject);
+        XmlObject expected = XmlObject.Factory.parse(expectedOutputXml);
+        List problems = new ArrayList();
+        boolean ok = compareXmlObjects(xmlObject, expected, problems);
+        Assert.assertTrue("Differences: " + problems, ok);
+    }
+
+}

Propchange: incubator/openejb/trunk/openejb2/modules/openejb-builder/src/test/java/org/openejb/deployment/SchemaConversionTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/openejb/trunk/openejb2/modules/openejb-builder/src/test/java/org/openejb/deployment/SchemaConversionTest.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: incubator/openejb/trunk/openejb2/modules/openejb-builder/src/test/java/org/openejb/deployment/SchemaConversionTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: incubator/openejb/trunk/openejb2/pom.xml
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb2/pom.xml?view=diff&rev=449796&r1=449795&r2=449796
==============================================================================
--- incubator/openejb/trunk/openejb2/pom.xml (original)
+++ incubator/openejb/trunk/openejb2/pom.xml Mon Sep 25 13:03:25 2006
@@ -674,6 +674,9 @@
 
         <testResources>
             <testResource>
+                <directory>src/test/resources</directory>
+            </testResource>
+            <testResource>
                 <directory>src/test-data</directory>
             </testResource>
             <testResource>