geronimo-scm mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From djen...@apache.org
Subject svn commit: r389823 - in /geronimo/branches/1.1/modules/upgrade: ./ src/ src/java/ src/java/org/ src/java/org/apache/ src/java/org/apache/geronimo/ src/java/org/apache/geronimo/upgrade/ src/test-data/ src/test/ src/test/org/ src/test/org/apache/ src/te...
Date Wed, 29 Mar 2006 16:38:19 GMT
Author: djencks
Date: Wed Mar 29 08:38:17 2006
New Revision: 389823

URL: http://svn.apache.org/viewcvs?rev=389823&view=rev
Log:
Add the start of a converter utility, also has a loginmodulegbean change that should be ok
but I'm not sure why I didn't commit it before.  revert if it causes problems.

Added:
    geronimo/branches/1.1/modules/upgrade/
    geronimo/branches/1.1/modules/upgrade/LICENSE.txt
    geronimo/branches/1.1/modules/upgrade/NOTICE.txt
    geronimo/branches/1.1/modules/upgrade/project.xml
    geronimo/branches/1.1/modules/upgrade/src/
    geronimo/branches/1.1/modules/upgrade/src/java/
    geronimo/branches/1.1/modules/upgrade/src/java/org/
    geronimo/branches/1.1/modules/upgrade/src/java/org/apache/
    geronimo/branches/1.1/modules/upgrade/src/java/org/apache/geronimo/
    geronimo/branches/1.1/modules/upgrade/src/java/org/apache/geronimo/upgrade/
    geronimo/branches/1.1/modules/upgrade/src/java/org/apache/geronimo/upgrade/Upgrade1_0To1_1.java
    geronimo/branches/1.1/modules/upgrade/src/test/
    geronimo/branches/1.1/modules/upgrade/src/test-data/
    geronimo/branches/1.1/modules/upgrade/src/test-data/appclient_ejb_1.xml
    geronimo/branches/1.1/modules/upgrade/src/test/org/
    geronimo/branches/1.1/modules/upgrade/src/test/org/apache/
    geronimo/branches/1.1/modules/upgrade/src/test/org/apache/geronimo/
    geronimo/branches/1.1/modules/upgrade/src/test/org/apache/geronimo/upgrade/
    geronimo/branches/1.1/modules/upgrade/src/test/org/apache/geronimo/upgrade/Upgrade1_0To1_1Test.java

Added: geronimo/branches/1.1/modules/upgrade/LICENSE.txt
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/upgrade/LICENSE.txt?rev=389823&view=auto
==============================================================================
--- geronimo/branches/1.1/modules/upgrade/LICENSE.txt (added)
+++ geronimo/branches/1.1/modules/upgrade/LICENSE.txt Wed Mar 29 08:38:17 2006
@@ -0,0 +1,20 @@
+The Bouncy Castle License
+
+Copyright (c) 2000-2005 The Legion Of The Bouncy Castle (http://www.bouncycastle.org)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+and associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute,
sublicense,
+and/or sell copies of the Software, and to permit persons to whom the Software is furnished
to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or
substantial
+portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
OR
+OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+

Added: geronimo/branches/1.1/modules/upgrade/NOTICE.txt
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/upgrade/NOTICE.txt?rev=389823&view=auto
==============================================================================
--- geronimo/branches/1.1/modules/upgrade/NOTICE.txt (added)
+++ geronimo/branches/1.1/modules/upgrade/NOTICE.txt Wed Mar 29 08:38:17 2006
@@ -0,0 +1,3 @@
+This product includes software developed by
+The Apache Software Foundation (http://www.apache.org/).
+

Added: geronimo/branches/1.1/modules/upgrade/project.xml
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/upgrade/project.xml?rev=389823&view=auto
==============================================================================
--- geronimo/branches/1.1/modules/upgrade/project.xml (added)
+++ geronimo/branches/1.1/modules/upgrade/project.xml Wed Mar 29 08:38:17 2006
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+
+    Copyright 2003-2004 The Apache Software Foundation
+
+    Licensed 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.
+-->
+
+<!-- $Rev: 355877 $ $Date: 2005-12-10 18:48:27 -0800 (Sat, 10 Dec 2005) $ -->
+
+<project>
+    <pomVersion>3</pomVersion>
+    <extend>../../etc/project.xml</extend>
+
+    <!-- ===================== -->
+    <!-- Module Identification -->
+    <!-- ===================== -->
+
+    <name>Geronimo :: Upgrade</name>
+    <id>geronimo-upgrade</id>
+    <shortDescription>Geronimo Upgrade</shortDescription>
+    <description>Geronimo Upgrade</description>
+    <url>http://incubator.apache.org/projects/geronimo/kernel/</url>
+    <siteDirectory>/www/incubator.apache.org/projects/geronimo/kernel</siteDirectory>
+    <distributionDirectory>/www/incubator.apache.org/projects/geronimo/builds/kernel</distributionDirectory>
+
+    <package>org.apache.geronimo.ugrade</package>
+
+    <!-- ============ -->
+    <!-- Dependencies -->
+    <!-- ============ -->
+
+    <dependencies>
+        <!-- Module Dependencies -->
+        <dependency>
+            <groupId>geronimo</groupId>
+            <artifactId>geronimo-client-builder</artifactId>
+            <version>${geronimo_version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>geronimo</groupId>                 
+            <artifactId>geronimo-connector-builder</artifactId>          
+            <version>${geronimo_version}</version>                     
+        </dependency>
+                                                                                        
                                    
+        <dependency>
+            <groupId>geronimo</groupId>                 
+            <artifactId>geronimo-j2ee-builder</artifactId>          
+            <version>${geronimo_version}</version>                     
+        </dependency>
+                                                                                        
                                    
+        <dependency>
+            <groupId>geronimo</groupId>                 
+            <artifactId>geronimo-jetty-builder</artifactId>          
+            <version>${geronimo_version}</version>                     
+        </dependency>
+                                                                                        
                                    
+        <dependency>
+            <groupId>geronimo</groupId>                 
+            <artifactId>geronimo-naming-builder</artifactId>          
+            <version>${geronimo_version}</version>                     
+        </dependency>
+                                                                                        
                                    
+        <dependency>
+            <groupId>geronimo</groupId>                 
+            <artifactId>geronimo-security-builder</artifactId>          
+            <version>${geronimo_version}</version>                     
+        </dependency>
+                                                                                        
                                    
+        <dependency>
+            <groupId>geronimo</groupId>                 
+            <artifactId>geronimo-service-builder</artifactId>          
+            <version>${geronimo_version}</version>                     
+        </dependency>
+                                                                                        
                                    
+        <dependency>
+            <groupId>geronimo</groupId>                 
+            <artifactId>geronimo-tomcat-builder</artifactId>          
+            <version>${geronimo_version}</version>                     
+        </dependency>
+                                                                                        
                                    
+        <dependency>
+            <groupId>geronimo</groupId>                 
+            <artifactId>geronimo-web-builder</artifactId>          
+            <version>${geronimo_version}</version>                     
+        </dependency>
+                                                                                        
                                    
+        <dependency>
+            <groupId>openejb</groupId>                 
+            <artifactId>openejb-builder</artifactId>          
+            <version>${openejb_version}</version>                     
+        </dependency>
+                             
+        <dependency>
+            <groupId>xmlbeans</groupId>
+            <artifactId>xbean</artifactId>
+            <version>${xmlbeans_version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>stax</groupId>
+            <artifactId>stax-api</artifactId>
+            <version>${stax_api_version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>geronimo</groupId>
+            <artifactId>geronimo-j2ee-schema</artifactId>
+            <version>${pom.currentVersion}</version>
+            <properties>
+                <xmlbeans>true</xmlbeans>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>geronimo</groupId>
+            <artifactId>geronimo-kernel</artifactId>
+            <version>${pom.currentVersion}</version>
+        </dependency>
+
+    </dependencies>
+
+    <build>
+        <resources>
+            <resource>
+                <directory>${basedir}/src/java</directory>
+                <includes>
+                    <include>**/*.xml</include>
+                    <include>**/*.properties</include>
+                </includes>
+            </resource>
+        </resources>
+        <unitTest>
+            <includes>
+                <include>**/*Test.java</include>
+            </includes>
+            <excludes>
+                <exclude>**/Abstract*.java</exclude>
+            </excludes>
+            <resources>
+                <resource>
+                    <directory>${basedir}/src/test-data</directory>
+                </resource>
+            </resources>
+        </unitTest>
+    </build>
+
+</project>

Added: geronimo/branches/1.1/modules/upgrade/src/java/org/apache/geronimo/upgrade/Upgrade1_0To1_1.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/upgrade/src/java/org/apache/geronimo/upgrade/Upgrade1_0To1_1.java?rev=389823&view=auto
==============================================================================
--- geronimo/branches/1.1/modules/upgrade/src/java/org/apache/geronimo/upgrade/Upgrade1_0To1_1.java
(added)
+++ geronimo/branches/1.1/modules/upgrade/src/java/org/apache/geronimo/upgrade/Upgrade1_0To1_1.java
Wed Mar 29 08:38:17 2006
@@ -0,0 +1,167 @@
+/**
+ *
+ * Copyright 2006 The Apache Software Foundation
+ *
+ *  Licensed 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.upgrade;
+
+import java.io.InputStream;
+import java.io.IOException;
+import java.io.Writer;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.ArrayList;
+import java.util.Collection;
+
+import javax.xml.namespace.QName;
+
+import org.apache.xmlbeans.XmlObject;
+import org.apache.xmlbeans.XmlException;
+import org.apache.xmlbeans.XmlOptions;
+import org.apache.xmlbeans.XmlCursor;
+import org.apache.geronimo.kernel.repository.Artifact;
+import org.apache.geronimo.kernel.repository.Environment;
+import org.apache.geronimo.kernel.repository.ImportType;
+import org.apache.geronimo.deployment.xbeans.EnvironmentType;
+import org.apache.geronimo.deployment.service.EnvironmentBuilder;
+
+/**
+ * @version $Rev:$ $Date:$
+ */
+public class Upgrade1_0To1_1 {
+
+    private static final Map NAMESPACE_UPDATES = new HashMap();
+
+    static {
+        NAMESPACE_UPDATES.put("http://geronimo.apache.org/xml/ns/j2ee/application-client",
"http://geronimo.apache.org/xml/ns/j2ee/application-client-1.1");
+        NAMESPACE_UPDATES.put("http://geronimo.apache.org/xml/ns/j2ee/application-client-1.0",
"http://geronimo.apache.org/xml/ns/j2ee/application-client-1.1");
+        NAMESPACE_UPDATES.put("http://geronimo.apache.org/xml/ns/j2ee/application", "http://geronimo.apache.org/xml/ns/j2ee/application-1.1");
+        NAMESPACE_UPDATES.put("http://geronimo.apache.org/xml/ns/j2ee/application-1.0", "http://geronimo.apache.org/xml/ns/j2ee/application-1.1");
+        NAMESPACE_UPDATES.put("http://geronimo.apache.org/xml/ns/deployment", "http://geronimo.apache.org/xml/ns/deployment-1.1");
+        NAMESPACE_UPDATES.put("http://geronimo.apache.org/xml/ns/deployment-1.0", "http://geronimo.apache.org/xml/ns/deployment-1.1");
+        NAMESPACE_UPDATES.put("http://geronimo.apache.org/xml/ns/j2ee/connector", "http://geronimo.apache.org/xml/ns/j2ee/connector-1.1");
+        NAMESPACE_UPDATES.put("http://geronimo.apache.org/xml/ns/deployment/javabean", "http://geronimo.apache.org/xml/ns/deployment/javabean-1.0");
+        NAMESPACE_UPDATES.put("http://geronimo.apache.org/xml/ns/loginconfig", "http://geronimo.apache.org/xml/ns/loginconfig-1.0");
+        NAMESPACE_UPDATES.put("http://geronimo.apache.org/xml/ns/loginconfig-1.0", "http://geronimo.apache.org/xml/ns/loginconfig-1.0");
+        NAMESPACE_UPDATES.put("http://geronimo.apache.org/xml/ns/naming", "http://geronimo.apache.org/xml/ns/naming-1.1");
+        NAMESPACE_UPDATES.put("http://geronimo.apache.org/xml/ns/naming-1.0", "http://geronimo.apache.org/xml/ns/naming-1.1");
+        NAMESPACE_UPDATES.put("http://geronimo.apache.org/xml/ns/security", "http://geronimo.apache.org/xml/ns/security-1.1");
+        NAMESPACE_UPDATES.put("http://geronimo.apache.org/xml/ns/security-1.0", "http://geronimo.apache.org/xml/ns/security-1.1");
+        NAMESPACE_UPDATES.put("http://geronimo.apache.org/xml/ns/web", "http://geronimo.apache.org/xml/ns/j2ee/web-1.1");
+        NAMESPACE_UPDATES.put("http://geronimo.apache.org/xml/ns/web-1.0", "http://geronimo.apache.org/xml/ns/j2ee/web-1.1");
+        NAMESPACE_UPDATES.put("http://geronimo.apache.org/xml/ns/web/jetty", "http://geronimo.apache.org/xml/ns/j2ee/web/jetty-1.1");
+        NAMESPACE_UPDATES.put("http://geronimo.apache.org/xml/ns/web/jetty-1.0", "http://geronimo.apache.org/xml/ns/j2ee/web/jetty-1.1");
+        NAMESPACE_UPDATES.put("http://geronimo.apache.org/xml/ns/web/jetty/config", "http://geronimo.apache.org/xml/ns/j2ee/web/jetty/config-1.0");
+        NAMESPACE_UPDATES.put("http://geronimo.apache.org/xml/ns/web/tomcat", "http://geronimo.apache.org/xml/ns/j2ee/web/tomcat-1.1");
+        NAMESPACE_UPDATES.put("http://geronimo.apache.org/xml/ns/web/tomcat-1.0", "http://geronimo.apache.org/xml/ns/j2ee/web/tomcat-1.1");
+        NAMESPACE_UPDATES.put("http://geronimo.apache.org/xml/ns/web/tomcat/config", "http://geronimo.apache.org/xml/ns/j2ee/web/tomcat/config-1.0");
+        NAMESPACE_UPDATES.put("http://www.openejb.org/xml/ns/openejb-jar", "http://www.openejb.org/xml/ns/openejb-jar-2.1");
+        NAMESPACE_UPDATES.put("http://www.openejb.org/xml/ns/openejb-jar-2.0", "http://www.openejb.org/xml/ns/openejb-jar-2.1");
+        NAMESPACE_UPDATES.put("http://www.openejb.org/xml/ns/pkgen", "http://www.openejb.org/xml/ns/pkgen-2.0");
+        NAMESPACE_UPDATES.put("http://www.openejb.org/xml/ns/corba-css-config_1_0", "http://www.openejb.org/xml/ns/corba-css-config-2.0");
+        NAMESPACE_UPDATES.put("http://www.openejb.org/xml/ns/corba-tss-config_1_0", "http://www.openejb.org/xml/ns/corba-tss-config-2.0");
+    }
+
+    private static final QName ENVIRONMENT_QNAME = new QName("http://geronimo.apache.org/xml/ns/deployment-1.1",
"environment");
+    private static final String DEFAULT_GROUPID = "default";
+    private static final String DEFAULT_VERSION = "1-default";
+    private static final QName CLIENT_ENVIRONMENT_QNAME = new QName("http://geronimo.apache.org/xml/ns/deployment-1.1",
"client-environment");
+    private static final QName PARENT_ENVIRONMENT_QNAME = new QName("http://geronimo.apache.org/xml/ns/deployment-1.1",
"parent-environment");
+
+    public static void upgrade(InputStream source, Writer target) throws IOException, XmlException
{
+        XmlObject xmlObject = parse(source);
+        XmlCursor cursor = xmlObject.newCursor();
+        XmlCursor.TokenType token;
+        while ((token = cursor.toNextToken()) != XmlCursor.TokenType.ENDDOC) {
+            if (token == XmlCursor.TokenType.START) {
+                Artifact configId = extractArtifact("configId", cursor);
+                Artifact parentId = extractArtifact("parentId", cursor);
+                Artifact clientConfigId = extractArtifact("clientConfigId", cursor);
+                Artifact clientParentId = extractArtifact("clientParentId", cursor);
+                if (clientConfigId != null) {
+
+                    insertEnvironment(clientConfigId, clientParentId, cursor, CLIENT_ENVIRONMENT_QNAME);
+
+                    insertEnvironment(configId, parentId, cursor, PARENT_ENVIRONMENT_QNAME);
+
+                } else if (configId != null) {
+
+                    insertEnvironment(configId, parentId, cursor, ENVIRONMENT_QNAME);
+                }
+            }
+        }
+
+        XmlOptions xmlOptions = new XmlOptions();
+        xmlOptions.setSavePrettyPrint();
+        xmlObject.save(target, xmlOptions);
+
+    }
+
+    private static void insertEnvironment(Artifact configId, Artifact parentId, XmlCursor
cursor, QName environmentQname) {
+        positionEnvironment(cursor);
+        Environment environment = new Environment();
+        environment.setConfigId(configId);
+        if (parentId != null ) {
+            environment.addDependency(parentId, ImportType.ALL);
+        }
+        EnvironmentType environmentType = EnvironmentBuilder.buildEnvironmentType(environment);
+        cursor.beginElement(environmentQname);
+        XmlCursor element = environmentType.newCursor();
+        try {
+            element.copyXmlContents(cursor);
+        } finally {
+            element.dispose();
+        }
+    }
+
+    private static void positionEnvironment(XmlCursor cursor) {
+        XmlCursor.TokenType token;
+        while ((token = cursor.toNextToken()) != XmlCursor.TokenType.START && token
!= XmlCursor.TokenType.END) {
+            //keep going
+        }
+    }
+
+    private static Artifact extractArtifact(String attrName, XmlCursor cursor) {
+        String attrValue;
+        QName attrQName = new QName(null, attrName);
+        if ((attrValue = cursor.getAttributeText(attrQName)) != null) {
+            cursor.removeAttribute(attrQName);
+            try {
+                return Artifact.create(attrValue);
+            } catch (Exception e) {
+                return new Artifact(DEFAULT_GROUPID, attrValue.replace('/', '_'), DEFAULT_VERSION,
"car");
+            }
+        }
+        return null;
+    }
+
+    public static XmlObject parse(InputStream is) throws IOException, XmlException {
+        ArrayList errors = new ArrayList();
+        XmlObject parsed = XmlObject.Factory.parse(is, createXmlOptions(errors));
+        if (errors.size() != 0) {
+            throw new XmlException(errors.toArray().toString());
+        }
+        return parsed;
+    }
+
+    public static XmlOptions createXmlOptions(Collection errors) {
+        XmlOptions options = new XmlOptions();
+        options.setLoadLineNumbers();
+        options.setErrorListener(errors);
+        options.setLoadSubstituteNamespaces(NAMESPACE_UPDATES);
+        return options;
+    }
+
+}

Added: geronimo/branches/1.1/modules/upgrade/src/test-data/appclient_ejb_1.xml
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/upgrade/src/test-data/appclient_ejb_1.xml?rev=389823&view=auto
==============================================================================
--- geronimo/branches/1.1/modules/upgrade/src/test-data/appclient_ejb_1.xml (added)
+++ geronimo/branches/1.1/modules/upgrade/src/test-data/appclient_ejb_1.xml Wed Mar 29 08:38:17
2006
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<application
+    xmlns="http://geronimo.apache.org/xml/ns/j2ee/application"
+    configId="appclient_ejb_1"
+    parentId="${pom.groupId}/server-security/${pom.currentVersion}/car">
+    <module>
+        <ejb>appclient_ejb_1_ejb.jar</ejb>
+        <openejb-jar xmlns="http://www.openejb.org/xml/ns/openejb-jar" configId="ejb">
+            <cmp-connection-factory>
+                <resource-link>jdbc/DB1</resource-link>
+            </cmp-connection-factory>
+            <enterprise-beans>
+                <entity>
+                    <ejb-name>CMP20</ejb-name>
+                    <table-name>CMP20_APPCLIENT_TABLE1</table-name>
+                    <cmp-field-mapping>
+                        <cmp-field-name>id</cmp-field-name>
+                        <table-column>ID</table-column>
+                    </cmp-field-mapping>
+                </entity>
+                <entity>
+                    <ejb-name>CMP11</ejb-name>
+                    <table-name>CMP20_APPCLIENT_TABLE2</table-name>
+                    <cmp-field-mapping>
+                        <cmp-field-name>KEY_ID</cmp-field-name>
+                        <table-column>ID</table-column>
+                    </cmp-field-mapping>
+                </entity>
+            </enterprise-beans>
+        </openejb-jar>
+    </module>
+    <module>
+        <java>appclient_ejb_1_client.jar</java>
+        <application-client xmlns="http://geronimo.apache.org/xml/ns/j2ee/application-client"
+            configId="bar"
+            clientConfigId="appclient_ejb_1/appclient_ejb_1_client"
+            clientParentId="${pom.groupId}/client-database/${pom.currentVersion}/car">
+
+        </application-client>
+    </module>
+</application>

Added: geronimo/branches/1.1/modules/upgrade/src/test/org/apache/geronimo/upgrade/Upgrade1_0To1_1Test.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/upgrade/src/test/org/apache/geronimo/upgrade/Upgrade1_0To1_1Test.java?rev=389823&view=auto
==============================================================================
--- geronimo/branches/1.1/modules/upgrade/src/test/org/apache/geronimo/upgrade/Upgrade1_0To1_1Test.java
(added)
+++ geronimo/branches/1.1/modules/upgrade/src/test/org/apache/geronimo/upgrade/Upgrade1_0To1_1Test.java
Wed Mar 29 08:38:17 2006
@@ -0,0 +1,103 @@
+/**
+ *
+ * Copyright 2006 The Apache Software Foundation
+ *
+ *  Licensed 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.upgrade;
+
+
+import java.net.URL;
+import java.util.List;
+import java.util.ArrayList;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.StringWriter;
+import java.io.Writer;
+
+import javax.xml.namespace.QName;
+
+import junit.framework.TestCase;
+import org.apache.xmlbeans.XmlObject;
+import org.apache.xmlbeans.XmlCursor;
+import org.apache.geronimo.schema.SchemaConversionUtils;
+
+/**
+ * @version $Rev:$ $Date:$
+ */
+public class Upgrade1_0To1_1Test extends TestCase {
+
+    private final ClassLoader classLoader = this.getClass().getClassLoader();
+
+    public void test1() throws Exception {
+//        InputStream srcXml = classLoader.getResourceAsStream("jms-plan.xml");
+        InputStream srcXml = classLoader.getResourceAsStream("appclient_ejb_1.xml");
+        Writer targetXml = new StringWriter();
+        Upgrade1_0To1_1.upgrade(srcXml, targetXml);
+
+        String targetString = targetXml.toString();
+        System.out.println(targetString);
+        XmlObject targetXmlObject = XmlObject.Factory.parse(targetString);
+        //uncomment fail to see output
+//        fail();
+//        URL expectedOutputXml = classLoader.getResource("appclient_dep_ejblink_single.ear.xml");
+//        XmlObject xmlObject = XmlObject.Factory.parse(srcXml);
+//        XmlObject expected = XmlObject.Factory.parse(expectedOutputXml);
+//        SchemaConversionUtils.validateDD(expected);
+//        xmlObject = SchemaConversionUtils.convertToApplicationClientSchema(xmlObject);
+//        System.out.println(xmlObject.toString());
+//        System.out.println(expected.toString());
+//        List problems = new ArrayList();
+//        boolean ok = compareXmlObjects(xmlObject, expected, problems);
+//        assertTrue("Differences: " + problems, ok);
+    }
+
+    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;
+    }
+
+}



Mime
View raw message