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 2013/09/25 08:03:53 UTC

svn commit: r1526114 - /tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/UnDeployMojo.java

Author: rmannibucau
Date: Wed Sep 25 06:03:53 2013
New Revision: 1526114

URL: http://svn.apache.org/r1526114
Log:
TOMEE-1045 better app matching algorithm in undeploy mojo

Modified:
    tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/UnDeployMojo.java

Modified: tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/UnDeployMojo.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/UnDeployMojo.java?rev=1526114&r1=1526113&r2=1526114&view=diff
==============================================================================
--- tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/UnDeployMojo.java (original)
+++ tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/UnDeployMojo.java Wed Sep 25 06:03:53 2013
@@ -22,6 +22,10 @@ import org.apache.maven.plugin.MojoFailu
 import org.apache.maven.plugins.annotations.Mojo;
 import org.apache.openejb.OpenEJBException;
 import org.apache.openejb.assembler.Deployer;
+import org.apache.openejb.assembler.classic.AppInfo;
+
+import java.util.ArrayList;
+import java.util.Collection;
 
 /**
  * Simply undeploy an application in a running TomEE
@@ -32,8 +36,29 @@ public class UnDeployMojo extends Abstra
     public void execute() throws MojoExecutionException, MojoFailureException {
         final Deployer deployer = (Deployer) lookup("openejb/DeployerBusinessRemote");
         try {
-            deployer.undeploy(path);
-        } catch (OpenEJBException e) {
+            final Collection<AppInfo> apps = deployer.getDeployedApps();
+            final Collection<String> paths = new ArrayList<String>(apps.size());
+            for (final AppInfo info : apps) {
+                paths.add(info.path);
+            }
+
+            if (paths.contains(path)) { // exact matching
+                deployer.undeploy(path);
+            } else {
+                for (final String proposed : paths) { // exact matching + extension
+                    if (path.equals(proposed + ".war") || path.equals(proposed + ".ear") || path.equals(proposed + ".jar")) {
+                        deployer.undeploy(proposed);
+                        return;
+                    }
+                }
+                for (final String proposed : paths) { // just the app/folder name
+                    if (proposed.endsWith("/" + path) || proposed.endsWith("\\" + path)) {
+                        deployer.undeploy(proposed);
+                        return;
+                    }
+                }
+            }
+        } catch (final OpenEJBException e) {
             throw new TomEEException(e.getMessage(), e);
         }
     }