You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2012/10/13 17:53:48 UTC

svn commit: r1397867 - /openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/deployment/TomcatWebappDeployer.java

Author: rmannibucau
Date: Sat Oct 13 15:53:47 2012
New Revision: 1397867

URL: http://svn.apache.org/viewvc?rev=1397867&view=rev
Log:
enhancing a bit the algorithm to try to find appinfo when using webappdeployer

Modified:
    openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/deployment/TomcatWebappDeployer.java

Modified: openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/deployment/TomcatWebappDeployer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/deployment/TomcatWebappDeployer.java?rev=1397867&r1=1397866&r2=1397867&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/deployment/TomcatWebappDeployer.java (original)
+++ openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/deployment/TomcatWebappDeployer.java Sat Oct 13 15:53:47 2012
@@ -28,6 +28,8 @@ import org.apache.openejb.util.Logger;
 import org.apache.tomee.catalina.TomcatWebAppBuilder;
 
 import java.io.File;
+import java.util.Collection;
+import java.util.Iterator;
 
 public class TomcatWebappDeployer implements WebAppDeployer {
     private static final Logger LOGGER = Logger.getInstance(LogCategory.OPENEJB, TomcatWebappDeployer.class);
@@ -35,13 +37,31 @@ public class TomcatWebappDeployer implem
     @Override
     public AppInfo deploy(final String context, final File file) {
         final TomcatWebAppBuilder tomcatWebAppBuilder = (TomcatWebAppBuilder) SystemInstance.get().getComponent(WebAppBuilder.class);
+
+        final Collection<String> alreadyDeployed = tomcatWebAppBuilder.availableApps();
+
         try {
             tomcatWebAppBuilder.deployWebApps(fakeInfo(file, context), null); // classloader == null -> standalone war
         } catch (Exception e) {
             throw new OpenEJBRuntimeException(e);
         }
 
-        final TomcatWebAppBuilder.ContextInfo info = contextInfo(file);
+        TomcatWebAppBuilder.ContextInfo info = contextInfo(file);
+
+        if (info == null) { // try another time doing a diff with apps before deployment and apps after
+            final Collection<String> deployedNow = tomcatWebAppBuilder.availableApps();
+            final Iterator<String> it = deployedNow.iterator();
+            while (it.hasNext()) {
+                if (alreadyDeployed.contains(it.next())) {
+                    it.remove();
+                }
+            }
+
+            if (deployedNow.size() == 1) {
+                info = contextInfo(new File(deployedNow.iterator().next()));
+            }
+        }
+
         if (info == null || info.appInfo == null) {
             LOGGER.error("Can't find of appInfo for " + (file != null ? file.getAbsolutePath() : null) + ", availables: " + tomcatWebAppBuilder.availableApps());
         }