You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by mc...@apache.org on 2008/04/20 04:55:21 UTC

svn commit: r649871 - in /geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.deployment.v21.jaxbmodel/src/test: java/org/apache/geronimo/jee/application/ resources/application/

Author: mcconne
Date: Sat Apr 19 19:55:19 2008
New Revision: 649871

URL: http://svn.apache.org/viewvc?rev=649871&view=rev
Log:
GERONIMODEVTOOLS-259 More Junit testcases for the JAXB application schema -- Thanks to BJ Reed for the patch !!

Added:
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.deployment.v21.jaxbmodel/src/test/resources/application/geronimo-application-expected-11.xml   (with props)
Modified:
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.deployment.v21.jaxbmodel/src/test/java/org/apache/geronimo/jee/application/GeronimoApplicationTest.java

Modified: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.deployment.v21.jaxbmodel/src/test/java/org/apache/geronimo/jee/application/GeronimoApplicationTest.java
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.deployment.v21.jaxbmodel/src/test/java/org/apache/geronimo/jee/application/GeronimoApplicationTest.java?rev=649871&r1=649870&r2=649871&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.deployment.v21.jaxbmodel/src/test/java/org/apache/geronimo/jee/application/GeronimoApplicationTest.java (original)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.deployment.v21.jaxbmodel/src/test/java/org/apache/geronimo/jee/application/GeronimoApplicationTest.java Sat Apr 19 19:55:19 2008
@@ -24,6 +24,7 @@
 import java.io.InputStream;
 
 import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBElement;
 import javax.xml.bind.Marshaller;
 import javax.xml.bind.Unmarshaller;
 import javax.xml.parsers.SAXParser;
@@ -33,6 +34,21 @@
 import junit.framework.AssertionFailedError;
 import junit.framework.TestCase;
 
+import org.apache.geronimo.jee.deployment.Artifact;
+import org.apache.geronimo.jee.deployment.Dependencies;
+import org.apache.geronimo.jee.deployment.Dependency;
+import org.apache.geronimo.jee.deployment.Environment;
+import org.apache.geronimo.jee.deployment.Gbean;
+import org.apache.geronimo.jee.deployment.Pattern;
+import org.apache.geronimo.jee.security.Description;
+import org.apache.geronimo.jee.security.DistinguishedName;
+import org.apache.geronimo.jee.security.LoginDomainPrincipal;
+import org.apache.geronimo.jee.security.Principal;
+import org.apache.geronimo.jee.security.RealmPrincipal;
+import org.apache.geronimo.jee.security.Role;
+import org.apache.geronimo.jee.security.RoleMappings;
+import org.apache.geronimo.jee.security.Security;
+import org.apache.geronimo.jee.security.SubjectInfo;
 import org.custommonkey.xmlunit.Diff;
 import org.xml.sax.Attributes;
 import org.xml.sax.InputSource;
@@ -53,7 +69,7 @@
  *      <li>Unmarshalling and marshalling sequence
  *      <li>Namespace conversion
  *      <li>Element conversion (TODO)
- *      <li>Create a file (TODO)
+ *      <li>Create XML with all fields
  * </ol>
  * 
  * 
@@ -84,6 +100,9 @@
                          "application/geronimo-application-expected-6.xml");
     }
 
+    public void testCompleteXML() throws Exception {
+        buildFullXMLFromScratch("application/geronimo-application-expected-11.xml");
+    }
 
     /*------------------------------------------------------------------------*\
     |                                                                          |
@@ -207,6 +226,188 @@
         }
     }
 
+    private void buildFullXMLFromScratch (String fileExpected) throws Exception {
+        org.apache.geronimo.jee.application.ObjectFactory applicationFactory = new org.apache.geronimo.jee.application.ObjectFactory();
+        org.apache.geronimo.jee.deployment.ObjectFactory deploymentFactory = new org.apache.geronimo.jee.deployment.ObjectFactory();
+        org.apache.geronimo.jee.security.ObjectFactory securityFactory = new org.apache.geronimo.jee.security.ObjectFactory();
+        Application application = applicationFactory.createApplication();
+
+        // hard code everything to come up with a large XML with everything in it
+        application.setApplicationName("test-app-name");
+
+        // set the Environment
+        Environment environment = new Environment ();
+        Artifact artifact = new Artifact ();
+        artifact.setGroupId("org.apache.geronimo.testsuite");
+        artifact.setArtifactId("agent-ear");
+        artifact.setVersion("2.2-SNAPSHOT");
+        artifact.setType("ear");
+        environment.setModuleId(artifact);
+
+        Dependencies dependencies = new Dependencies ();
+        Dependency dependency = new Dependency ();
+        dependency.setGroupId("org.apache.geronimo.testsuite");
+        dependency.setArtifactId("agent-ds");
+        dependency.setVersion("2.2-SNAPSHOT");
+        dependency.setType("car");
+        dependencies.getDependency().add(dependency);
+        environment.setDependencies(dependencies);
+        application.setEnvironment(environment);
+
+        Module module = applicationFactory.createModule();
+        Path path = applicationFactory.createPath();
+        path.setId("module-altdd-path-id");
+        path.setValue("module-altdd-path-value");
+        module.setAltDd(path);
+//        module.setAny("module-any"); //TODO
+        path = applicationFactory.createPath();
+        path.setId("module-connector-path-id");
+        path.setValue("module-connector-path-value");
+        module.setConnector(path);
+        path = applicationFactory.createPath();
+        path.setId("module-ejb-path-id");
+        path.setValue("module-ejb-path-value");
+        module.setEjb(path);
+        path = applicationFactory.createPath();
+        path.setId("module-java-path-id");
+        path.setValue("module-java-path-value");
+        module.setJava(path);
+        path = applicationFactory.createPath();
+        path.setId("module-web-path-id");
+        path.setValue("module-web-path-value");
+        module.setWeb(path);
+        application.getModule().add(module);
+
+        ExtModule extModule = applicationFactory.createExtModule();
+        extModule.setInternalPath("extmodule-internalpath");
+//        module.setAny("module-any"); //TODO
+        path = applicationFactory.createPath();
+        path.setId("extmodule-connector-path-id");
+        path.setValue("extmodule-connector-path-value");
+        extModule.setConnector(path);
+        path = applicationFactory.createPath();
+        path.setId("extmodule-ejb-path-id");
+        path.setValue("extmodule-ejb-path-value");
+        extModule.setEjb(path);
+        path = applicationFactory.createPath();
+        path.setId("extmodule-java-path-id");
+        path.setValue("extmodule-java-path-value");
+        extModule.setJava(path);
+        path = applicationFactory.createPath();
+        path.setId("extmodule-web-path-id");
+        path.setValue("extmodule-web-path-value");
+        extModule.setWeb(path);
+        Pattern pattern = deploymentFactory.createPattern();
+        pattern.setArtifactId("extmodule-externalpath-artifactid");
+        pattern.setCustomFoo("extmodule-externalpath-customfoo");
+        pattern.setGroupId("extmodule-externalpath-groupid");
+        pattern.setModule("extmodule-externalpath-module");
+        pattern.setType("extmodule-externalpath-type");
+        pattern.setVersion("extmodule-externalpath-version");
+        extModule.setExternalPath(pattern);
+        application.getExtModule().add(extModule);
+
+        Gbean gbean = deploymentFactory.createGbean();
+        gbean.setClazz("gbean-class");
+        gbean.setName("gbean-name");
+        application.getService().add(deploymentFactory.createGbean(gbean));
+
+        // set the Security
+        // TODO: this whole block just gets us <ns2:security/> which can't be correct
+        // also, when adding the security to the application, the marshalling
+        // gives that the types aren't compatible.
+        Security security = securityFactory.createSecurity();
+        security.setDefaultRole ("security-role");
+        security.setDoasCurrentCaller(true);
+        security.setUseContextHandler(true);
+        pattern = deploymentFactory.createPattern();
+        pattern.setArtifactId("security-credentialstoreref-artifactid");
+        pattern.setCustomFoo("security-credentialstoreref-customfoo");
+        pattern.setGroupId("security-credentialstoreref-groupid");
+        pattern.setModule("security-credentialstoreref-module");
+        pattern.setType("security-credentialstoreref-type");
+        pattern.setVersion("security-credentialstoreref-version");
+        security.setCredentialStoreRef(pattern);
+        SubjectInfo subject = securityFactory.createSubjectInfo();
+        subject.setId("security-subjectinfo-id");
+        subject.setRealm("security-subjectinfo-realm");
+        Description description = securityFactory.createDescription();
+        description.setValue("security-subjectinfo-description");
+        subject.getDescription().add(description);
+        security.setDefaultSubject(subject);
+        RoleMappings roleMappings = securityFactory.createRoleMappings();
+        Role role = securityFactory.createRole();
+        role.setRoleName("security-role");
+        SubjectInfo subjectInfo = securityFactory.createSubjectInfo();
+        subjectInfo.setId("security-role-subjectinfo-id");
+        subjectInfo.setRealm("security-role-subjectinfo-realm");
+        description = securityFactory.createDescription();
+        description.setValue("security-role-subjectinfo-description");
+        subjectInfo.getDescription().add(description);
+        role.setRunAsSubject(subjectInfo);
+        description = securityFactory.createDescription();
+        description.setValue("security-role-description");
+        role.getDescription().add(description);
+        DistinguishedName distinguishedName = securityFactory.createDistinguishedName();
+        distinguishedName.setName("security-role-distinguishedname");
+        description = securityFactory.createDescription();
+        description.setValue("security-role-distinguished-name-description");
+        distinguishedName.getDescription().add(description);
+        role.getDistinguishedName().add(distinguishedName);
+        LoginDomainPrincipal loginDomainPrincipal = securityFactory.createLoginDomainPrincipal();
+        loginDomainPrincipal.setDomainName("security-role-logindomainprincipal-domainname");
+        loginDomainPrincipal.setName("security-role-logindomainprincipal-name");
+        loginDomainPrincipal.setClazz("security-role-logindomainprincipal-class");
+        description = securityFactory.createDescription();
+        description.setValue("security-role-logindomainprincipal-description");
+        loginDomainPrincipal.getDescription().add(description);
+        role.getLoginDomainPrincipal().add(loginDomainPrincipal);
+        Principal principal = securityFactory.createPrincipal();
+        principal.setName("security-role-principal-name");
+        principal.setClazz("security-role-principal-class");
+        description = securityFactory.createDescription();
+        description.setValue("security-role-principal-description");
+        principal.getDescription().add(description);
+        role.getPrincipal().add(principal);
+        RealmPrincipal realmPrincipal = securityFactory.createRealmPrincipal();
+        realmPrincipal.setName("security-role-realmprincipal-name");
+        realmPrincipal.setClazz("security-role-realmprincipal-class");
+        description = securityFactory.createDescription();
+        description.setValue("security-role-realmprincipal-description");
+        realmPrincipal.getDescription().add(description);
+        role.getRealmPrincipal().add(realmPrincipal);
+        roleMappings.getRole().add(role);
+        security.setRoleMappings(roleMappings);
+//        application.setSecurity(securityFactory.createSecurity(security));
+ 
+        JAXBElement<Application> jaxbElement = applicationFactory.createApplication(application);
+        
+        // 
+        // Marshall the output of the unmarshall
+        // 
+        JAXBContext jaxbContext = JAXBContext.newInstance( 
+                "org.apache.geronimo.jee.application:" +
+                "org.apache.geronimo.jee.deployment", getClass().getClassLoader() );
+        Marshaller marshaller = jaxbContext.createMarshaller();
+        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
+        marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        marshaller.marshal(jaxbElement, baos);
+        String actual = new String(baos.toByteArray());
+
+        InputStream expectedInputStream = this.getClass().getClassLoader().getResourceAsStream(fileExpected);
+        String expected = readContent(expectedInputStream);
+
+        try {
+            Diff myDiff = new Diff(expected, actual);
+            assertTrue("Files are similar " + myDiff, myDiff.similar());
+        }
+        catch (AssertionFailedError e) {
+            System.out.println("Actual XML:\n" + actual + '\n');
+            System.out.println("[Expected XML: " + fileExpected + "]\n" + expected + '\n');
+            throw e;            
+        }
+    }
 
     private String readContent(InputStream in) throws IOException {
         StringBuffer sb = new StringBuffer();

Added: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.deployment.v21.jaxbmodel/src/test/resources/application/geronimo-application-expected-11.xml
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.deployment.v21.jaxbmodel/src/test/resources/application/geronimo-application-expected-11.xml?rev=649871&view=auto
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.deployment.v21.jaxbmodel/src/test/resources/application/geronimo-application-expected-11.xml (added)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.deployment.v21.jaxbmodel/src/test/resources/application/geronimo-application-expected-11.xml Sat Apr 19 19:55:19 2008
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+    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.
+-->
+
+<!-- @version $Rev$ $Date$ -->
+
+<ns2:application xmlns="http://geronimo.apache.org/xml/ns/deployment-1.2" xmlns:ns2="http://geronimo.apache.org/xml/ns/j2ee/application-2.0" application-name="test-app-name">
+    <environment>
+        <moduleId>
+            <groupId>org.apache.geronimo.testsuite</groupId>
+            <artifactId>agent-ear</artifactId>
+            <version>2.2-SNAPSHOT</version>
+            <type>ear</type>
+        </moduleId>
+        <dependencies>
+            <dependency>
+                <groupId>org.apache.geronimo.testsuite</groupId>
+                <artifactId>agent-ds</artifactId>
+                <version>2.2-SNAPSHOT</version>
+                <type>car</type>
+            </dependency>
+        </dependencies>
+    </environment>
+    <ns2:module>
+        <ns2:connector id="module-connector-path-id">module-connector-path-value</ns2:connector>
+        <ns2:ejb id="module-ejb-path-id">module-ejb-path-value</ns2:ejb>
+        <ns2:java id="module-java-path-id">module-java-path-value</ns2:java>
+        <ns2:web id="module-web-path-id">module-web-path-value</ns2:web>
+        <ns2:alt-dd id="module-altdd-path-id">module-altdd-path-value</ns2:alt-dd>
+    </ns2:module>
+    <ns2:ext-module>
+        <ns2:connector id="extmodule-connector-path-id">extmodule-connector-path-value</ns2:connector>
+        <ns2:ejb id="extmodule-ejb-path-id">extmodule-ejb-path-value</ns2:ejb>
+        <ns2:java id="extmodule-java-path-id">extmodule-java-path-value</ns2:java>
+        <ns2:web id="extmodule-web-path-id">extmodule-web-path-value</ns2:web>
+        <ns2:internal-path>extmodule-internalpath</ns2:internal-path>
+        <ns2:external-path>
+            <groupId>extmodule-externalpath-groupid</groupId>
+            <artifactId>extmodule-externalpath-artifactid</artifactId>
+            <version>extmodule-externalpath-version</version>
+            <module>extmodule-externalpath-module</module>
+            <type>extmodule-externalpath-type</type>
+            <name>extmodule-externalpath-customfoo</name>
+        </ns2:external-path>
+    </ns2:ext-module>
+    <gbean name="gbean-name" class="gbean-class"/>
+</ns2:application>
\ No newline at end of file

Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.deployment.v21.jaxbmodel/src/test/resources/application/geronimo-application-expected-11.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.deployment.v21.jaxbmodel/src/test/resources/application/geronimo-application-expected-11.xml
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.deployment.v21.jaxbmodel/src/test/resources/application/geronimo-application-expected-11.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml