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/07/16 12:23:27 UTC

svn commit: r1361965 - in /openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb: assembler/classic/Assembler.java config/ConfigurationFactory.java util/EventHelper.java

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