You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2014/02/19 00:11:15 UTC
svn commit: r1569554 - in /tomee/tomee/trunk:
container/openejb-core/src/main/java/org/apache/openejb/
container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/
container/openejb-core/src/main/java/org/apache/openejb/config/ container/...
Author: dblevins
Date: Tue Feb 18 23:11:14 2014
New Revision: 1569554
URL: http://svn.apache.org/r1569554
Log:
TOMEE-1127 - New Event: @Observes LifecycleEvent
Rename EventHelper to Extensions, add javadoc
Added:
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/Extensions.java
- copied, changed from r1569446, tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/EventHelper.java
Removed:
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/EventHelper.java
Modified:
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ServerListener.java
Copied: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/Extensions.java (from r1569446, tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/EventHelper.java)
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/Extensions.java?p2=tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/Extensions.java&p1=tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/EventHelper.java&r1=1569446&r2=1569554&rev=1569554&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/EventHelper.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/Extensions.java Tue Feb 18 23:11:14 2014
@@ -14,9 +14,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.openejb.util;
+package org.apache.openejb;
import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.util.LogCategory;
+import org.apache.openejb.util.Logger;
import org.apache.xbean.finder.ResourceFinder;
import java.io.IOException;
@@ -24,11 +26,35 @@ import java.util.Collection;
import java.util.Collections;
import java.util.List;
-public final class EventHelper {
+/**
+ * The Extensions API mimics the equivalent CDI Extension/@Observes API
+ *
+ * Via the Extensions/@Obverves API it is possible to listen for any number of
+ * internal events fired by OpenEJB/TomEE during the life of the server and
+ * deployment of applications.
+ *
+ * Extensions are any java class that have one or more @Observes methods using the following format:
+ *
+ * - public void <any-name>(@Observes <any-type> event)
+ *
+ * Extensions can be registered in any number of ways:
+ *
+ * 1. Via a META-INF/org.apache.openejb.extension text file containing the name of exactly one
+ * 2. Via a <Service> tag in the server's openejb.xml or tomee.xml configuration file
+ * 3. Via a <Service> tag in a META-INF/resources.xml in the application
+ * 4. Directly calling SystemInstance#addObserver(Object)
+ *
+ * @see org.apache.openejb.observer.ObserverManager
+ * @see org.apache.openejb.observer.Observes
+ * @see org.apache.openejb.loader.SystemInstance#fireEvent(Object)
+ * @see org.apache.openejb.loader.SystemInstance#addObserver(Object)
+ *
+ */
+public final class Extensions {
- private static final Logger LOGGER = Logger.getInstance(LogCategory.OPENEJB, EventHelper.class);
+ private static final Logger LOGGER = Logger.getInstance(LogCategory.OPENEJB, Extensions.class);
- private EventHelper() {
+ private Extensions() {
// no-op
}
@@ -44,13 +70,13 @@ public final class EventHelper {
public static void installExtensions(final ResourceFinder finder) {
try {
final List<Class<?>> classes = finder.findAvailableClasses("org.apache.openejb.extension");
- addEventClasses(classes);
+ addExtensions(classes);
} catch (IOException e) {
LOGGER.error("Extension scanning of 'META-INF/org.apache.openejb.extension' files failed", e);
}
}
- public static void addEventClasses(final ClassLoader loader, final Collection<String> classes) {
+ public static void addExtensions(final ClassLoader loader, final Collection<String> classes) {
for (final String clazz : classes) {
try {
final Object object = loader.loadClass(clazz).newInstance();
@@ -61,7 +87,7 @@ public final class EventHelper {
}
}
- public static void addEventClasses(final Collection<Class<?>> classes) {
+ public static void addExtensions(final Collection<Class<?>> classes) {
for (final Class<?> clazz : classes) {
try {
final Object object = clazz.newInstance();
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java?rev=1569554&r1=1569553&r2=1569554&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java Tue Feb 18 23:11:14 2014
@@ -109,7 +109,7 @@ import org.apache.openejb.spi.ContainerS
import org.apache.openejb.spi.SecurityService;
import org.apache.openejb.util.Contexts;
import org.apache.openejb.util.DaemonThreadFactory;
-import org.apache.openejb.util.EventHelper;
+import org.apache.openejb.Extensions;
import org.apache.openejb.util.Join;
import org.apache.openejb.util.LogCategory;
import org.apache.openejb.util.Logger;
@@ -315,7 +315,7 @@ public class Assembler extends Assembler
private void installExtensions() {
try {
final Collection<URL> urls = NewLoaderLogic.applyBuiltinExcludes(new UrlSet(Assembler.class.getClassLoader()).excludeJvm()).getUrls();
- EventHelper.installExtensions(new ResourceFinder("META-INF", urls.toArray(new URL[urls.size()])));
+ Extensions.installExtensions(new ResourceFinder("META-INF", urls.toArray(new URL[urls.size()])));
return;
} catch (MalformedURLException e) {
// no-op
@@ -323,8 +323,8 @@ public class Assembler extends Assembler
// no-op
}
- // if an error occured do it brutely
- EventHelper.installExtensions(new ResourceFinder("META-INF"));
+ // if an error occurred do it brutely
+ Extensions.installExtensions(new ResourceFinder("META-INF"));
}
private void setConfiguration(final OpenEjbConfiguration config) {
@@ -624,7 +624,7 @@ public class Assembler extends Assembler
appInfo.path = appInfo.appId;
}
- EventHelper.addEventClasses(classLoader, appInfo.eventClassesNeedingAppClassloader);
+ Extensions.addExtensions(classLoader, appInfo.eventClassesNeedingAppClassloader);
logger.info("createApplication.start", appInfo.path);
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java?rev=1569554&r1=1569553&r2=1569554&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java Tue Feb 18 23:11:14 2014
@@ -81,7 +81,7 @@ import org.apache.openejb.monitoring.Loc
import org.apache.openejb.resource.jdbc.DataSourceFactory;
import org.apache.openejb.resource.jdbc.pool.DataSourceCreator;
import org.apache.openejb.resource.jdbc.pool.DefaultDataSourceCreator;
-import org.apache.openejb.util.EventHelper;
+import org.apache.openejb.Extensions;
import org.apache.openejb.util.LogCategory;
import org.apache.openejb.util.Logger;
import org.apache.openejb.util.Messages;
@@ -898,7 +898,7 @@ public class ConfigurationFactory implem
final List<URL> libs = appModule.getAdditionalLibraries();
if (libs != null && libs.size() > 0) {
final ResourceFinder finder = new ResourceFinder("META-INF", libs.toArray(new URL[libs.size()]));
- extensions.addAll(EventHelper.findExtensions(finder));
+ extensions.addAll(Extensions.findExtensions(finder));
notLoaded.addAll(finder.getResourcesNotLoaded());
}
for (final EjbModule ejb : appModule.getEjbModules()) {
@@ -908,7 +908,7 @@ public class ConfigurationFactory implem
final URL url = uri.toURL();
if (libs != null && !libs.contains(url)) {
final ResourceFinder finder = new ResourceFinder("META-INF", url);
- extensions.addAll(EventHelper.findExtensions(finder));
+ extensions.addAll(Extensions.findExtensions(finder));
notLoaded.addAll(finder.getResourcesNotLoaded());
}
}
@@ -924,13 +924,13 @@ public class ConfigurationFactory implem
final List<URL> webLibs = web.getScannableUrls();
if (webLibs != null && webLibs.size() > 0) {
final ResourceFinder finder = new ResourceFinder("META-INF", webLibs.toArray(new URL[webLibs.size()]));
- extensions.addAll(EventHelper.findExtensions(finder));
+ extensions.addAll(Extensions.findExtensions(finder));
notLoaded.addAll(finder.getResourcesNotLoaded());
}
}
// add it as early as possible, the ones needing the app classloader will be added later
- EventHelper.addEventClasses(extensions);
+ Extensions.addExtensions(extensions);
final String location = appModule.getJarLocation();
logger.info("config.configApp", null != location ? location : appModule.getModuleId());
Modified: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ServerListener.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ServerListener.java?rev=1569554&r1=1569553&r2=1569554&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ServerListener.java (original)
+++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ServerListener.java Tue Feb 18 23:11:14 2014
@@ -43,6 +43,15 @@ public class ServerListener implements L
static private final AtomicBoolean listenerInstalled = new AtomicBoolean(false);
public void lifecycleEvent(final LifecycleEvent event) {
+
+ // Bootstrap
+ install(event);
+
+ // Notify
+ SystemInstance.get().fireEvent(event);
+ }
+
+ private void install(LifecycleEvent event) {
if (Lifecycle.BEFORE_INIT_EVENT.equals(event.getType()) && StandardServer.class.isInstance(event.getSource())) {
installServerInfo();
}