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); } }