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 2012/06/21 10:35:12 UTC
svn commit: r1352450 - in /openejb/trunk/openejb/container:
openejb-core/src/main/java/org/apache/openejb/assembler/classic/
openejb-core/src/main/java/org/apache/openejb/config/
openejb-core/src/main/java/org/apache/openejb/config/sys/ openejb-core/sr...
Author: dblevins
Date: Thu Jun 21 08:35:11 2012
New Revision: 1352450
URL: http://svn.apache.org/viewvc?rev=1352450&view=rev
Log:
Returned the observers to be a list rather than a map (TOMEE-247)
TOMEE-250: Added <Service> element to the config xml
Added:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/Service.java
- copied, changed from r1352396, openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/ServerObservers.java
Removed:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/ServerObservers.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
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/JaxbOpenejb.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/Openejb.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/SaxOpenejb.java
openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/config/HooksTest.java
openejb/trunk/openejb/container/openejb-loader/src/main/java/org/apache/openejb/loader/SystemInstance.java
openejb/trunk/openejb/container/openejb-loader/src/main/java/org/apache/openejb/observer/ObserverManager.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=1352450&r1=1352449&r2=1352450&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 Thu Jun 21 08:35:11 2012
@@ -65,6 +65,8 @@ import javax.transaction.TransactionMana
import javax.transaction.TransactionSynchronizationRegistry;
import javax.validation.ValidationException;
import javax.validation.ValidatorFactory;
+
+import com.sun.xml.internal.fastinfoset.sax.SystemIdResolver;
import org.apache.geronimo.connector.GeronimoBootstrapContext;
import org.apache.geronimo.connector.work.GeronimoWorkManager;
import org.apache.geronimo.connector.work.HintsContextHandler;
@@ -122,6 +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.persistence.JtaEntityManagerRegistry;
import org.apache.openejb.persistence.PersistenceClassLoaderHandler;
import org.apache.openejb.resource.GeronimoConnectionManagerFactory;
@@ -136,7 +139,6 @@ import org.apache.openejb.util.Messages;
import org.apache.openejb.util.OpenEJBErrorHandler;
import org.apache.openejb.util.References;
import org.apache.openejb.util.SafeToolkit;
-import org.apache.openejb.util.UpdateChecker;
import org.apache.openejb.util.proxy.ProxyFactory;
import org.apache.openejb.util.proxy.ProxyManager;
import org.apache.webbeans.config.WebBeansContext;
@@ -163,10 +165,6 @@ public class Assembler extends Assembler
private static final String GLOBAL_UNIQUE_ID = "global";
- private static final Map<String, String> OBSERVERS_ALIASES = new HashMap<String, String>() {{
- put("update-checker", UpdateChecker.class.getName());
- }};
-
Messages messages = new Messages(Assembler.class.getPackage().getName());
private final CoreContainerSystem containerSystem;
@@ -264,11 +262,30 @@ public class Assembler extends Assembler
system.setComponent(EjbResolver.class, new EjbResolver(null, EjbResolver.Scope.GLOBAL));
- loadAvailableObservers();
+ installExtensions();
system.fireEvent(new AssemblerCreated());
}
+ 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);
+ }
+ }
+
private void setConfiguration(OpenEjbConfiguration config) {
this.config = config;
if (config.containerSystem == null) {
@@ -336,9 +353,6 @@ public class Assembler extends Assembler
setContext(new HashMap<String, Object>());
try {
OpenEjbConfiguration config = getOpenEjbConfiguration();
- addObserversFromConfig(config);
- SystemInstance.get().fireEvent(new ConfigurationLoaded());
-
buildContainerSystem(config);
} catch (OpenEJBException ae) {
/* OpenEJBExceptions contain useful information and are debbugable.
@@ -358,46 +372,6 @@ public class Assembler extends Assembler
}
}
- private void loadAvailableObservers() {
- final ResourceFinder finder = new ResourceFinder("META-INF");
- try {
- final Map<String, String> observers = finder.mapAvailableStrings("org.apache.openejb.observer");
- final ClassLoader cl = Thread.currentThread().getContextClassLoader();
- for (Entry<String, String> entry : observers.entrySet()) {
- final String alias = entry.getKey();
- if (!SystemInstance.get().hasObserver(alias)) {
- addObserver(cl, alias, entry.getValue());
- }
- }
- } catch (IOException e) {
- logger.error("can't scan for observer in META-INF/", e);
- }
- }
-
- private void addObserver(final ClassLoader cl, final String alias, final String name) {
- String observer = name;
- if (OBSERVERS_ALIASES.containsKey(observer)) {
- observer = OBSERVERS_ALIASES.get(observer);
- }
-
- final Object instance;
- try {
- instance = cl.loadClass(observer).newInstance();
- } catch (Exception e) {
- logger.error("can't add observer " + observer);
- return;
- }
-
- SystemInstance.get().addObserver(alias, instance);
- }
-
- private void addObserversFromConfig(final OpenEjbConfiguration config) {
- final ClassLoader cl = Thread.currentThread().getContextClassLoader();
- for (String rawObserver : config.facilities.serverObservers) {
- addObserver(cl, rawObserver, rawObserver); // no real alias when found here === "forced by user"
- }
- }
-
protected OpenEjbConfiguration getOpenEjbConfiguration() throws OpenEJBException {
OpenEjbConfiguration config = configFactory.getOpenEjbConfiguration();
return config;
@@ -439,6 +413,10 @@ public class Assembler extends Assembler
*/
public void buildContainerSystem(final OpenEjbConfiguration configInfo) throws Exception {
+ for (ServiceInfo serviceInfo : configInfo.facilities.services) {
+ createService(serviceInfo);
+ }
+
ContainerSystemInfo containerSystemInfo = configInfo.containerSystem;
if (configInfo.facilities.intraVmServer != null) {
@@ -1539,6 +1517,26 @@ public class Assembler extends Assembler
}
}
+ public void createService(ServiceInfo serviceInfo) throws OpenEJBException {
+ ObjectRecipe serviceRecipe = createRecipe(serviceInfo);
+
+ Object service = serviceRecipe.create();
+
+ Class serviceClass = service.getClass();
+
+ logUnusedProperties(serviceRecipe, serviceInfo);
+
+ getContext().put(serviceClass.getName(), service);
+
+ props.put(serviceClass.getName(), service);
+ props.put(serviceInfo.service, service);
+ props.put(serviceInfo.id, service);
+
+ config.facilities.services.add(serviceInfo);
+
+ logger.getChildLogger("service").debug("createService.success", serviceInfo.service, serviceInfo.id, serviceInfo.className);
+ }
+
public void createProxyFactory(ProxyFactoryInfo serviceInfo) throws OpenEJBException {
ObjectRecipe serviceRecipe = createRecipe(serviceInfo);
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=1352450&r1=1352449&r2=1352450&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 Thu Jun 21 08:35:11 2012
@@ -76,7 +76,7 @@ import org.apache.openejb.config.sys.Ope
import org.apache.openejb.config.sys.ProxyFactory;
import org.apache.openejb.config.sys.Resource;
import org.apache.openejb.config.sys.SecurityService;
-import org.apache.openejb.config.sys.ServerObservers;
+import org.apache.openejb.config.sys.Service;
import org.apache.openejb.config.sys.ServiceProvider;
import org.apache.openejb.config.sys.TransactionManager;
import org.apache.openejb.jee.Application;
@@ -384,8 +384,9 @@ public class ConfigurationFactory implem
sys.containerSystem = new ContainerSystemInfo();
sys.facilities = new FacilitiesInfo();
- for (ServerObservers observer : openejb.getServerObservers()) {
- sys.facilities.serverObservers.add(observer.getName());
+ for (Service service : openejb.getServices()) {
+ final JndiContextInfo info = configureService(service, JndiContextInfo.class);
+ sys.facilities.services.add(info);
}
for (final JndiProvider provider : openejb.getJndiProvider()) {
@@ -640,9 +641,6 @@ public class ConfigurationFactory implem
}
deployments.setClasspath(new URLClassLoader(urls.toArray(new URL[urls.size()])));
}
- } else if (object instanceof ServerObservers) {
- final ServerObservers hook = (ServerObservers) object;
- hook.setName(map.remove("name"));
}
return object;
@@ -787,10 +785,10 @@ public class ConfigurationFactory implem
}
private static class DefaultService {
- private final Class<? extends Service> type;
+ private final Class<? extends org.apache.openejb.config.Service> type;
private final String id;
- public DefaultService(final String id, final Class<? extends Service> type) {
+ public DefaultService(final String id, final Class<? extends org.apache.openejb.config.Service> type) {
this.id = id;
this.type = type;
}
@@ -798,7 +796,7 @@ public class ConfigurationFactory implem
private static final Map<Class<? extends ServiceInfo>, DefaultService> defaultProviders = new HashMap<Class<? extends ServiceInfo>, DefaultService>();
- private static final Map<Class<? extends ServiceInfo>, Class<? extends Service>> types = new HashMap<Class<? extends ServiceInfo>, Class<? extends Service>>();
+ private static final Map<Class<? extends ServiceInfo>, Class<? extends org.apache.openejb.config.Service>> types = new HashMap<Class<? extends ServiceInfo>, Class<? extends org.apache.openejb.config.Service>>();
/**
* This is the magic that allows people to be really vague in their openejb.xml and not specify
@@ -838,15 +836,15 @@ public class ConfigurationFactory implem
public <T extends ServiceInfo> T configureService(final Class<? extends T> type) throws OpenEJBException {
- return configureService((Service) null, type);
+ return configureService((org.apache.openejb.config.Service) null, type);
}
- private <T extends ServiceInfo> Service getDefaultService(final Class<? extends T> type) throws OpenEJBException {
+ private <T extends ServiceInfo> org.apache.openejb.config.Service getDefaultService(final Class<? extends T> type) throws OpenEJBException {
final DefaultService defaultService = defaultProviders.get(type);
if (defaultService == null) return null;
- final Service service;
+ final org.apache.openejb.config.Service service;
try {
service = JaxbOpenejb.create(defaultService.type);
service.setType(defaultService.id);
@@ -872,7 +870,7 @@ public class ConfigurationFactory implem
* @return ServiceInfo
* @throws OpenEJBException On error
*/
- public <T extends ServiceInfo> T configureService(Service service, final Class<? extends T> infoType) throws OpenEJBException {
+ public <T extends ServiceInfo> T configureService(org.apache.openejb.config.Service service, final Class<? extends T> infoType) throws OpenEJBException {
try {
if (infoType == null) throw new NullPointerException("type");
@@ -1017,7 +1015,7 @@ public class ConfigurationFactory implem
@SuppressWarnings({"unchecked"})
- private ServiceProvider resolveServiceProvider(final Service service, final Class infoType) throws OpenEJBException {
+ private ServiceProvider resolveServiceProvider(final org.apache.openejb.config.Service service, final Class infoType) throws OpenEJBException {
if (service.getProvider() != null) {
return ServiceUtils.getServiceProvider(service.getProvider());
@@ -1036,7 +1034,7 @@ public class ConfigurationFactory implem
}
if (infoType != null) {
- final Service defaultService = getDefaultService(infoType);
+ final org.apache.openejb.config.Service defaultService = getDefaultService(infoType);
if (defaultService != null) {
return resolveServiceProvider(defaultService, null);
}
@@ -1070,9 +1068,9 @@ public class ConfigurationFactory implem
public <T extends ServiceInfo> T configureService(final Class<? extends T> type, final String serviceId, final Properties declaredProperties, final String providerId, final String serviceType) throws OpenEJBException {
if (type == null) throw new NullPointerException("type is null");
- final Class<? extends Service> serviceClass = types.get(type);
+ final Class<? extends org.apache.openejb.config.Service> serviceClass = types.get(type);
if (serviceClass == null) throw new OpenEJBException("Unsupported service info type: " + type.getName());
- final Service service;
+ final org.apache.openejb.config.Service service;
try {
service = serviceClass.newInstance();
} catch (Exception e) {
Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/JaxbOpenejb.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/JaxbOpenejb.java?rev=1352450&r1=1352449&r2=1352450&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/JaxbOpenejb.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/JaxbOpenejb.java Thu Jun 21 08:35:11 2012
@@ -20,7 +20,6 @@ import org.apache.openejb.OpenEJBExcepti
import org.apache.openejb.config.ConfigUtils;
import org.apache.openejb.jee.JAXBContextFactory;
import org.apache.openejb.loader.IO;
-import org.apache.openejb.loader.SystemInstance;
import org.apache.xbean.finder.ResourceFinder;
import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
@@ -122,7 +121,7 @@ public abstract class JaxbOpenejb {
} else if (type.equals("TransactionManager")) {
return (T) createTransactionManager();
} else if (type.equals("ServerObservers")) {
- return (T) createServerObservers();
+ return (T) createService();
}
throw new IllegalArgumentException("Unknown type " + type);
}
@@ -380,8 +379,8 @@ public abstract class JaxbOpenejb {
return new Deployments();
}
- public static ServerObservers createServerObservers() {
- return new ServerObservers();
+ public static Service createService() {
+ return new Service();
}
public static JndiProvider createJndiProvider() {
Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/Openejb.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/Openejb.java?rev=1352450&r1=1352449&r2=1352450&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/Openejb.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/Openejb.java Thu Jun 21 08:35:11 2012
@@ -73,8 +73,8 @@ public class Openejb {
protected List<Resource> resource;
@XmlElement(name = "Deployments")
protected List<Deployments> deployments;
- @XmlElement(name = "ServerObservers")
- protected List<ServerObservers> serverObservers;
+ @XmlElement(name = "Service")
+ protected List<Service> services;
/**
* Gets the value of the container property.
@@ -305,11 +305,11 @@ public class Openejb {
return this.deployments;
}
- public List<ServerObservers> getServerObservers() {
- if (serverObservers == null) {
- serverObservers = new ArrayList<ServerObservers>();
+ public List<Service> getServices() {
+ if (services == null) {
+ services = new ArrayList<Service>();
}
- return this.serverObservers;
+ return this.services;
}
public void add(Object service) {
@@ -331,8 +331,8 @@ public class Openejb {
setSecurityService((SecurityService) service);
} else if (service instanceof Deployments) {
getDeployments().add((Deployments) service);
- } else if (service instanceof ServerObservers) {
- getServerObservers().add((ServerObservers) service);
+ } else if (service instanceof Service) {
+ getServices().add((Service) service);
}
}
}
Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/SaxOpenejb.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/SaxOpenejb.java?rev=1352450&r1=1352449&r2=1352450&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/SaxOpenejb.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/SaxOpenejb.java Thu Jun 21 08:35:11 2012
@@ -22,7 +22,7 @@ import java.io.FileNotFoundException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
-import org.apache.openejb.config.Service;
+
import org.apache.openejb.loader.SystemInstance;
import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
@@ -126,7 +126,7 @@ class SaxOpenejb extends DefaultHandler
else if (localName.equals("Connector")) push(new ResourceElement());
else if (localName.equals("Deployments")) push(new DeploymentsElement());
else if (localName.equals("Import")) push(new ImportElement());
- else if (localName.equals("ServerObservers")) push(new ServerObserversElement());
+ else if (localName.equals("ServerObservers")) push(new DeclaredServiceElement());
else throw new IllegalStateException("Unsupported Element: " + localName);
get().startElement(uri, localName, qName, attributes);
}
@@ -159,7 +159,7 @@ class SaxOpenejb extends DefaultHandler
}
}
- private abstract class ServiceElement<S extends Service> extends Content {
+ private abstract class ServiceElement<S extends org.apache.openejb.config.Service> extends Content {
final S service;
@@ -289,17 +289,22 @@ class SaxOpenejb extends DefaultHandler
}
}
- private class ServerObserversElement extends DefaultHandler {
- private final ServerObservers observer = new ServerObservers();
+ public class DeclaredServiceElement extends ServiceElement<Service> {
+
+ public DeclaredServiceElement() {
+ super(new Service());
+ }
@Override
- public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
- observer.setName(attributes.getValue("name"));
+ public void startElement(String uri, String localName, String qName, Attributes attributes) {
+ super.startElement(uri, localName, qName, attributes);
+ service.setClazz(attributes.getValue("class"));
}
@Override
- public void endElement(String uri, String localName, String qName) throws SAXException {
- openejb.getServerObservers().add(observer);
+ public void endElement(String uri, String localName, String qName) {
+ openejb.getServices().add(service);
+ super.endElement(uri, localName, qName);
}
}
Copied: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/Service.java (from r1352396, openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/ServerObservers.java)
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/Service.java?p2=openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/Service.java&p1=openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/ServerObservers.java&r1=1352396&r2=1352450&rev=1352450&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/ServerObservers.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/Service.java Thu Jun 21 08:35:11 2012
@@ -25,17 +25,39 @@ import javax.xml.bind.annotation.XmlType
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "")
-@XmlRootElement(name = "ServerObservers")
-public class ServerObservers {
+@XmlRootElement(name = "Service")
+public class Service extends AbstractService {
- @XmlAttribute
- protected String name;
+ @XmlAttribute(name = "class")
+ protected String clazz;
- public String getName() {
- return name;
+ public Service() {
}
- public void setName(String name) {
- this.name = name;
+ public Service(String id, String clazz) {
+ super(id);
+ this.clazz = clazz;
+ }
+
+ public Service(String id, String type, String clazz) {
+ super(id, type);
+ this.clazz = clazz;
+ }
+
+ public Service(String id, String type, String provider, String clazz) {
+ super(id, type, provider);
+ this.clazz = clazz;
+ }
+
+ public Service(String clazz) {
+ this.clazz = clazz;
+ }
+
+ public String getClazz() {
+ return clazz;
+ }
+
+ public void setClazz(String clazz) {
+ this.clazz = clazz;
}
}
Modified: openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/config/HooksTest.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/config/HooksTest.java?rev=1352450&r1=1352449&r2=1352450&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/config/HooksTest.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/config/HooksTest.java Thu Jun 21 08:35:11 2012
@@ -35,7 +35,7 @@ public class HooksTest {
@BeforeClass
public static void init() {
SystemInstance.get().getProperties().putAll(new Properties() {{
- setProperty("lifecycle", "new://ServerObservers?name=" + HookLifecycle.class.getName());
+ setProperty("lifecycle", "new://Service?class=" + HookLifecycle.class.getName());
}});
}
Modified: openejb/trunk/openejb/container/openejb-loader/src/main/java/org/apache/openejb/loader/SystemInstance.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-loader/src/main/java/org/apache/openejb/loader/SystemInstance.java?rev=1352450&r1=1352449&r2=1352450&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-loader/src/main/java/org/apache/openejb/loader/SystemInstance.java (original)
+++ openejb/trunk/openejb/container/openejb-loader/src/main/java/org/apache/openejb/loader/SystemInstance.java Thu Jun 21 08:35:11 2012
@@ -84,22 +84,14 @@ public class SystemInstance {
observerManager.fireEvent(event);
}
- public ObserverManager.Observer addObserver(Object observer) {
- return observerManager.addObserver(observer.getClass().getName(), observer);
+ public boolean addObserver(Object observer) {
+ return observerManager.addObserver(observer);
}
- public void addObserver(final String alias, final Object instance) {
- observerManager.addObserver(alias, instance);
- }
-
- public ObserverManager.Observer removeObserver(Object observer) {
+ public boolean removeObserver(Object observer) {
return observerManager.removeObserver(observer);
}
- public boolean hasObserver(final String value) {
- return observerManager.hasObserver(value);
- }
-
public long getStartTime() {
return startTime;
}
@@ -209,9 +201,6 @@ public class SystemInstance {
public static synchronized void reset() {
try {
- if (system != null) {
- system.observerManager.clear();
- }
system = new SystemInstance(new Properties()); // don't put system properties here, it is already done
initialized = false;
} catch (Exception e) {
@@ -270,4 +259,5 @@ public class SystemInstance {
public boolean hasProperty(final String propName) {
return this.internalProperties.get(propName) != null;
}
+
}
Modified: openejb/trunk/openejb/container/openejb-loader/src/main/java/org/apache/openejb/observer/ObserverManager.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-loader/src/main/java/org/apache/openejb/observer/ObserverManager.java?rev=1352450&r1=1352449&r2=1352450&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-loader/src/main/java/org/apache/openejb/observer/ObserverManager.java (original)
+++ openejb/trunk/openejb/container/openejb-loader/src/main/java/org/apache/openejb/observer/ObserverManager.java Thu Jun 21 08:35:11 2012
@@ -31,32 +31,32 @@ import java.util.Map;
public class ObserverManager {
- private final Map<String, Observer> observers = new HashMap<String, Observer>();
+ private final List<Observer> observers = new ArrayList<Observer>();
- public Observer addObserver(String alias, Object observer) {
+ public boolean addObserver(Object observer) {
if (observer == null) throw new IllegalArgumentException("observer cannot be null");
- final Observer put = observers.put(alias, new Observer(observer));
+ final boolean added = observers.add(new Observer(observer));
// Observers can observe they have been added and are active
fireEvent(new ObserverAdded(observer));
- return put;
+ return added;
}
- public Observer removeObserver(Object observer) {
+ public boolean removeObserver(Object observer) {
if (observer == null) throw new IllegalArgumentException("observer cannot be null");
// Observers can observe they are to be removed
fireEvent(new ObserverRemoved(observer));
- return observers.remove(observer.getClass().getName());
+ return observers.remove(new Observer(observer));
}
public void fireEvent(Object event) {
if (event == null) throw new IllegalArgumentException("event cannot be null");
- for (Observer observer : observers.values()) {
+ for (Observer observer : observers) {
try {
observer.invoke(event);
} catch (Throwable t) {
@@ -67,14 +67,6 @@ public class ObserverManager {
}
}
- public boolean hasObserver(final String value) {
- return observers.containsKey(value);
- }
-
- public void clear() {
- observers.clear();
- }
-
/**
* @version $Rev$ $Date$
*/