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

svn commit: r449536 - in /geronimo/server/trunk/modules: geronimo-clustering-wadi/ geronimo-j2ee-schema/src/main/java/org/apache/geronimo/schema/ geronimo-j2ee-schema/src/test/java/org/apache/geronimo/schema/ geronimo-j2ee-schema/src/test/resources/j2e...

Author: djencks
Date: Sun Sep 24 17:52:25 2006
New Revision: 449536

URL: http://svn.apache.org/viewvc?view=rev&rev=449536
Log:
GERONIMO-2414 move the web conversions to AbstractWebModuleBuilder

Added:
    geronimo/server/trunk/modules/geronimo-web-builder/src/test/java/org/apache/geronimo/web/deployment/SchemaConversionTest.java   (with props)
    geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_2dtd/
    geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_2dtd/web-1-22.xml   (contents, props changed)
      - copied, changed from r449524, geronimo/server/trunk/modules/geronimo-j2ee-schema/src/test/resources/j2ee_1_2dtd/web-1-22.xml
    geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_2dtd/web-1-24.xml   (contents, props changed)
      - copied, changed from r449524, geronimo/server/trunk/modules/geronimo-j2ee-schema/src/test/resources/j2ee_1_2dtd/web-1-24.xml
    geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_3dtd/
    geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_3dtd/web-1-23.xml   (contents, props changed)
      - copied, changed from r449524, geronimo/server/trunk/modules/geronimo-j2ee-schema/src/test/resources/j2ee_1_3dtd/web-1-23.xml
    geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_3dtd/web-1-24.xml   (contents, props changed)
      - copied, changed from r449524, geronimo/server/trunk/modules/geronimo-j2ee-schema/src/test/resources/j2ee_1_3dtd/web-1-24.xml
    geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_3dtd/web-23.xml   (contents, props changed)
      - copied, changed from r449524, geronimo/server/trunk/modules/geronimo-j2ee-schema/src/test/resources/j2ee_1_3dtd/web-23.xml
    geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_3dtd/web-24.xml   (contents, props changed)
      - copied, changed from r449524, geronimo/server/trunk/modules/geronimo-j2ee-schema/src/test/resources/j2ee_1_3dtd/web-24.xml
    geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_4schema/
    geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_4schema/web-1-24.xml   (contents, props changed)
      - copied, changed from r449524, geronimo/server/trunk/modules/geronimo-j2ee-schema/src/test/resources/j2ee_1_4schema/web-1-24.xml
    geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_4schema/web-2-24.xml   (contents, props changed)
      - copied, changed from r449524, geronimo/server/trunk/modules/geronimo-j2ee-schema/src/test/resources/j2ee_1_4schema/web-2-24.xml
Removed:
    geronimo/server/trunk/modules/geronimo-j2ee-schema/src/test/resources/j2ee_1_2dtd/web-1-22.xml
    geronimo/server/trunk/modules/geronimo-j2ee-schema/src/test/resources/j2ee_1_2dtd/web-1-24.xml
    geronimo/server/trunk/modules/geronimo-j2ee-schema/src/test/resources/j2ee_1_3dtd/web-1-23.xml
    geronimo/server/trunk/modules/geronimo-j2ee-schema/src/test/resources/j2ee_1_3dtd/web-1-24.xml
    geronimo/server/trunk/modules/geronimo-j2ee-schema/src/test/resources/j2ee_1_3dtd/web-23.xml
    geronimo/server/trunk/modules/geronimo-j2ee-schema/src/test/resources/j2ee_1_3dtd/web-24.xml
    geronimo/server/trunk/modules/geronimo-j2ee-schema/src/test/resources/j2ee_1_4schema/web-1-24.xml
    geronimo/server/trunk/modules/geronimo-j2ee-schema/src/test/resources/j2ee_1_4schema/web-2-24.xml
Modified:
    geronimo/server/trunk/modules/geronimo-clustering-wadi/pom.xml
    geronimo/server/trunk/modules/geronimo-j2ee-schema/src/main/java/org/apache/geronimo/schema/SchemaConversionUtils.java
    geronimo/server/trunk/modules/geronimo-j2ee-schema/src/test/java/org/apache/geronimo/schema/SchemaConversionUtilsTest.java
    geronimo/server/trunk/modules/geronimo-jetty-builder/src/main/java/org/apache/geronimo/jetty/deployment/JettyModuleBuilder.java
    geronimo/server/trunk/modules/geronimo-tomcat-builder/src/main/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java
    geronimo/server/trunk/modules/geronimo-web-builder/src/main/java/org/apache/geronimo/web/deployment/AbstractWebModuleBuilder.java

Modified: geronimo/server/trunk/modules/geronimo-clustering-wadi/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-clustering-wadi/pom.xml?view=diff&rev=449536&r1=449535&r2=449536
==============================================================================
--- geronimo/server/trunk/modules/geronimo-clustering-wadi/pom.xml (original)
+++ geronimo/server/trunk/modules/geronimo-clustering-wadi/pom.xml Sun Sep 24 17:52:25 2006
@@ -67,11 +67,11 @@
             <version>${pom.version}</version>
         </dependency>
 
-        <dependency>
-            <groupId>${pom.groupId}</groupId>
-            <artifactId>geronimo-jetty</artifactId>
-            <version>${pom.version}</version>
-        </dependency>
+        <!--<dependency>-->
+            <!--<groupId>${pom.groupId}</groupId>-->
+            <!--<artifactId>geronimo-jetty</artifactId>-->
+            <!--<version>${pom.version}</version>-->
+        <!--</dependency>-->
         
         <dependency>
             <groupId>org.apache.geronimo.specs</groupId>
@@ -99,10 +99,6 @@
             <artifactId>wadi-tribes</artifactId>
         </dependency>
 
-        <dependency>
-            <groupId>org.codehaus.wadi</groupId>
-            <artifactId>wadi-tribes</artifactId>
-        </dependency>
     </dependencies>
     
 </project>

Modified: geronimo/server/trunk/modules/geronimo-j2ee-schema/src/main/java/org/apache/geronimo/schema/SchemaConversionUtils.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-j2ee-schema/src/main/java/org/apache/geronimo/schema/SchemaConversionUtils.java?view=diff&rev=449536&r1=449535&r2=449536
==============================================================================
--- geronimo/server/trunk/modules/geronimo-j2ee-schema/src/main/java/org/apache/geronimo/schema/SchemaConversionUtils.java (original)
+++ geronimo/server/trunk/modules/geronimo-j2ee-schema/src/main/java/org/apache/geronimo/schema/SchemaConversionUtils.java Sun Sep 24 17:52:25 2006
@@ -46,7 +46,6 @@
     private static final String GERONIMO_SERVICE_NAMESPACE = "http://geronimo.apache.org/xml/ns/deployment-1.2";
 
     private static final QName RESOURCE_ADAPTER_VERSION = new QName(J2EE_NAMESPACE, "resourceadapter-version");
-    private static final QName TAGLIB = new QName(J2EE_NAMESPACE, "taglib");
     private static final QName CMP_VERSION = new QName(J2EE_NAMESPACE, "cmp-version");
 
     private static final Map GERONIMO_SCHEMA_CONVERSIONS = new HashMap();
@@ -253,78 +252,6 @@
         }
         XmlBeansUtil.validateDD(xmlObject);
         return (EjbJarDocument) xmlObject;
-    }
-
-    public static WebAppDocument convertToServletSchema(XmlObject xmlObject) throws XmlException {
-        if (WebAppDocument.type.equals(xmlObject.schemaType())) {
-            XmlBeansUtil.validateDD(xmlObject);
-            return (WebAppDocument) xmlObject;
-        }
-        XmlCursor cursor = xmlObject.newCursor();
-        try {
-            cursor.toStartDoc();
-            cursor.toFirstChild();
-            if ("http://java.sun.com/xml/ns/j2ee".equals(cursor.getName().getNamespaceURI())) {
-                XmlObject result = xmlObject.changeType(WebAppDocument.type);
-                XmlBeansUtil.validateDD(result);
-                return (WebAppDocument) result;
-            }
-
-            XmlDocumentProperties xmlDocumentProperties = cursor.documentProperties();
-            String publicId = xmlDocumentProperties.getDoctypePublicId();
-            if ("-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN".equals(publicId) ||
-                    "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN".equals(publicId)) {
-                XmlCursor moveable = xmlObject.newCursor();
-                try {
-                    moveable.toStartDoc();
-                    moveable.toFirstChild();
-                    String schemaLocationURL = "http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd";
-                    String version = "2.4";
-                    convertToSchema(cursor, J2EE_NAMESPACE, schemaLocationURL, version);
-                    cursor.toStartDoc();
-                    cursor.toChild(J2EE_NAMESPACE, "web-app");
-                    cursor.toFirstChild();
-                    convertToDescriptionGroup(J2EE_NAMESPACE, cursor, moveable);
-                    convertToJNDIEnvironmentRefsGroup(J2EE_NAMESPACE, cursor, moveable);
-                    cursor.push();
-                    if (cursor.toNextSibling(TAGLIB)) {
-                        cursor.toPrevSibling();
-                        moveable.toCursor(cursor);
-                        cursor.beginElement("jsp-config", J2EE_NAMESPACE);
-                        while (moveable.toNextSibling(TAGLIB)) {
-                            moveable.moveXml(cursor);
-                        }
-                    }
-                    cursor.pop();
-                    do {
-                        String name = cursor.getName().getLocalPart();
-                        if ("filter".equals(name) || "servlet".equals(name) || "context-param".equals(name)) {
-                            cursor.push();
-                            cursor.toFirstChild();
-                            convertToDescriptionGroup(J2EE_NAMESPACE, cursor, moveable);
-                            while (cursor.toNextSibling(J2EE_NAMESPACE, "init-param")) {
-                                cursor.push();
-                                cursor.toFirstChild();
-                                convertToDescriptionGroup(J2EE_NAMESPACE, cursor, moveable);
-                                cursor.pop();
-                            }
-                            cursor.pop();
-                        }
-                    } while (cursor.toNextSibling());
-                } finally {
-                    moveable.dispose();
-                }
-            }
-        } finally {
-            cursor.dispose();
-        }
-        XmlObject result = xmlObject.changeType(WebAppDocument.type);
-        if (result != null) {
-            XmlBeansUtil.validateDD(result);
-            return (WebAppDocument) result;
-        }
-        XmlBeansUtil.validateDD(xmlObject);
-        return (WebAppDocument) xmlObject;
     }
 
     public static void convertToGeronimoSubSchemas(XmlCursor cursor) {

Modified: geronimo/server/trunk/modules/geronimo-j2ee-schema/src/test/java/org/apache/geronimo/schema/SchemaConversionUtilsTest.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-j2ee-schema/src/test/java/org/apache/geronimo/schema/SchemaConversionUtilsTest.java?view=diff&rev=449536&r1=449535&r2=449536
==============================================================================
--- geronimo/server/trunk/modules/geronimo-j2ee-schema/src/test/java/org/apache/geronimo/schema/SchemaConversionUtilsTest.java (original)
+++ geronimo/server/trunk/modules/geronimo-j2ee-schema/src/test/java/org/apache/geronimo/schema/SchemaConversionUtilsTest.java Sun Sep 24 17:52:25 2006
@@ -23,12 +23,12 @@
 
 import javax.xml.namespace.QName;
 
-import junit.framework.TestCase;
 import org.apache.xmlbeans.XmlCursor;
 import org.apache.xmlbeans.XmlObject;
 import org.apache.xmlbeans.XmlException;
 import org.apache.geronimo.xbeans.j2ee.EjbJarType;
 import org.apache.geronimo.deployment.xmlbeans.XmlBeansUtil;
+import org.apache.geronimo.testsupport.XmlBeansTestSupport;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -39,7 +39,7 @@
  *
  * @version $Rev$ $Date$
  */
-public class SchemaConversionUtilsTest extends TestCase {
+public class SchemaConversionUtilsTest extends XmlBeansTestSupport {
     private static final Log log = LogFactory.getLog(SchemaConversionUtilsTest.class);
     
     private ClassLoader classLoader = this.getClass().getClassLoader();
@@ -323,70 +323,6 @@
         assertTrue("Differences: " + problems, ok);
     }
 
-    public void testWeb23To24Transform() throws Exception {
-        URL srcXml = classLoader.getResource("j2ee_1_3dtd/web-23.xml");
-        URL expectedOutputXml = classLoader.getResource("j2ee_1_3dtd/web-24.xml");
-        XmlObject xmlObject = XmlObject.Factory.parse(srcXml);
-        xmlObject = SchemaConversionUtils.convertToServletSchema(xmlObject);
-        XmlObject expected = XmlObject.Factory.parse(expectedOutputXml);
-//        log.debug(xmlObject.toString());
-//        log.debug(expected.toString());
-        List problems = new ArrayList();
-        boolean ok = compareXmlObjects(xmlObject, expected, problems);
-        assertTrue("Differences: " + problems, ok);
-        xmlObject = SchemaConversionUtils.convertToServletSchema(xmlObject);
-        boolean ok2 = compareXmlObjects(xmlObject, expected, problems);
-        assertTrue("Differences: " + problems, ok2);
-    }
-
-    public void testWeb23To24OtherTransform() throws Exception {
-        URL srcXml = classLoader.getResource("j2ee_1_3dtd/web-1-23.xml");
-        URL expectedOutputXml = classLoader.getResource("j2ee_1_3dtd/web-1-24.xml");
-        XmlObject xmlObject = XmlObject.Factory.parse(srcXml);
-        xmlObject = SchemaConversionUtils.convertToServletSchema(xmlObject);
-//        log.debug(xmlObject.toString());
-        XmlObject expected = XmlObject.Factory.parse(expectedOutputXml);
-        List problems = new ArrayList();
-        boolean ok = compareXmlObjects(xmlObject, expected, problems);
-        assertTrue("Differences: " + problems, ok);
-        xmlObject = SchemaConversionUtils.convertToServletSchema(xmlObject);
-        boolean ok2 = compareXmlObjects(xmlObject, expected, problems);
-        assertTrue("Differences: " + problems, ok2);
-    }
-
-    public void testWeb22To24Transform1() throws Exception {
-        URL srcXml = classLoader.getResource("j2ee_1_2dtd/web-1-22.xml");
-        URL expectedOutputXml = classLoader.getResource("j2ee_1_2dtd/web-1-24.xml");
-        XmlObject xmlObject = XmlObject.Factory.parse(srcXml);
-        xmlObject = SchemaConversionUtils.convertToServletSchema(xmlObject);
-        XmlObject expected = XmlObject.Factory.parse(expectedOutputXml);
-//        log.debug(xmlObject.toString());
-//        log.debug(expected.toString());
-        List problems = new ArrayList();
-        boolean ok = compareXmlObjects(xmlObject, expected, problems);
-        assertTrue("Differences: " + problems, ok);
-        xmlObject = SchemaConversionUtils.convertToServletSchema(xmlObject);
-        boolean ok2 = compareXmlObjects(xmlObject, expected, problems);
-        assertTrue("Differences: " + problems, ok2);
-    }
-
-    public void testWebRejectBad24() throws Exception {
-        URL srcXml = classLoader.getResource("j2ee_1_4schema/web-1-24.xml");
-        XmlObject xmlObject = XmlObject.Factory.parse(srcXml);
-        try {
-            xmlObject = SchemaConversionUtils.convertToServletSchema(xmlObject);
-            fail("doc src/test-data/j2ee_1_4schema/web-1-24.xml is invalid, should not have validated");
-        } catch (XmlException e) {
-            //expected
-        }
-    }
-
-    public void testParseWeb24() throws Exception {
-        URL srcXml = classLoader.getResource("j2ee_1_4schema/web-2-24.xml");
-        XmlObject xmlObject = XmlObject.Factory.parse(srcXml);
-        xmlObject = SchemaConversionUtils.convertToServletSchema(xmlObject);
-    }
-
     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");
@@ -546,43 +482,6 @@
             cursor.dispose();
         }
 
-    }
-
-    private boolean compareXmlObjects(XmlObject xmlObject, XmlObject expectedObject, List problems) {
-        XmlCursor test = xmlObject.newCursor();
-        XmlCursor expected = expectedObject.newCursor();
-        boolean similar = true;
-        int elementCount = 0;
-        while (toNextStartToken(test)) {
-            elementCount++;
-            if (!toNextStartToken(expected)) {
-                problems.add("test longer than expected at element: " + elementCount);
-                return false;
-            }
-            QName actualQName = test.getName();
-            QName expectedQName = expected.getName();
-            if (!actualQName.equals(expectedQName)) {
-                problems.add("Different elements at elementCount: " + elementCount + ", test: " + actualQName + ", expected: " + expectedQName);
-                similar = false;
-            }
-            test.toNextToken();
-            expected.toNextToken();
-        }
-        if (toNextStartToken(expected)) {
-            problems.add("test shorter that expected at element: " + elementCount);
-            similar = false;
-        }
-        return similar;
-    }
-
-    private boolean toNextStartToken(XmlCursor cursor) {
-        while (!cursor.isStart()) {
-            if (!cursor.hasNextToken()) {
-                return false;
-            }
-            cursor.toNextToken();
-        }
-        return true;
     }
 
 }

Modified: geronimo/server/trunk/modules/geronimo-jetty-builder/src/main/java/org/apache/geronimo/jetty/deployment/JettyModuleBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-jetty-builder/src/main/java/org/apache/geronimo/jetty/deployment/JettyModuleBuilder.java?view=diff&rev=449536&r1=449535&r2=449536
==============================================================================
--- geronimo/server/trunk/modules/geronimo-jetty-builder/src/main/java/org/apache/geronimo/jetty/deployment/JettyModuleBuilder.java (original)
+++ geronimo/server/trunk/modules/geronimo-jetty-builder/src/main/java/org/apache/geronimo/jetty/deployment/JettyModuleBuilder.java Sun Sep 24 17:52:25 2006
@@ -82,7 +82,6 @@
 import org.apache.geronimo.naming.deployment.ENCConfigBuilder;
 import org.apache.geronimo.naming.deployment.GBeanResourceEnvironmentBuilder;
 import org.apache.geronimo.naming.deployment.ResourceEnvironmentSetter;
-import org.apache.geronimo.schema.SchemaConversionUtils;
 import org.apache.geronimo.security.deploy.DefaultPrincipal;
 import org.apache.geronimo.security.deployment.SecurityConfiguration;
 import org.apache.geronimo.security.jacc.ComponentPermissions;
@@ -204,7 +203,7 @@
         try {
             // parse it
             XmlObject parsed = XmlBeansUtil.parse(specDD);
-            WebAppDocument webAppDoc = SchemaConversionUtils.convertToServletSchema(parsed);
+            WebAppDocument webAppDoc = convertToServletSchema(parsed);
             webApp = webAppDoc.getWebApp();
         } catch (XmlException xmle) {
             // Output the target path in the error to make it clearer to the user which webapp

Modified: geronimo/server/trunk/modules/geronimo-tomcat-builder/src/main/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-tomcat-builder/src/main/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java?view=diff&rev=449536&r1=449535&r2=449536
==============================================================================
--- geronimo/server/trunk/modules/geronimo-tomcat-builder/src/main/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java (original)
+++ geronimo/server/trunk/modules/geronimo-tomcat-builder/src/main/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java Sun Sep 24 17:52:25 2006
@@ -62,7 +62,6 @@
 import org.apache.geronimo.naming.deployment.ENCConfigBuilder;
 import org.apache.geronimo.naming.deployment.GBeanResourceEnvironmentBuilder;
 import org.apache.geronimo.naming.deployment.ResourceEnvironmentSetter;
-import org.apache.geronimo.schema.SchemaConversionUtils;
 import org.apache.geronimo.security.deploy.DefaultPrincipal;
 import org.apache.geronimo.security.deployment.SecurityConfiguration;
 import org.apache.geronimo.security.jacc.ComponentPermissions;
@@ -142,7 +141,7 @@
         try {
             // parse it
             XmlObject parsed = XmlBeansUtil.parse(specDD);
-            WebAppDocument webAppDoc = SchemaConversionUtils.convertToServletSchema(parsed);
+            WebAppDocument webAppDoc = convertToServletSchema(parsed);
             webApp = webAppDoc.getWebApp();
         } catch (XmlException xmle) {
             // Output the target path in the error to make it clearer to the user which webapp

Modified: geronimo/server/trunk/modules/geronimo-web-builder/src/main/java/org/apache/geronimo/web/deployment/AbstractWebModuleBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-web-builder/src/main/java/org/apache/geronimo/web/deployment/AbstractWebModuleBuilder.java?view=diff&rev=449536&r1=449535&r2=449536
==============================================================================
--- geronimo/server/trunk/modules/geronimo-web-builder/src/main/java/org/apache/geronimo/web/deployment/AbstractWebModuleBuilder.java (original)
+++ geronimo/server/trunk/modules/geronimo-web-builder/src/main/java/org/apache/geronimo/web/deployment/AbstractWebModuleBuilder.java Sun Sep 24 17:52:25 2006
@@ -76,15 +76,21 @@
 import org.apache.geronimo.xbeans.j2ee.UrlPatternType;
 import org.apache.geronimo.xbeans.j2ee.WebAppType;
 import org.apache.geronimo.xbeans.j2ee.WebResourceCollectionType;
+import org.apache.geronimo.xbeans.j2ee.WebAppDocument;
 import org.apache.geronimo.xbeans.geronimo.j2ee.GerSecurityDocument;
 import org.apache.geronimo.naming.deployment.ResourceEnvironmentSetter;
+import org.apache.geronimo.schema.SchemaConversionUtils;
 import org.apache.xmlbeans.XmlObject;
+import org.apache.xmlbeans.XmlException;
+import org.apache.xmlbeans.XmlCursor;
+import org.apache.xmlbeans.XmlDocumentProperties;
 
 /**
  * @version $Rev$ $Date$
  */
 public abstract class AbstractWebModuleBuilder implements ModuleBuilder {
     private static final Log log = LogFactory.getLog(AbstractWebModuleBuilder.class);
+    private static final QName TAGLIB = new QName(SchemaConversionUtils.J2EE_NAMESPACE, "taglib");
     private static final String LINE_SEP = System.getProperty("line.separator");
 
     protected static final AbstractNameQuery MANAGED_CONNECTION_FACTORY_PATTERN;
@@ -591,6 +597,78 @@
         }
         securityBuilders.build(gerWebApp, earContext, module.getEarContext());
         serviceBuilders.build(gerWebApp, earContext, module.getEarContext());
+    }
+
+    protected static WebAppDocument convertToServletSchema(XmlObject xmlObject) throws XmlException {
+        if (WebAppDocument.type.equals(xmlObject.schemaType())) {
+            XmlBeansUtil.validateDD(xmlObject);
+            return (WebAppDocument) xmlObject;
+        }
+        XmlCursor cursor = xmlObject.newCursor();
+        try {
+            cursor.toStartDoc();
+            cursor.toFirstChild();
+            if (SchemaConversionUtils.J2EE_NAMESPACE.equals(cursor.getName().getNamespaceURI())) {
+                XmlObject result = xmlObject.changeType(WebAppDocument.type);
+                XmlBeansUtil.validateDD(result);
+                return (WebAppDocument) result;
+            }
+
+            XmlDocumentProperties xmlDocumentProperties = cursor.documentProperties();
+            String publicId = xmlDocumentProperties.getDoctypePublicId();
+            if ("-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN".equals(publicId) ||
+                    "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN".equals(publicId)) {
+                XmlCursor moveable = xmlObject.newCursor();
+                try {
+                    moveable.toStartDoc();
+                    moveable.toFirstChild();
+                    String schemaLocationURL = "http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd";
+                    String version = "2.4";
+                    SchemaConversionUtils.convertToSchema(cursor, SchemaConversionUtils.J2EE_NAMESPACE, schemaLocationURL, version);
+                    cursor.toStartDoc();
+                    cursor.toChild(SchemaConversionUtils.J2EE_NAMESPACE, "web-app");
+                    cursor.toFirstChild();
+                    SchemaConversionUtils.convertToDescriptionGroup(SchemaConversionUtils.J2EE_NAMESPACE, cursor, moveable);
+                    SchemaConversionUtils.convertToJNDIEnvironmentRefsGroup(SchemaConversionUtils.J2EE_NAMESPACE, cursor, moveable);
+                    cursor.push();
+                    if (cursor.toNextSibling(TAGLIB)) {
+                        cursor.toPrevSibling();
+                        moveable.toCursor(cursor);
+                        cursor.beginElement("jsp-config", SchemaConversionUtils.J2EE_NAMESPACE);
+                        while (moveable.toNextSibling(TAGLIB)) {
+                            moveable.moveXml(cursor);
+                        }
+                    }
+                    cursor.pop();
+                    do {
+                        String name = cursor.getName().getLocalPart();
+                        if ("filter".equals(name) || "servlet".equals(name) || "context-param".equals(name)) {
+                            cursor.push();
+                            cursor.toFirstChild();
+                            SchemaConversionUtils.convertToDescriptionGroup(SchemaConversionUtils.J2EE_NAMESPACE, cursor, moveable);
+                            while (cursor.toNextSibling(SchemaConversionUtils.J2EE_NAMESPACE, "init-param")) {
+                                cursor.push();
+                                cursor.toFirstChild();
+                                SchemaConversionUtils.convertToDescriptionGroup(SchemaConversionUtils.J2EE_NAMESPACE, cursor, moveable);
+                                cursor.pop();
+                            }
+                            cursor.pop();
+                        }
+                    } while (cursor.toNextSibling());
+                } finally {
+                    moveable.dispose();
+                }
+            }
+        } finally {
+            cursor.dispose();
+        }
+        XmlObject result = xmlObject.changeType(WebAppDocument.type);
+        if (result != null) {
+            XmlBeansUtil.validateDD(result);
+            return (WebAppDocument) result;
+        }
+        XmlBeansUtil.validateDD(xmlObject);
+        return (WebAppDocument) xmlObject;
     }
 
     class UncheckedItem {

Added: geronimo/server/trunk/modules/geronimo-web-builder/src/test/java/org/apache/geronimo/web/deployment/SchemaConversionTest.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-web-builder/src/test/java/org/apache/geronimo/web/deployment/SchemaConversionTest.java?view=auto&rev=449536
==============================================================================
--- geronimo/server/trunk/modules/geronimo-web-builder/src/test/java/org/apache/geronimo/web/deployment/SchemaConversionTest.java (added)
+++ geronimo/server/trunk/modules/geronimo-web-builder/src/test/java/org/apache/geronimo/web/deployment/SchemaConversionTest.java Sun Sep 24 17:52:25 2006
@@ -0,0 +1,109 @@
+/*
+ * 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.geronimo.web.deployment;
+
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.geronimo.testsupport.XmlBeansTestSupport;
+import org.apache.xmlbeans.XmlException;
+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 testWeb23To24Transform() throws Exception {
+        URL srcXml = classLoader.getResource("j2ee_1_3dtd/web-23.xml");
+        URL expectedOutputXml = classLoader.getResource("j2ee_1_3dtd/web-24.xml");
+        XmlObject xmlObject = XmlObject.Factory.parse(srcXml);
+        xmlObject = AbstractWebModuleBuilder.convertToServletSchema(xmlObject);
+        XmlObject expected = XmlObject.Factory.parse(expectedOutputXml);
+//        log.debug(xmlObject.toString());
+//        log.debug(expected.toString());
+        List problems = new ArrayList();
+        boolean ok = compareXmlObjects(xmlObject, expected, problems);
+        assertTrue("Differences: " + problems, ok);
+        xmlObject = AbstractWebModuleBuilder.convertToServletSchema(xmlObject);
+        boolean ok2 = compareXmlObjects(xmlObject, expected, problems);
+        assertTrue("Differences: " + problems, ok2);
+    }
+
+    public void testWeb23To24OtherTransform() throws Exception {
+        URL srcXml = classLoader.getResource("j2ee_1_3dtd/web-1-23.xml");
+        URL expectedOutputXml = classLoader.getResource("j2ee_1_3dtd/web-1-24.xml");
+        XmlObject xmlObject = XmlObject.Factory.parse(srcXml);
+        xmlObject = AbstractWebModuleBuilder.convertToServletSchema(xmlObject);
+//        log.debug(xmlObject.toString());
+        XmlObject expected = XmlObject.Factory.parse(expectedOutputXml);
+        List problems = new ArrayList();
+        boolean ok = compareXmlObjects(xmlObject, expected, problems);
+        assertTrue("Differences: " + problems, ok);
+        xmlObject = AbstractWebModuleBuilder.convertToServletSchema(xmlObject);
+        boolean ok2 = compareXmlObjects(xmlObject, expected, problems);
+        assertTrue("Differences: " + problems, ok2);
+    }
+
+    public void testWeb22To24Transform1() throws Exception {
+        URL srcXml = classLoader.getResource("j2ee_1_2dtd/web-1-22.xml");
+        URL expectedOutputXml = classLoader.getResource("j2ee_1_2dtd/web-1-24.xml");
+        XmlObject xmlObject = XmlObject.Factory.parse(srcXml);
+        xmlObject = AbstractWebModuleBuilder.convertToServletSchema(xmlObject);
+        XmlObject expected = XmlObject.Factory.parse(expectedOutputXml);
+//        log.debug(xmlObject.toString());
+//        log.debug(expected.toString());
+        List problems = new ArrayList();
+        boolean ok = compareXmlObjects(xmlObject, expected, problems);
+        assertTrue("Differences: " + problems, ok);
+        xmlObject = AbstractWebModuleBuilder.convertToServletSchema(xmlObject);
+        boolean ok2 = compareXmlObjects(xmlObject, expected, problems);
+        assertTrue("Differences: " + problems, ok2);
+    }
+
+    public void testWebRejectBad24() throws Exception {
+        URL srcXml = classLoader.getResource("j2ee_1_4schema/web-1-24.xml");
+        XmlObject xmlObject = XmlObject.Factory.parse(srcXml);
+        try {
+            AbstractWebModuleBuilder.convertToServletSchema(xmlObject);
+            fail("doc src/test-data/j2ee_1_4schema/web-1-24.xml is invalid, should not have validated");
+        } catch (XmlException e) {
+            //expected
+        }
+    }
+
+    public void testParseWeb24() throws Exception {
+        URL srcXml = classLoader.getResource("j2ee_1_4schema/web-2-24.xml");
+        XmlObject xmlObject = XmlObject.Factory.parse(srcXml);
+        xmlObject = AbstractWebModuleBuilder.convertToServletSchema(xmlObject);
+        assertNotNull(xmlObject);
+    }
+
+}

Propchange: geronimo/server/trunk/modules/geronimo-web-builder/src/test/java/org/apache/geronimo/web/deployment/SchemaConversionTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/server/trunk/modules/geronimo-web-builder/src/test/java/org/apache/geronimo/web/deployment/SchemaConversionTest.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/server/trunk/modules/geronimo-web-builder/src/test/java/org/apache/geronimo/web/deployment/SchemaConversionTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Copied: geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_2dtd/web-1-22.xml (from r449524, geronimo/server/trunk/modules/geronimo-j2ee-schema/src/test/resources/j2ee_1_2dtd/web-1-22.xml)
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_2dtd/web-1-22.xml?view=diff&rev=449536&p1=geronimo/server/trunk/modules/geronimo-j2ee-schema/src/test/resources/j2ee_1_2dtd/web-1-22.xml&r1=449524&p2=geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_2dtd/web-1-22.xml&r2=449536
==============================================================================
    (empty)

Propchange: geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_2dtd/web-1-22.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_2dtd/web-1-22.xml
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_2dtd/web-1-22.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Copied: geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_2dtd/web-1-24.xml (from r449524, geronimo/server/trunk/modules/geronimo-j2ee-schema/src/test/resources/j2ee_1_2dtd/web-1-24.xml)
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_2dtd/web-1-24.xml?view=diff&rev=449536&p1=geronimo/server/trunk/modules/geronimo-j2ee-schema/src/test/resources/j2ee_1_2dtd/web-1-24.xml&r1=449524&p2=geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_2dtd/web-1-24.xml&r2=449536
==============================================================================
    (empty)

Propchange: geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_2dtd/web-1-24.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_2dtd/web-1-24.xml
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_2dtd/web-1-24.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Copied: geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_3dtd/web-1-23.xml (from r449524, geronimo/server/trunk/modules/geronimo-j2ee-schema/src/test/resources/j2ee_1_3dtd/web-1-23.xml)
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_3dtd/web-1-23.xml?view=diff&rev=449536&p1=geronimo/server/trunk/modules/geronimo-j2ee-schema/src/test/resources/j2ee_1_3dtd/web-1-23.xml&r1=449524&p2=geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_3dtd/web-1-23.xml&r2=449536
==============================================================================
    (empty)

Propchange: geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_3dtd/web-1-23.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_3dtd/web-1-23.xml
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_3dtd/web-1-23.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Copied: geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_3dtd/web-1-24.xml (from r449524, geronimo/server/trunk/modules/geronimo-j2ee-schema/src/test/resources/j2ee_1_3dtd/web-1-24.xml)
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_3dtd/web-1-24.xml?view=diff&rev=449536&p1=geronimo/server/trunk/modules/geronimo-j2ee-schema/src/test/resources/j2ee_1_3dtd/web-1-24.xml&r1=449524&p2=geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_3dtd/web-1-24.xml&r2=449536
==============================================================================
    (empty)

Propchange: geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_3dtd/web-1-24.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_3dtd/web-1-24.xml
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_3dtd/web-1-24.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Copied: geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_3dtd/web-23.xml (from r449524, geronimo/server/trunk/modules/geronimo-j2ee-schema/src/test/resources/j2ee_1_3dtd/web-23.xml)
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_3dtd/web-23.xml?view=diff&rev=449536&p1=geronimo/server/trunk/modules/geronimo-j2ee-schema/src/test/resources/j2ee_1_3dtd/web-23.xml&r1=449524&p2=geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_3dtd/web-23.xml&r2=449536
==============================================================================
    (empty)

Propchange: geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_3dtd/web-23.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_3dtd/web-23.xml
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_3dtd/web-23.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Copied: geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_3dtd/web-24.xml (from r449524, geronimo/server/trunk/modules/geronimo-j2ee-schema/src/test/resources/j2ee_1_3dtd/web-24.xml)
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_3dtd/web-24.xml?view=diff&rev=449536&p1=geronimo/server/trunk/modules/geronimo-j2ee-schema/src/test/resources/j2ee_1_3dtd/web-24.xml&r1=449524&p2=geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_3dtd/web-24.xml&r2=449536
==============================================================================
    (empty)

Propchange: geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_3dtd/web-24.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_3dtd/web-24.xml
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_3dtd/web-24.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Copied: geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_4schema/web-1-24.xml (from r449524, geronimo/server/trunk/modules/geronimo-j2ee-schema/src/test/resources/j2ee_1_4schema/web-1-24.xml)
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_4schema/web-1-24.xml?view=diff&rev=449536&p1=geronimo/server/trunk/modules/geronimo-j2ee-schema/src/test/resources/j2ee_1_4schema/web-1-24.xml&r1=449524&p2=geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_4schema/web-1-24.xml&r2=449536
==============================================================================
    (empty)

Propchange: geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_4schema/web-1-24.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_4schema/web-1-24.xml
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_4schema/web-1-24.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Copied: geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_4schema/web-2-24.xml (from r449524, geronimo/server/trunk/modules/geronimo-j2ee-schema/src/test/resources/j2ee_1_4schema/web-2-24.xml)
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_4schema/web-2-24.xml?view=diff&rev=449536&p1=geronimo/server/trunk/modules/geronimo-j2ee-schema/src/test/resources/j2ee_1_4schema/web-2-24.xml&r1=449524&p2=geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_4schema/web-2-24.xml&r2=449536
==============================================================================
    (empty)

Propchange: geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_4schema/web-2-24.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_4schema/web-2-24.xml
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: geronimo/server/trunk/modules/geronimo-web-builder/src/test/resources/j2ee_1_4schema/web-2-24.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml