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/06/26 15:15:18 UTC
svn commit: r1354003 - in /openejb/trunk/openejb:
container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/
container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/event/
container/openejb-core/src/test/java/org/apach...
Author: rmannibucau
Date: Tue Jun 26 13:15:16 2012
New Revision: 1354003
URL: http://svn.apache.org/viewvc?rev=1354003&view=rev
Log:
TOMEE-257 using event even for our deployment
Added:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/event/AssemblerAfterApplicationCreated.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/event/AssemblerBeforeApplicationDestroyed.java
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/event/
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/event/AfterApplicationCreated.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/test/java/org/apache/openejb/DependenceValidationTest.java
openejb/trunk/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java
openejb/trunk/openejb/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/WebDeploymentListeners.java
openejb/trunk/openejb/tomee/tomee-jaxrs/src/main/java/org/apache/tomee/webservices/TomeeJaxRsService.java
openejb/trunk/openejb/tomee/tomee-webservices/src/main/java/org/apache/tomee/webservices/TomeeJaxWsService.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=1354003&r1=1354002&r2=1354003&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 Tue Jun 26 13:15:16 2012
@@ -86,9 +86,10 @@ import org.apache.openejb.OpenEJB;
import org.apache.openejb.OpenEJBException;
import org.apache.openejb.OpenEJBRuntimeException;
import org.apache.openejb.UndeployException;
+import org.apache.openejb.assembler.classic.event.AssemblerAfterApplicationCreated;
+import org.apache.openejb.assembler.classic.event.AssemblerBeforeApplicationDestroyed;
import org.apache.openejb.assembler.classic.event.AssemblerCreated;
import org.apache.openejb.assembler.classic.event.AssemblerDestroyed;
-import org.apache.openejb.assembler.classic.event.ConfigurationLoaded;
import org.apache.openejb.cdi.CdiAppContextsService;
import org.apache.openejb.cdi.CdiBuilder;
import org.apache.openejb.cdi.CdiResourceInjectionService;
@@ -123,7 +124,7 @@ import org.apache.openejb.monitoring.Dyn
import org.apache.openejb.assembler.monitoring.JMXContainer;
import org.apache.openejb.monitoring.LocalMBeanServer;
import org.apache.openejb.monitoring.ObjectNameBuilder;
-import org.apache.openejb.observer.ObserverManager;
+import org.apache.openejb.observer.Observes;
import org.apache.openejb.persistence.JtaEntityManagerRegistry;
import org.apache.openejb.persistence.PersistenceClassLoaderHandler;
import org.apache.openejb.resource.GeronimoConnectionManagerFactory;
@@ -173,7 +174,6 @@ public class Assembler extends Assembler
private SecurityService securityService;
protected OpenEjbConfigurationFactory configFactory;
private final Map<String, AppInfo> deployedApplications = new HashMap<String, AppInfo> ();
- private final List<DeploymentListener> deploymentListeners = new ArrayList<DeploymentListener>();
private final Set<String> moduleIds = new HashSet<String>();
private final Set<ObjectName> containersObjectNames = new HashSet<ObjectName>();
@@ -191,43 +191,13 @@ public class Assembler extends Assembler
}
public synchronized void addDeploymentListener(DeploymentListener deploymentListener) {
- deploymentListeners.add(deploymentListener);
+ logger.warning("DeploymentListener API is replaced by ");
+ SystemInstance.get().addObserver(new DeploymentListenerObserver(deploymentListener));
}
public synchronized void removeDeploymentListener(DeploymentListener deploymentListener) {
- deploymentListeners.remove(deploymentListener);
- }
-
- private synchronized void fireAfterApplicationCreated(AppInfo appInfo) {
- ArrayList<DeploymentListener> listeners;
- synchronized (this) {
- listeners = new ArrayList<DeploymentListener>(deploymentListeners);
- }
- for (DeploymentListener listener : listeners) {
- String listenerName = listener.getClass().getSimpleName();
- try {
- logger.debug("appCreationEvent.start", listenerName, appInfo.path);
- listener.afterApplicationCreated(appInfo);
- } catch (Throwable e) {
- logger.error("appCreationEvent.failed", e, listenerName, appInfo.path);
- }
- }
- }
-
- private synchronized void fireBeforeApplicationDestroyed(AppInfo appInfo) {
- ArrayList<DeploymentListener> listeners;
- synchronized (this) {
- listeners = new ArrayList<DeploymentListener>(deploymentListeners);
- }
- for (DeploymentListener listener : listeners) {
- String listenerName = listener.getClass().getSimpleName();
- try {
- logger.debug("appDestroyedEvent.start", listenerName, appInfo.path);
- listener.beforeApplicationDestroyed(appInfo);
- } catch (Throwable e) {
- logger.error("appDestroyedEvent.failed", e, listenerName, appInfo.path);
- }
- }
+ // the wrapping is done here to get the correct equals/hashcode methods
+ SystemInstance.get().removeObserver(new DeploymentListenerObserver(deploymentListener));
}
protected SafeToolkit toolkit = SafeToolkit.getToolkit("Assembler");
@@ -929,7 +899,7 @@ public class Assembler extends Assembler
logger.info("createApplication.success", appInfo.path);
deployedApplications.put(appInfo.path, appInfo);
- fireAfterApplicationCreated(appInfo);
+ systemInstance.fireEvent(new AssemblerAfterApplicationCreated(appInfo));
return appContext;
} catch (ValidationException ve) {
@@ -1175,7 +1145,7 @@ public class Assembler extends Assembler
deployedApplications.remove(appInfo.path);
logger.info("destroyApplication.start", appInfo.path);
- fireBeforeApplicationDestroyed(appInfo);
+ SystemInstance.get().fireEvent(new AssemblerBeforeApplicationDestroyed(appInfo));
final AppContext appContext = containerSystem.getAppContext(appInfo.appId);
@@ -1998,4 +1968,39 @@ public class Assembler extends Assembler
return thread;
}
}
+
+ private static class DeploymentListenerObserver {
+ private final DeploymentListener delegate;
+
+ public DeploymentListenerObserver(final DeploymentListener deploymentListener) {
+ delegate = deploymentListener;
+ }
+
+ public void afterApplicationCreated(@Observes AssemblerAfterApplicationCreated event) {
+ delegate.afterApplicationCreated(event.getApp());
+ }
+
+ public void beforeApplicationDestroyed(@Observes AssemblerBeforeApplicationDestroyed event) {
+ delegate.beforeApplicationDestroyed(event.getApp());
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof DeploymentListenerObserver)) {
+ return false;
+ }
+
+ final DeploymentListenerObserver that = (DeploymentListenerObserver) o;
+
+ return !(delegate != null ? !delegate.equals(that.delegate) : that.delegate != null);
+ }
+
+ @Override
+ public int hashCode() {
+ return delegate != null ? delegate.hashCode() : 0;
+ }
+ }
}
Added: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/event/AssemblerAfterApplicationCreated.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/event/AssemblerAfterApplicationCreated.java?rev=1354003&view=auto
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/event/AssemblerAfterApplicationCreated.java (added)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/event/AssemblerAfterApplicationCreated.java Tue Jun 26 13:15:16 2012
@@ -0,0 +1,15 @@
+package org.apache.openejb.assembler.classic.event;
+
+import org.apache.openejb.assembler.classic.AppInfo;
+
+public class AssemblerAfterApplicationCreated {
+ private final AppInfo app;
+
+ public AssemblerAfterApplicationCreated(final AppInfo appInfo) {
+ app = appInfo;
+ }
+
+ public AppInfo getApp() {
+ return app;
+ }
+}
Added: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/event/AssemblerBeforeApplicationDestroyed.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/event/AssemblerBeforeApplicationDestroyed.java?rev=1354003&view=auto
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/event/AssemblerBeforeApplicationDestroyed.java (added)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/event/AssemblerBeforeApplicationDestroyed.java Tue Jun 26 13:15:16 2012
@@ -0,0 +1,15 @@
+package org.apache.openejb.assembler.classic.event;
+
+import org.apache.openejb.assembler.classic.AppInfo;
+
+public class AssemblerBeforeApplicationDestroyed {
+ private final AppInfo app;
+
+ public AssemblerBeforeApplicationDestroyed(final AppInfo appInfo) {
+ app = appInfo;
+ }
+
+ public AppInfo getApp() {
+ return app;
+ }
+}
Modified: openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/DependenceValidationTest.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/DependenceValidationTest.java?rev=1354003&r1=1354002&r2=1354003&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/DependenceValidationTest.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/DependenceValidationTest.java Tue Jun 26 13:15:16 2012
@@ -53,9 +53,9 @@ public class DependenceValidationTest ex
depsOfPackages = dependencyVisitor.groups;
- // Nothing may depend on the Assembler except the config code
+ // Nothing may depend on the Assembler except the config code and events
String dynamicAssembler = "org.apache.openejb.assembler.dynamic";
- assertNotDependentOn("org.apache.openejb", "org.apache.openejb.assembler.classic", "org.apache.openejb.assembler", "org.apache.openejb.config", "org.apache.openejb.assembler.dynamic", "org.apache.openejb.assembler.classic.cmd", "org.apache.openejb.assembler.monitoring", "org.apache.openejb.cdi", "org.apache.openejb.junit");
+ assertNotDependentOn("org.apache.openejb", "org.apache.openejb.assembler.classic", "org.apache.openejb.assembler", "org.apache.openejb.config", "org.apache.openejb.assembler.dynamic", "org.apache.openejb.assembler.classic.cmd", "org.apache.openejb.assembler.monitoring", "org.apache.openejb.cdi", "org.apache.openejb.junit", "org.apache.openejb.assembler.classic.event");
// Nothing may depend on the Dynamic Assembler
assertNotDependentOn("org.apache.openejb", dynamicAssembler);
Modified: openejb/trunk/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java?rev=1354003&r1=1354002&r2=1354003&view=diff
==============================================================================
--- openejb/trunk/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java (original)
+++ openejb/trunk/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java Tue Jun 26 13:15:16 2012
@@ -42,13 +42,15 @@ import org.apache.openejb.BeanType;
import org.apache.openejb.Injection;
import org.apache.openejb.assembler.classic.AppInfo;
import org.apache.openejb.assembler.classic.Assembler;
-import org.apache.openejb.assembler.classic.DeploymentListener;
import org.apache.openejb.assembler.classic.EjbJarInfo;
import org.apache.openejb.assembler.classic.EnterpriseBeanInfo;
import org.apache.openejb.assembler.classic.WebAppInfo;
+import org.apache.openejb.assembler.classic.event.AssemblerAfterApplicationCreated;
+import org.apache.openejb.assembler.classic.event.AssemblerBeforeApplicationDestroyed;
import org.apache.openejb.core.CoreContainerSystem;
import org.apache.openejb.core.WebContext;
import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.observer.Observes;
import org.apache.openejb.server.SelfManaging;
import org.apache.openejb.server.ServerService;
import org.apache.openejb.server.ServiceException;
@@ -59,7 +61,7 @@ import org.apache.openejb.util.LogCatego
import org.apache.openejb.util.Logger;
import org.apache.webbeans.config.WebBeansContext;
-public abstract class RESTService implements ServerService, SelfManaging, DeploymentListener {
+public abstract class RESTService implements ServerService, SelfManaging {
public static final Logger LOGGER = Logger.getInstance(LogCategory.OPENEJB_RS, RESTService.class);
private static final boolean OLD_WEBSERVICE_DEPLOYMENT = SystemInstance.get().getOptions().get("openejb.webservice.old-deployment", false);
public static final String OPENEJB_JAXRS_PROVIDERS_AUTO_PROP = "openejb.jaxrs.providers.auto";
@@ -220,7 +222,8 @@ public abstract class RESTService implem
return additionalProviders;
}
- @Override public void afterApplicationCreated(final AppInfo appInfo) {
+ public void afterApplicationCreated(@Observes final AssemblerAfterApplicationCreated event) {
+ final AppInfo appInfo = event.getApp();
if (deployedApplications.add(appInfo)) {
if (appInfo.webApps.size() == 0) {
final Map<String, EJBRestServiceInfo> restEjbs = getRestEjbs(appInfo);
@@ -432,10 +435,10 @@ public abstract class RESTService implem
return cl;
}
- @Override
- public void beforeApplicationDestroyed(AppInfo appInfo) {
- if (deployedApplications.contains(appInfo)) {
- for (WebAppInfo webApp : appInfo.webApps) {
+ public void beforeApplicationDestroyed(@Observes AssemblerBeforeApplicationDestroyed event) {
+ final AppInfo app = event.getApp();
+ if (deployedApplications.contains(app)) {
+ for (WebAppInfo webApp : app.webApps) {
final List<DeployedService> toRemove = new ArrayList<DeployedService>();
for (DeployedService service : services) {
if (service.isInWebApp(webApp)) {
@@ -457,9 +460,9 @@ public abstract class RESTService implem
containerSystem = (CoreContainerSystem) SystemInstance.get().getComponent(ContainerSystem.class);
assembler = SystemInstance.get().getComponent(Assembler.class);
if (assembler != null) {
- assembler.addDeploymentListener(this);
+ SystemInstance.get().addObserver(this);
for (AppInfo appInfo : assembler.getDeployedApplications()) {
- afterApplicationCreated(appInfo);
+ afterApplicationCreated(new AssemblerAfterApplicationCreated(appInfo));
}
}
}
@@ -473,9 +476,9 @@ public abstract class RESTService implem
@Override public void stop() throws ServiceException {
if (assembler != null) {
- assembler.removeDeploymentListener(this);
+ SystemInstance.get().removeObserver(this);
for (AppInfo appInfo : new ArrayList<AppInfo>(deployedApplications)) {
- beforeApplicationDestroyed(appInfo);
+ beforeApplicationDestroyed(new AssemblerBeforeApplicationDestroyed(appInfo));
}
}
Modified: openejb/trunk/openejb/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java?rev=1354003&r1=1354002&r2=1354003&view=diff
==============================================================================
--- openejb/trunk/openejb/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java (original)
+++ openejb/trunk/openejb/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java Tue Jun 26 13:15:16 2012
@@ -17,12 +17,28 @@
*/
package org.apache.openejb.server.webservices;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.MalformedURLException;
+import java.net.Socket;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
+import java.util.TreeMap;
+import javax.naming.Context;
import javax.xml.namespace.QName;
import org.apache.openejb.BeanContext;
import org.apache.openejb.Injection;
import org.apache.openejb.assembler.classic.AppInfo;
import org.apache.openejb.assembler.classic.Assembler;
-import org.apache.openejb.assembler.classic.DeploymentListener;
import org.apache.openejb.assembler.classic.EjbJarInfo;
import org.apache.openejb.assembler.classic.EnterpriseBeanInfo;
import org.apache.openejb.assembler.classic.PortInfo;
@@ -31,12 +47,15 @@ import org.apache.openejb.assembler.clas
import org.apache.openejb.assembler.classic.StatelessBeanInfo;
import org.apache.openejb.assembler.classic.WebAppInfo;
import org.apache.openejb.assembler.classic.WsBuilder;
+import org.apache.openejb.assembler.classic.event.AssemblerAfterApplicationCreated;
+import org.apache.openejb.assembler.classic.event.AssemblerBeforeApplicationDestroyed;
import org.apache.openejb.core.CoreContainerSystem;
import org.apache.openejb.core.WebContext;
import org.apache.openejb.core.webservices.PortAddressRegistry;
import org.apache.openejb.core.webservices.PortAddressRegistryImpl;
import org.apache.openejb.core.webservices.PortData;
import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.observer.Observes;
import org.apache.openejb.server.SelfManaging;
import org.apache.openejb.server.ServerService;
import org.apache.openejb.server.ServiceException;
@@ -48,25 +67,7 @@ import org.apache.openejb.util.LogCatego
import org.apache.openejb.util.Logger;
import org.apache.openejb.util.StringTemplate;
-import javax.naming.Context;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.net.MalformedURLException;
-import java.net.Socket;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Set;
-import java.util.TreeMap;
-
-public abstract class WsService implements ServerService, SelfManaging, DeploymentListener {
+public abstract class WsService implements ServerService, SelfManaging {
public static final Logger logger = Logger.getInstance(LogCategory.OPENEJB_WS, WsService.class);
public static final String WS_ADDRESS_FORMAT = "openejb.wsAddress.format";
public static final String WS_FORCE_ADDRESS = "openejb.webservice.deployment.address";
@@ -170,18 +171,18 @@ public abstract class WsService implemen
assembler = SystemInstance.get().getComponent(Assembler.class);
SystemInstance.get().setComponent(WsService.class, this);
if (assembler != null) {
- assembler.addDeploymentListener(this);
+ SystemInstance.get().addObserver(this);
for (AppInfo appInfo : assembler.getDeployedApplications()) {
- afterApplicationCreated(appInfo);
+ afterApplicationCreated(new AssemblerAfterApplicationCreated(appInfo));
}
}
}
public void stop() throws ServiceException {
if (assembler != null) {
- assembler.removeDeploymentListener(this);
+ SystemInstance.get().removeObserver(this);
for (AppInfo appInfo : new ArrayList<AppInfo>(deployedApplications)) {
- beforeApplicationDestroyed(appInfo);
+ beforeApplicationDestroyed(new AssemblerBeforeApplicationDestroyed(appInfo));
}
assembler = null;
if (SystemInstance.get().getComponent(WsService.class) == this) {
@@ -198,7 +199,8 @@ public abstract class WsService implemen
protected abstract void destroyPojoWsContainer(String serviceId);
- public void afterApplicationCreated(AppInfo appInfo) {
+ public void afterApplicationCreated(@Observes AssemblerAfterApplicationCreated event) {
+ final AppInfo appInfo = event.getApp();
if (deployedApplications.add(appInfo)) {
Map<String, String> webContextByEjb = new HashMap<String, String>();
for (WebAppInfo webApp : appInfo.webApps) {
@@ -361,7 +363,8 @@ public abstract class WsService implemen
}
}
- public void beforeApplicationDestroyed(AppInfo appInfo) {
+ public void beforeApplicationDestroyed(@Observes AssemblerBeforeApplicationDestroyed event) {
+ final AppInfo appInfo = event.getApp();
if (deployedApplications.remove(appInfo)) {
for (EjbJarInfo ejbJar : appInfo.ejbJars) {
Map<String,PortInfo> ports = new TreeMap<String,PortInfo>();
Modified: openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java?rev=1354003&r1=1354002&r2=1354003&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java (original)
+++ openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java Tue Jun 26 13:15:16 2012
@@ -203,7 +203,7 @@ public class TomcatLoader implements Loa
SystemInstance.get().setComponent(WebAppBuilder.class, tomcatWebAppBuilder);
}
- // Web Services will be installed into the WebDeploymentListeners list
+ // for compatibility purpose, no more used normally by our trunk
SystemInstance.get().setComponent(WebDeploymentListeners.class, new WebDeploymentListeners());
if (optionalService(properties, "org.apache.tomee.webservices.TomeeJaxRsService")) {
Modified: openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java?rev=1354003&r1=1354002&r2=1354003&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java (original)
+++ openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java Tue Jun 26 13:15:16 2012
@@ -73,6 +73,7 @@ import org.apache.openejb.util.LogCatego
import org.apache.openejb.util.Logger;
import org.apache.tomcat.InstanceManager;
import org.apache.tomcat.util.digester.Digester;
+import org.apache.tomee.catalina.event.AfterApplicationCreated;
import org.apache.tomee.common.LegacyAnnotationProcessor;
import org.apache.tomee.common.TomcatVersion;
import org.apache.tomee.common.UserTransactionFactory;
@@ -955,11 +956,8 @@ public class TomcatWebAppBuilder impleme
// required for Pojo Web Services because when Assembler creates the application
// the CoreContainerSystem does not contain the WebContext
// see also the start method getContainerSystem().addWebDeployment(webContext);
- final WebDeploymentListeners listeners = SystemInstance.get().getComponent(WebDeploymentListeners.class);
- if (listeners != null) {
- for (final WebAppInfo webApp : contextInfo.appInfo.webApps) {
- listeners.afterApplicationCreated(contextInfo.appInfo, webApp);
- }
+ for (final WebAppInfo webApp : contextInfo.appInfo.webApps) {
+ SystemInstance.get().fireEvent(new AfterApplicationCreated(contextInfo.appInfo, webApp));
}
if (!TomcatVersion.hasAnnotationProcessingSupport()) {
Modified: openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/WebDeploymentListeners.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/WebDeploymentListeners.java?rev=1354003&r1=1354002&r2=1354003&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/WebDeploymentListeners.java (original)
+++ openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/WebDeploymentListeners.java Tue Jun 26 13:15:16 2012
@@ -21,22 +21,33 @@ import org.apache.openejb.assembler.clas
import java.util.ArrayList;
import java.util.List;
+import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.observer.Observes;
+import org.apache.openejb.util.LogCategory;
+import org.apache.openejb.util.Logger;
+import org.apache.tomee.catalina.event.AfterApplicationCreated;
/**
* @version $Rev$ $Date$
*/
-public class WebDeploymentListeners implements WebDeploymentListener {
- List<WebDeploymentListener> listeners = new ArrayList<WebDeploymentListener>();
+public class WebDeploymentListeners {
+ private static final Logger LOGGER = Logger.getInstance(LogCategory.OPENEJB, WebDeploymentListeners.class);
- public boolean add(WebDeploymentListener webDeploymentListener) {
- return listeners.add(webDeploymentListener);
+ public boolean add(WebDeploymentListener webDeploymentListener) { // compatibility
+ LOGGER.warning("WebDeploymentListener API is replaced by 'void afterApplicationCreated(@Observes final AfterApplicationCreated event)' API");
+ SystemInstance.get().addObserver(new WebDeploymentListenerObserver(webDeploymentListener));
+ return true;
}
- @Override
- public void afterApplicationCreated(AppInfo appInfo, WebAppInfo webApp) {
- for (WebDeploymentListener listener : listeners) {
- listener.afterApplicationCreated(appInfo, webApp);
+ private static class WebDeploymentListenerObserver {
+ private final WebDeploymentListener delegate;
+
+ public WebDeploymentListenerObserver(final WebDeploymentListener webDeploymentListener) {
+ delegate = webDeploymentListener;
}
- }
+ public void afterApplicationCreated(@Observes final AfterApplicationCreated event) {
+ delegate.afterApplicationCreated(event.getApp(), event.getWeb());
+ }
+ }
}
Added: openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/event/AfterApplicationCreated.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/event/AfterApplicationCreated.java?rev=1354003&view=auto
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/event/AfterApplicationCreated.java (added)
+++ openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/event/AfterApplicationCreated.java Tue Jun 26 13:15:16 2012
@@ -0,0 +1,22 @@
+package org.apache.tomee.catalina.event;
+
+import org.apache.openejb.assembler.classic.AppInfo;
+import org.apache.openejb.assembler.classic.WebAppInfo;
+
+public class AfterApplicationCreated {
+ private final AppInfo app;
+ private final WebAppInfo web;
+
+ public AfterApplicationCreated(final AppInfo appInfo, final WebAppInfo webApp) {
+ app = appInfo;
+ web = webApp;
+ }
+
+ public AppInfo getApp() {
+ return app;
+ }
+
+ public WebAppInfo getWeb() {
+ return web;
+ }
+}
Modified: openejb/trunk/openejb/tomee/tomee-jaxrs/src/main/java/org/apache/tomee/webservices/TomeeJaxRsService.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-jaxrs/src/main/java/org/apache/tomee/webservices/TomeeJaxRsService.java?rev=1354003&r1=1354002&r2=1354003&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-jaxrs/src/main/java/org/apache/tomee/webservices/TomeeJaxRsService.java (original)
+++ openejb/trunk/openejb/tomee/tomee-jaxrs/src/main/java/org/apache/tomee/webservices/TomeeJaxRsService.java Tue Jun 26 13:15:16 2012
@@ -16,21 +16,18 @@
*/
package org.apache.tomee.webservices;
-import org.apache.openejb.assembler.classic.AppInfo;
-import org.apache.openejb.assembler.classic.WebAppInfo;
+import java.util.Properties;
import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.observer.Observes;
import org.apache.openejb.server.rest.RESTService;
import org.apache.openejb.server.rest.RsRegistry;
import org.apache.openejb.spi.Service;
-import org.apache.tomee.catalina.WebDeploymentListener;
-import org.apache.tomee.catalina.WebDeploymentListeners;
-
-import java.util.Properties;
+import org.apache.tomee.catalina.event.AfterApplicationCreated;
/**
* @version $Rev$ $Date$
*/
-public class TomeeJaxRsService implements Service, WebDeploymentListener {
+public class TomeeJaxRsService implements Service {
@Override
public void init(Properties props) throws Exception {
@@ -42,17 +39,16 @@ public class TomeeJaxRsService implement
system.setComponent(RsRegistry.class, tomcatRestHandler);
}
- system.getComponent(WebDeploymentListeners.class).add(this);
+ system.addObserver(this);
}
- @Override
- public void afterApplicationCreated(AppInfo appInfo, WebAppInfo webApp) {
+ public void afterApplicationCreated(@Observes final AfterApplicationCreated event) {
// required for Pojo Web Services because when Assembler creates the application
// the CoreContainerSystem does not contain the WebContext
// see also the start method getContainerSystem().addWebDeployment(webContext);
RESTService component = SystemInstance.get().getComponent(RESTService.class);
if (component == null) return;
- component.afterApplicationCreated(appInfo, webApp);
+ component.afterApplicationCreated(event.getApp(), event.getWeb());
}
}
Modified: openejb/trunk/openejb/tomee/tomee-webservices/src/main/java/org/apache/tomee/webservices/TomeeJaxWsService.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webservices/src/main/java/org/apache/tomee/webservices/TomeeJaxWsService.java?rev=1354003&r1=1354002&r2=1354003&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-webservices/src/main/java/org/apache/tomee/webservices/TomeeJaxWsService.java (original)
+++ openejb/trunk/openejb/tomee/tomee-webservices/src/main/java/org/apache/tomee/webservices/TomeeJaxWsService.java Tue Jun 26 13:15:16 2012
@@ -16,21 +16,18 @@
*/
package org.apache.tomee.webservices;
-import org.apache.openejb.assembler.classic.AppInfo;
-import org.apache.openejb.assembler.classic.WebAppInfo;
+import java.util.Properties;
import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.observer.Observes;
import org.apache.openejb.server.webservices.WsRegistry;
import org.apache.openejb.server.webservices.WsService;
import org.apache.openejb.spi.Service;
-import org.apache.tomee.catalina.WebDeploymentListener;
-import org.apache.tomee.catalina.WebDeploymentListeners;
-
-import java.util.Properties;
+import org.apache.tomee.catalina.event.AfterApplicationCreated;
/**
* @version $Rev$ $Date$
*/
-public class TomeeJaxWsService implements Service, WebDeploymentListener {
+public class TomeeJaxWsService implements Service {
@Override
public void init(Properties props) throws Exception {
@@ -43,16 +40,15 @@ public class TomeeJaxWsService implement
system.setComponent(WsRegistry.class, tomcatSoapHandler);
}
- system.getComponent(WebDeploymentListeners.class).add(this);
+ system.addObserver(this);
}
- @Override
- public void afterApplicationCreated(AppInfo appInfo, WebAppInfo webApp) {
+ public void afterApplicationCreated(@Observes final AfterApplicationCreated event) {
// required for Pojo Web Services because when Assembler creates the application
// the CoreContainerSystem does not contain the WebContext
// see also the start method getContainerSystem().addWebDeployment(webContext);
WsService component = SystemInstance.get().getComponent(WsService.class);
if (component == null) return;
- component.afterApplicationCreated(webApp);
+ component.afterApplicationCreated(event.getWeb());
}
}