Author: rmannibucau
Date: Mon Jul 16 10:23:27 2012
New Revision: 1361965

URL: http://svn.apache.org/viewvc?rev=1361965&view=rev
Log:
OPENEJB-1869 server event from app

Added:
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/EventHelper.java
Modified:
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java?rev=1361965&r1=1361964&r2=1361965&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
 Mon Jul 16 10:23:27 2012
@@ -135,6 +135,7 @@ import org.apache.openejb.spi.ContainerS
 import org.apache.openejb.spi.SecurityService;
 import org.apache.openejb.util.AsmParameterNameLoader;
 import org.apache.openejb.util.Contexts;
+import org.apache.openejb.util.EventHelper;
 import org.apache.openejb.util.LogCategory;
 import org.apache.openejb.util.Logger;
 import org.apache.openejb.util.Messages;
@@ -241,22 +242,7 @@ public class Assembler extends Assembler
     }
 
     private void installExtensions() {
-
-        final ResourceFinder finder = new ResourceFinder("META-INF");
-
-        try {
-            final List<Class<?>> classes = 
finder.findAvailableClasses("org.apache.openejb.extension");
-            for (Class<?> clazz : classes) {
-                try {
-                    final Object object = clazz.newInstance();
-                    SystemInstance.get().addObserver(object);
-                } catch (Throwable t) {
-                    logger.error("Extension construction failed" + 
clazz.getName(), t);
-                }
-            }
-        } catch (IOException e) {
-            logger.error("Extension scanning of 
'META-INF/org.apache.openejb.extension' files failed", e);
-        }
+        EventHelper.installExtensions(new ResourceFinder("META-INF"));
     }
 
     private void setConfiguration(OpenEjbConfiguration config) {

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java?rev=1361965&r1=1361964&r2=1361965&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
 Mon Jul 16 10:23:27 2012
@@ -92,6 +92,7 @@ import org.apache.openejb.loader.FileUti
 import org.apache.openejb.loader.IO;
 import org.apache.openejb.loader.Options;
 import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.util.EventHelper;
 import org.apache.openejb.util.LogCategory;
 import org.apache.openejb.util.Logger;
 import org.apache.openejb.util.Messages;
@@ -100,6 +101,7 @@ import org.apache.openejb.util.URISuppor
 import org.apache.openejb.util.URLs;
 import org.apache.openejb.util.proxy.QueryProxy;
 import org.apache.xbean.finder.MetaAnnotatedClass;
+import org.apache.xbean.finder.ResourceFinder;
 
 import static 
org.apache.openejb.config.DeploymentsResolver.DEPLOYMENTS_CLASSPATH_PROPERTY;
 import static org.apache.openejb.config.ServiceUtils.implies;
@@ -776,6 +778,26 @@ public class ConfigurationFactory implem
     }
 
     public AppInfo configureApplication(final AppModule appModule) throws 
OpenEJBException {
+        final List<URL> libs = appModule.getAdditionalLibraries();
+        if (libs != null && libs.size() > 0) {
+            EventHelper.installExtensions(new ResourceFinder("META-INF", 
libs.toArray(new URL[libs.size()])));
+        }
+        for (EjbModule ejb : appModule.getEjbModules()) {
+            try {
+                final URL url = ejb.getModuleUri().toURL();
+                if (!libs.contains(url)) {
+                    EventHelper.installExtensions(new 
ResourceFinder("META-INF", url));
+                }
+            } catch (Exception e) {
+                logger.error("can't look for server event listener for module 
" + ejb.getJarLocation());
+            }
+        }
+        for (WebModule web : appModule.getWebModules()) {
+            final List<URL> webLibs = web.getScannableUrls();
+            if (webLibs != null && webLibs.size() > 0) {
+                EventHelper.installExtensions(new ResourceFinder("META-INF", 
webLibs.toArray(new URL[webLibs.size()])));
+            }
+        }
 
         logger.info("config.configApp", appModule.getJarLocation());
         deployer.deploy(appModule);

Added: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/EventHelper.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/EventHelper.java?rev=1361965&view=auto
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/EventHelper.java
 (added)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/EventHelper.java
 Mon Jul 16 10:23:27 2012
@@ -0,0 +1,31 @@
+package org.apache.openejb.util;
+
+import org.apache.openejb.loader.SystemInstance;
+import org.apache.xbean.finder.ResourceFinder;
+
+import java.io.IOException;
+import java.util.List;
+
+public final class EventHelper {
+    private static final Logger LOGGER = 
Logger.getInstance(LogCategory.OPENEJB, EventHelper.class);
+
+    private EventHelper() {
+        // no-op
+    }
+
+    public static void installExtensions(final ResourceFinder finder) {
+        try {
+            final List<Class<?>> classes = 
finder.findAvailableClasses("org.apache.openejb.extension");
+            for (Class<?> clazz : classes) {
+                try {
+                    final Object object = clazz.newInstance();
+                    SystemInstance.get().addObserver(object);
+                } catch (Throwable t) {
+                    LOGGER.error("Extension construction failed" + 
clazz.getName(), t);
+                }
+            }
+        } catch (IOException e) {
+            LOGGER.error("Extension scanning of 
'META-INF/org.apache.openejb.extension' files failed", e);
+        }
+    }
+}


Reply via email to