Author: rmannibucau
Date: Thu Oct 11 09:36:26 2012
New Revision: 1396961

URL: http://svn.apache.org/viewvc?rev=1396961&view=rev
Log:
fixing WEB-INF/exclusions.list + adding reload to deployer/tomee-mvn-plugin - 
jira to open

Modified:
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/Deployer.java
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/WebAppDeployer.java
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/NewLoaderLogic.java
    
openejb/trunk/openejb/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
    
openejb/trunk/openejb/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/UpdatableTomEEMojo.java
    
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/deployment/TomcatWebappDeployer.java
    
openejb/trunk/openejb/utils/webdeployer/src/main/java/org/apache/tomee/catalina/deployer/WebappDeployer.java

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/Deployer.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/Deployer.java?rev=1396961&r1=1396960&r2=1396961&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/Deployer.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/Deployer.java
 Thu Oct 11 09:36:26 2012
@@ -39,4 +39,6 @@ public interface Deployer {
     AppInfo deploy(String location, Properties properties) throws 
OpenEJBException;
 
     void undeploy(String moduleId) throws UndeployException, 
NoSuchApplicationException;
+
+    void reload(String moduleId);
 }

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java?rev=1396961&r1=1396960&r2=1396961&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java
 Thu Oct 11 09:36:26 2012
@@ -301,4 +301,26 @@ public class DeployerEjb implements Depl
     private static String contextRoot(final Properties properties, final 
String jarPath) {
         return properties.getProperty("webapp." + jarPath + ".context-root");
     }
+
+    public void reload(final String moduleId) {
+        for (AppInfo info : assembler.getDeployedApplications()) {
+            if (info.path.equals(moduleId)) {
+                reload(info);
+                break;
+            }
+        }
+    }
+
+    private void reload(final AppInfo info) {
+        if (info.webAppAlone) {
+            
SystemInstance.get().getComponent(WebAppDeployer.class).reload(info.path);
+        } else {
+            try {
+                assembler.destroyApplication(info);
+                assembler.createApplication(info);
+            } catch (Exception e) {
+                throw new OpenEJBRuntimeException(e);
+            }
+        }
+    }
 }

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/WebAppDeployer.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/WebAppDeployer.java?rev=1396961&r1=1396960&r2=1396961&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/WebAppDeployer.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/WebAppDeployer.java
 Thu Oct 11 09:36:26 2012
@@ -23,6 +23,7 @@ import java.io.File;
 
 public interface WebAppDeployer {
     AppInfo deploy(String contextRoot, File file);
+    void reload(String appId);
 
     public static final class Helper {
         private Helper() {

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/NewLoaderLogic.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/NewLoaderLogic.java?rev=1396961&r1=1396960&r2=1396961&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/NewLoaderLogic.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/NewLoaderLogic.java
 Thu Oct 11 09:36:26 2012
@@ -171,10 +171,12 @@ public class NewLoaderLogic {
             final File file = URLs.toFile(url);
 
             final String name = filter(file).getName();
-            if (filter.accept(name)
-                    && (includeFilter == null || !includeFilter.accept(name))
-                    && (excludeFilter == null || excludeFilter.accept(name))) {
-                iterator.remove();
+            if (includeFilter == null || !includeFilter.accept(name)) {
+                if (filter != null && filter.accept(name)) {
+                    iterator.remove();
+                } else if (excludeFilter != null && 
excludeFilter.accept(name)) {
+                    iterator.remove();
+                }
             }
         }
 

Modified: 
openejb/trunk/openejb/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java?rev=1396961&r1=1396960&r2=1396961&view=diff
==============================================================================
--- 
openejb/trunk/openejb/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
 (original)
+++ 
openejb/trunk/openejb/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
 Thu Oct 11 09:36:26 2012
@@ -273,6 +273,8 @@ public abstract class AbstractTomEEMojo 
      */
     protected Settings settings;
 
+    protected File deployedFile = null;
+
     @Override
     public void execute() throws MojoExecutionException, MojoFailureException {
         unzip(resolve(), catalinaBase);
@@ -476,6 +478,8 @@ public abstract class AbstractTomEEMojo 
         } else {
             getLog().warn("'" + warFile + "' doesn't exist, ignoring (maybe 
run mvn package before this plugin)");
         }
+
+        deployedFile = out;
     }
 
     private void overrideAddresses() {

Modified: 
openejb/trunk/openejb/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/UpdatableTomEEMojo.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/UpdatableTomEEMojo.java?rev=1396961&r1=1396960&r2=1396961&view=diff
==============================================================================
--- 
openejb/trunk/openejb/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/UpdatableTomEEMojo.java
 (original)
+++ 
openejb/trunk/openejb/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/UpdatableTomEEMojo.java
 Thu Oct 11 09:36:26 2012
@@ -16,16 +16,23 @@
  */
 package org.apache.openejb.maven.plugin;
 
+import org.apache.openejb.OpenEJBRuntimeException;
+import org.apache.openejb.assembler.Deployer;
+import org.apache.openejb.client.RemoteInitialContextFactory;
 import org.apache.openejb.config.RemoteServer;
 import org.apache.openejb.loader.Files;
 import org.codehaus.plexus.util.FileUtils;
 
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
 import java.io.File;
 import java.io.FileFilter;
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.List;
+import java.util.Properties;
 import java.util.Timer;
 import java.util.TimerTask;
 import java.util.concurrent.TimeUnit;
@@ -59,6 +66,12 @@ public abstract class UpdatableTomEEMojo
      */
     private String finalName;
 
+    /**
+     * @parameter expression="${tomee-plugin.reload-on-update}" 
default-value="false"
+     * @required
+     */
+    private boolean reloadOnUpdate;
+
     private Timer timer;
 
     @Override
@@ -130,12 +143,18 @@ public abstract class UpdatableTomEEMojo
         }
 
         private void updateFiles(final File source, final File output, final 
long ts) {
+            if (!source.exists()) {
+                getLog().debug(source.getAbsolutePath() + " does'tn exist");
+                return;
+            }
+
             if (!source.isDirectory()) {
                 getLog().warn(source.getAbsolutePath() + " is not a directory, 
skipping");
                 return;
             }
 
             final Collection<File> files = Files.collect(source, fileFilter);
+            int updated = 0;
             for (File file : files) {
                 if (file.isDirectory()
                         || file.lastModified() < lastUpdate) {
@@ -143,6 +162,18 @@ public abstract class UpdatableTomEEMojo
                 }
 
                 updateFile(source, output, file, ts);
+                updated++;
+            }
+
+            if (updated > 0 && reloadOnUpdate) {
+                if (deployedFile != null && deployedFile.exists()) {
+                    String path = deployedFile.getAbsolutePath();
+                    if (path.endsWith(".war")) {
+                        path = path.substring(0, path.length() - 
".war".length());
+                    }
+                    getLog().info("Reloading " + path);
+                    deployer().reload(path);
+                }
             }
         }
 
@@ -170,6 +201,22 @@ public abstract class UpdatableTomEEMojo
         }
     }
 
+    private Deployer deployer() {
+        if (removeTomeeWebapp) {
+            throw new OpenEJBRuntimeException("Can't use reload feature 
without TomEE Webapp, please set removeTomeeWebapp to false");
+        }
+
+        final Properties properties = new Properties();
+        properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, 
RemoteInitialContextFactory.class.getName());
+        properties.setProperty(Context.PROVIDER_URL, "http://"; + tomeeHost + 
":" + tomeeHttpPort + "/tomee/ejb");
+        try {
+            final Context context = new InitialContext(properties);
+            return (Deployer) context.lookup("openejb/DeployerBusinessRemote");
+        } catch (NamingException e) {
+            throw new OpenEJBRuntimeException("Can't lookup Deployer", e);
+        }
+    }
+
     private static class SuffixesFileFilter implements FileFilter {
         private final String[] suffixes;
 

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=1396961&r1=1396960&r2=1396961&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
 Thu Oct 11 09:36:26 2012
@@ -41,7 +41,7 @@ public class TomcatWebappDeployer implem
             throw new OpenEJBRuntimeException(e);
         }
 
-        final TomcatWebAppBuilder.ContextInfo info = 
tomcatWebAppBuilder.standaAloneWebAppInfo(file);
+        final TomcatWebAppBuilder.ContextInfo info = contextInfo(file);
         if (info == null || info.appInfo == null) {
             LOGGER.error("Can't find of appInfo for " + (file != null ? 
file.getAbsolutePath() : null) + ", availables: " + 
tomcatWebAppBuilder.availableApps());
         }
@@ -52,6 +52,22 @@ public class TomcatWebappDeployer implem
         return info.appInfo;
     }
 
+    @Override
+    public void reload(final String path) {
+        final File file = new File(path);
+        final TomcatWebAppBuilder.ContextInfo info = contextInfo(file);
+        if (info == null || info.standardContext == null) { // error
+            LOGGER.warning("Can't find " + path);
+        } else {
+            info.standardContext.reload();
+        }
+    }
+
+    private TomcatWebAppBuilder.ContextInfo contextInfo(final File file) {
+        final TomcatWebAppBuilder tomcatWebAppBuilder = (TomcatWebAppBuilder) 
SystemInstance.get().getComponent(WebAppBuilder.class);
+        return tomcatWebAppBuilder.standaAloneWebAppInfo(file);
+    }
+
     // simply create a fake AppInfo to be able to deploy reusing the logic we 
already have
     private static AppInfo fakeInfo(final File file, final String context) {
         final AppInfo info = new AppInfo();

Modified: 
openejb/trunk/openejb/utils/webdeployer/src/main/java/org/apache/tomee/catalina/deployer/WebappDeployer.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/utils/webdeployer/src/main/java/org/apache/tomee/catalina/deployer/WebappDeployer.java?rev=1396961&r1=1396960&r2=1396961&view=diff
==============================================================================
--- 
openejb/trunk/openejb/utils/webdeployer/src/main/java/org/apache/tomee/catalina/deployer/WebappDeployer.java
 (original)
+++ 
openejb/trunk/openejb/utils/webdeployer/src/main/java/org/apache/tomee/catalina/deployer/WebappDeployer.java
 Thu Oct 11 09:36:26 2012
@@ -215,7 +215,12 @@ public class WebappDeployer implements D
                }
        }
 
-       private void delete(final File f) {
+    @Override
+    public void reload(final String s) {
+        throw new UnsupportedOperationException();
+    }
+
+    private void delete(final File f) {
                if (f == null || (!f.exists())) {
                        return;
                }


Reply via email to