You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by xu...@apache.org on 2010/05/20 07:14:45 UTC

svn commit: r946528 - /geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder.java

Author: xuhaihong
Date: Thu May 20 05:14:45 2010
New Revision: 946528

URL: http://svn.apache.org/viewvc?rev=946528&view=rev
Log:
Create a default ApplicationType if no application.xml is not found, or NPE will be thrown while processing namingbuilder

Modified:
    geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder.java

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder.java?rev=946528&r1=946527&r2=946528&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder.java Thu May 20 05:14:45 2010
@@ -32,6 +32,7 @@ import java.util.LinkedHashSet;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.jar.Attributes;
 import java.util.jar.JarEntry;
 import java.util.jar.JarFile;
@@ -97,6 +98,7 @@ import org.apache.geronimo.xbeans.geroni
 import org.apache.geronimo.xbeans.geronimo.j2ee.GerApplicationType;
 import org.apache.geronimo.xbeans.geronimo.j2ee.GerExtModuleType;
 import org.apache.geronimo.xbeans.geronimo.j2ee.GerModuleType;
+import org.apache.geronimo.xbeans.javaee6.WebType;
 import org.apache.geronimo.xbeans.javaee6.ApplicationDocument;
 import org.apache.geronimo.xbeans.javaee6.ApplicationType;
 import org.apache.geronimo.xbeans.javaee6.ModuleType;
@@ -427,16 +429,19 @@ public class EARConfigBuilder implements
         LinkedHashSet<Module> modules = new LinkedHashSet<Module>();
         try {
             addModules(earFile, application, gerApplication, moduleLocations, modules, environment, earName, idBuilder);
-            if (application == null && modules.isEmpty()) {
-                //if no application.xml and no modules detected, return null for stand-alone module processing
-                return null;
+            if (application == null) {
+                if (modules.isEmpty()) {
+                    //if no application.xml and no modules detected, return null for stand-alone module processing
+                    return null;
+                } else {
+                    application = createDefaultSpecPlan(modules);
+                }
             }
         } catch (Throwable e) {
             // close all the modules
             for (Module module : modules) {
                 module.close();
             }
-
             if (e instanceof DeploymentException) {
                 throw (DeploymentException) e;
             } else if (e instanceof RuntimeException) {
@@ -448,7 +453,7 @@ public class EARConfigBuilder implements
         }
 
         String applicationName = null;
-        if (application != null && application.isSetApplicationName()) {
+        if (application.isSetApplicationName()) {
             applicationName = application.getApplicationName().getStringValue().trim();
         } else if (earFile != null) {
             applicationName = FileUtils.removeExtension(new File(earFile.getName()).getName(), ".ear");
@@ -469,6 +474,26 @@ public class EARConfigBuilder implements
                 annotatedApp);
     }
 
+    private ApplicationType createDefaultSpecPlan(Set<Module> modules) {
+        ApplicationType application = ApplicationType.Factory.newInstance();
+        for (Module module : modules) {
+            ConfigurationModuleType configurationModuleType = module.getType();
+            ModuleType moduleType = application.addNewModule();
+            if (configurationModuleType.equals(ConfigurationModuleType.WAR)) {
+                WebModule webModule = (WebModule) module;
+                WebType web = moduleType.addNewWeb();
+                web.addNewContextRoot().setStringValue(webModule.getContextRoot());
+                web.addNewWebUri().setStringValue(webModule.getTargetPath());
+            } else if (configurationModuleType.equals(ConfigurationModuleType.EJB)) {
+                moduleType.addNewEjb().setStringValue(module.getTargetPath());
+            } else if (configurationModuleType.equals(ConfigurationModuleType.RAR)) {
+                moduleType.addNewConnector().setStringValue(module.getTargetPath());
+            } else if (configurationModuleType.equals(ConfigurationModuleType.CAR)) {
+                moduleType.addNewJava().setStringValue(module.getTargetPath());
+            }
+        }
+        return application;
+    }
 
     private GerApplicationType createDefaultPlan(ApplicationType application, JarFile module) {
         // construct the empty geronimo-application.xml