You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by da...@apache.org on 2004/12/03 10:16:03 UTC
svn commit: r109658 - in geronimo/trunk/modules/kernel/src: java/org/apache/geronimo/gbean/jmx java/org/apache/geronimo/gbean/runtime java/org/apache/geronimo/kernel test/org/apache/geronimo/gbean/runtime
Author: dain
Date: Fri Dec 3 01:16:02 2004
New Revision: 109658
URL: http://svn.apache.org/viewcvs?view=rev&rev=109658
Log:
Notifications now go directly though the LifecycleMonitor
JMX notifications are still fired, but GBeans don't listen for JMX notifcations amymore
Added:
geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/runtime/LifecycleBroadcaster.java
Modified:
geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/jmx/GBeanMBean.java
geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/jmx/JMXLifecycleBroadcaster.java
geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/runtime/GBeanInstance.java
geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/runtime/GBeanInstanceState.java
geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/Kernel.java
geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/LifecycleMonitor.java
geronimo/trunk/modules/kernel/src/test/org/apache/geronimo/gbean/runtime/GBeanAttributeTest.java
Modified: geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/jmx/GBeanMBean.java
Url: http://svn.apache.org/viewcvs/geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/jmx/GBeanMBean.java?view=diff&rev=109658&p1=geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/jmx/GBeanMBean.java&r1=109657&p2=geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/jmx/GBeanMBean.java&r2=109658
==============================================================================
--- geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/jmx/GBeanMBean.java (original)
+++ geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/jmx/GBeanMBean.java Fri Dec 3 01:16:02 2004
@@ -205,7 +205,7 @@
}
gbeanData.setName(objectName);
- lifecycleBroadcaster = new JMXLifecycleBroadcaster();
+ lifecycleBroadcaster = new JMXLifecycleBroadcaster(objectName, kernel.getLifecycleMonitor().createLifecycleBroadcaster(objectName));
gbeanInstance = new GBeanInstance(kernel, gbeanData, lifecycleBroadcaster, classLoader);
mbeanInfo = GBeanJMXUtil.toMBeanInfo(gbeanInstance.getGBeanInfo());
}
Modified: geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/jmx/JMXLifecycleBroadcaster.java
Url: http://svn.apache.org/viewcvs/geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/jmx/JMXLifecycleBroadcaster.java?view=diff&rev=109658&p1=geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/jmx/JMXLifecycleBroadcaster.java&r1=109657&p2=geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/jmx/JMXLifecycleBroadcaster.java&r2=109658
==============================================================================
--- geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/jmx/JMXLifecycleBroadcaster.java (original)
+++ geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/jmx/JMXLifecycleBroadcaster.java Fri Dec 3 01:16:02 2004
@@ -16,48 +16,62 @@
*/
package org.apache.geronimo.gbean.jmx;
-import javax.management.ObjectName;
-import javax.management.NotificationBroadcasterSupport;
+import javax.management.ListenerNotFoundException;
import javax.management.Notification;
-import javax.management.NotificationListener;
+import javax.management.NotificationBroadcasterSupport;
import javax.management.NotificationFilter;
-import javax.management.ListenerNotFoundException;
+import javax.management.NotificationListener;
+import javax.management.ObjectName;
-import org.apache.geronimo.kernel.LifecycleListener;
+import org.apache.geronimo.gbean.runtime.LifecycleBroadcaster;
import org.apache.geronimo.kernel.management.NotificationType;
/**
* @version $Rev$ $Date$
*/
-public class JMXLifecycleBroadcaster implements LifecycleListener {
+public class JMXLifecycleBroadcaster implements LifecycleBroadcaster {
private final NotificationBroadcasterSupport notificationBroadcaster = new NotificationBroadcasterSupport();
+ private final ObjectName objectName;
+ private final LifecycleBroadcaster lifecycleBroadcaster;
private long sequence;
- public void loaded(ObjectName objectName) {
+ public JMXLifecycleBroadcaster(ObjectName objectName, LifecycleBroadcaster lifecycleBroadcaster) {
+ this.objectName = objectName;
+ this.lifecycleBroadcaster = lifecycleBroadcaster;
+ }
+
+ public void fireLoadedEvent() {
+ lifecycleBroadcaster.fireLoadedEvent();
notificationBroadcaster.sendNotification(new Notification(NotificationType.OBJECT_CREATED, objectName, nextSequence()));
}
- public void starting(ObjectName objectName) {
+ public void fireStartingEvent() {
+ lifecycleBroadcaster.fireStartingEvent();
notificationBroadcaster.sendNotification(new Notification(NotificationType.STATE_STARTING, objectName, nextSequence()));
}
- public void running(ObjectName objectName) {
+ public void fireRunningEvent() {
+ lifecycleBroadcaster.fireRunningEvent();
notificationBroadcaster.sendNotification(new Notification(NotificationType.STATE_RUNNING, objectName, nextSequence()));
}
- public void stopping(ObjectName objectName) {
+ public void fireStoppingEvent() {
+ lifecycleBroadcaster.fireStoppingEvent();
notificationBroadcaster.sendNotification(new Notification(NotificationType.STATE_STOPPING, objectName, nextSequence()));
}
- public void stopped(ObjectName objectName) {
+ public void fireStoppedEvent() {
+ lifecycleBroadcaster.fireStoppedEvent();
notificationBroadcaster.sendNotification(new Notification(NotificationType.STATE_STOPPED, objectName, nextSequence()));
}
- public void failed(ObjectName objectName) {
+ public void fireFailedEvent() {
+ lifecycleBroadcaster.fireFailedEvent();
notificationBroadcaster.sendNotification(new Notification(NotificationType.STATE_FAILED, objectName, nextSequence()));
}
- public void unloaded(ObjectName objectName) {
+ public void fireUnloadedEvent() {
+ lifecycleBroadcaster.fireUnloadedEvent();
notificationBroadcaster.sendNotification(new Notification(NotificationType.OBJECT_DELETED, objectName, nextSequence()));
}
Modified: geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/runtime/GBeanInstance.java
Url: http://svn.apache.org/viewcvs/geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/runtime/GBeanInstance.java?view=diff&rev=109658&p1=geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/runtime/GBeanInstance.java&r1=109657&p2=geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/runtime/GBeanInstance.java&r2=109658
==============================================================================
--- geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/runtime/GBeanInstance.java (original)
+++ geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/runtime/GBeanInstance.java Fri Dec 3 01:16:02 2004
@@ -43,7 +43,6 @@
import org.apache.geronimo.gbean.InvalidConfigurationException;
import org.apache.geronimo.gbean.WaitingException;
import org.apache.geronimo.kernel.Kernel;
-import org.apache.geronimo.kernel.LifecycleListener;
import org.apache.geronimo.kernel.NoSuchAttributeException;
import org.apache.geronimo.kernel.NoSuchOperationException;
import org.apache.geronimo.kernel.management.EventProvider;
@@ -99,7 +98,7 @@
/**
* The single listener to which we broadcast lifecycle change events.
*/
- private final LifecycleListener lifecycleBroadcaster;
+ private final LifecycleBroadcaster lifecycleBroadcaster;
/**
* The lifecycle controller given to the instance
@@ -190,7 +189,7 @@
* @throws org.apache.geronimo.gbean.InvalidConfigurationException if the gbeanInfo is inconsistent with the actual java classes, such as
* mismatched attribute types or the intial data can not be set
*/
- public GBeanInstance(Kernel kernel, GBeanData gbeanData, LifecycleListener lifecycleBroadcaster, ClassLoader classLoader) throws InvalidConfigurationException {
+ public GBeanInstance(Kernel kernel, GBeanData gbeanData, LifecycleBroadcaster lifecycleBroadcaster, ClassLoader classLoader) throws InvalidConfigurationException {
this.kernel = kernel;
this.objectName = gbeanData.getName();
this.lifecycleBroadcaster = lifecycleBroadcaster;
@@ -297,7 +296,7 @@
for (int i = 0; i < references.length; i++) {
references[i].online(this.kernel);
}
- lifecycleBroadcaster.loaded(objectName);
+ lifecycleBroadcaster.fireLoadedEvent();
}
public void destroy() {
@@ -308,7 +307,7 @@
destroyed = true;
}
- lifecycleBroadcaster.unloaded(objectName);
+ lifecycleBroadcaster.fireUnloadedEvent();
// just to be sure, stop all the references again
for (int i = 0; i < references.length; i++) {
Modified: geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/runtime/GBeanInstanceState.java
Url: http://svn.apache.org/viewcvs/geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/runtime/GBeanInstanceState.java?view=diff&rev=109658&p1=geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/runtime/GBeanInstanceState.java&r1=109657&p2=geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/runtime/GBeanInstanceState.java&r2=109658
==============================================================================
--- geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/runtime/GBeanInstanceState.java (original)
+++ geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/runtime/GBeanInstanceState.java Fri Dec 3 01:16:02 2004
@@ -62,7 +62,7 @@
/**
* The broadcaster of lifecycle events
*/
- private final LifecycleListener lifecycleBroadcaster;
+ private final LifecycleBroadcaster lifecycleBroadcaster;
/**
* The listener for the of the object blocking the start of this gbean.
@@ -74,7 +74,7 @@
// objects check if each other are in one state or another (i.e., classic A calls B while B calls A)
private volatile State state = State.STOPPED;
- GBeanInstanceState(Kernel kernel, ObjectName objectName, GBeanLifecycle gbeanLifecycle, LifecycleListener lifecycleBroadcaster) {
+ GBeanInstanceState(Kernel kernel, ObjectName objectName, GBeanLifecycle gbeanLifecycle, LifecycleBroadcaster lifecycleBroadcaster) {
this.kernel = kernel;
this.dependencyManager = kernel.getDependencyManager();
this.objectName = objectName;
@@ -110,7 +110,7 @@
// only fire a notification if we are not already starting
if (state != State.STARTING) {
- lifecycleBroadcaster.starting(objectName);
+ lifecycleBroadcaster.fireStartingEvent();
}
attemptFullStart();
@@ -188,7 +188,7 @@
// only fire a notification if we are not already stopping
if (state != State.STOPPING) {
- lifecycleBroadcaster.stopping(objectName);
+ lifecycleBroadcaster.fireStoppingEvent();
}
// Don't try to stop dependents from within a synchronized block... this should reduce deadlocks
@@ -231,7 +231,7 @@
doSafeFail();
setStateInstance(State.FAILED);
}
- lifecycleBroadcaster.failed(objectName);
+ lifecycleBroadcaster.fireFailedEvent();
}
/**
@@ -523,23 +523,23 @@
assert !Thread.holdsLock(this): "This method cannot be called while holding a synchronized lock on this";
switch (state.toInt()) {
case State.STOPPED_INDEX:
- lifecycleBroadcaster.stopped(objectName);
+ lifecycleBroadcaster.fireStoppedEvent();
break;
case State.STARTING_INDEX:
- lifecycleBroadcaster.starting(objectName);
+ lifecycleBroadcaster.fireStartingEvent();
break;
case State.RUNNING_INDEX:
- lifecycleBroadcaster.running(objectName);
+ lifecycleBroadcaster.fireRunningEvent();
break;
case State.STOPPING_INDEX:
- lifecycleBroadcaster.stopping(objectName);
+ lifecycleBroadcaster.fireStoppingEvent();
break;
case State.FAILED_INDEX:
- lifecycleBroadcaster.failed(objectName);
+ lifecycleBroadcaster.fireFailedEvent();
break;
}
}
Added: geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/runtime/LifecycleBroadcaster.java
Url: http://svn.apache.org/viewcvs/geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/runtime/LifecycleBroadcaster.java?view=auto&rev=109658
==============================================================================
--- (empty file)
+++ geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/runtime/LifecycleBroadcaster.java Fri Dec 3 01:16:02 2004
@@ -0,0 +1,32 @@
+/**
+ *
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.geronimo.gbean.runtime;
+
+
+
+/**
+ * @version $Rev$ $Date$
+ */
+public interface LifecycleBroadcaster {
+ public void fireLoadedEvent();
+ public void fireStartingEvent();
+ public void fireRunningEvent();
+ public void fireStoppingEvent();
+ public void fireStoppedEvent();
+ public void fireFailedEvent();
+ public void fireUnloadedEvent();
+}
Modified: geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/Kernel.java
Url: http://svn.apache.org/viewcvs/geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/Kernel.java?view=diff&rev=109658&p1=geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/Kernel.java&r1=109657&p2=geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/Kernel.java&r2=109658
==============================================================================
--- geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/Kernel.java (original)
+++ geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/Kernel.java Fri Dec 3 01:16:02 2004
@@ -24,13 +24,14 @@
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
-import java.util.Iterator;
-import java.util.HashSet;
import javax.management.Attribute;
+import javax.management.AttributeNotFoundException;
import javax.management.InstanceAlreadyExistsException;
import javax.management.InstanceNotFoundException;
import javax.management.JMException;
@@ -38,17 +39,15 @@
import javax.management.MBeanServer;
import javax.management.MBeanServerFactory;
import javax.management.MalformedObjectNameException;
-import javax.management.NotificationBroadcasterSupport;
import javax.management.ObjectName;
-import javax.management.AttributeNotFoundException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.geronimo.gbean.GBeanData;
import org.apache.geronimo.gbean.GBeanInfo;
-import org.apache.geronimo.gbean.runtime.GBeanInstance;
import org.apache.geronimo.gbean.jmx.GBeanMBean;
import org.apache.geronimo.gbean.jmx.JMXLifecycleBroadcaster;
+import org.apache.geronimo.gbean.runtime.GBeanInstance;
import org.apache.geronimo.kernel.config.Configuration;
import org.apache.geronimo.kernel.config.ConfigurationManager;
import org.apache.geronimo.kernel.config.ConfigurationManagerImpl;
@@ -78,7 +77,7 @@
*
* @version $Rev$ $Date$
*/
-public class Kernel extends NotificationBroadcasterSupport implements KernelMBean {
+public class Kernel implements KernelMBean {
/**
* The JMX name used by a Kernel to register itself when it boots.
@@ -559,7 +558,7 @@
mbServer = MBeanServerFactory.createMBeanServer(domainName);
mbServer.registerMBean(this, KERNEL);
- lifecycleMonitor = new LifecycleMonitor(mbServer);
+ lifecycleMonitor = new LifecycleMonitor(this);
dependencyManager = new DependencyManager(lifecycleMonitor);
proxyManager = new ProxyManager(this);
@@ -568,7 +567,7 @@
configurationData.setReferencePatterns("Stores", Collections.singleton(CONFIGURATION_STORE_PATTERN));
// create the connfiguration manager instance
- JMXLifecycleBroadcaster lifecycleBroadcaster = new JMXLifecycleBroadcaster();
+ JMXLifecycleBroadcaster lifecycleBroadcaster = new JMXLifecycleBroadcaster(CONFIGURATION_MANAGER_NAME, lifecycleMonitor.createLifecycleBroadcaster(CONFIGURATION_MANAGER_NAME));
configurationManagerInstance = new GBeanInstance(this, configurationData, lifecycleBroadcaster, getClass().getClassLoader());
configurationManagerInstance.start();
configurationManager = (ConfigurationManager) configurationManagerInstance.getTarget();
Modified: geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/LifecycleMonitor.java
Url: http://svn.apache.org/viewcvs/geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/LifecycleMonitor.java?view=diff&rev=109658&p1=geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/LifecycleMonitor.java&r1=109657&p2=geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/LifecycleMonitor.java&r2=109658
==============================================================================
--- geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/LifecycleMonitor.java (original)
+++ geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/LifecycleMonitor.java Fri Dec 3 01:16:02 2004
@@ -17,34 +17,25 @@
package org.apache.geronimo.kernel;
+import java.util.Collections;
+import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
-import java.util.Set;
import java.util.Map;
-import java.util.Collections;
-import java.util.HashMap;
-import javax.management.InstanceNotFoundException;
-import javax.management.MBeanServer;
-import javax.management.MBeanServerNotification;
-import javax.management.Notification;
-import javax.management.NotificationFilterSupport;
-import javax.management.NotificationListener;
+import java.util.Set;
import javax.management.ObjectName;
-import javax.management.NotificationBroadcaster;
-import javax.management.NotificationFilter;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.geronimo.kernel.jmx.JMXUtil;
-import org.apache.geronimo.kernel.management.NotificationType;
+import org.apache.geronimo.gbean.runtime.LifecycleBroadcaster;
/**
* @version $Rev: 71492 $ $Date: 2004-11-14 21:31:50 -0800 (Sun, 14 Nov 2004) $
*/
-public class LifecycleMonitor implements NotificationListener {
+public class LifecycleMonitor {
private static final Log log = LogFactory.getLog(LifecycleMonitor.class);
- private final MBeanServer server;
+ private final Kernel kernel;
// todo we should only hold weak references to the listeners
private final Map boundListeners = new HashMap();
@@ -53,58 +44,17 @@
/**
* @deprecated don't use this yet... it may change or go away
*/
- public LifecycleMonitor(MBeanServer server) {
- this.server = server;
-
- // listen for all mbean registration events
- try {
- NotificationFilterSupport mbeanServerFilter = new NotificationFilterSupport();
- mbeanServerFilter.enableType(MBeanServerNotification.REGISTRATION_NOTIFICATION);
- mbeanServerFilter.enableType(MBeanServerNotification.UNREGISTRATION_NOTIFICATION);
- server.addNotificationListener(JMXUtil.DELEGATE_NAME, this, mbeanServerFilter, null);
- } catch (Exception e) {
- // this will never happen... all of the above is well formed
- throw new AssertionError(e);
- }
+ public LifecycleMonitor(Kernel kernel) {
+ this.kernel = kernel;
// register for state change notifications with all mbeans that match the target patterns
- Set names = server.queryNames(null, null);
+ Set names = this.kernel.listGBeans((ObjectName)null);
for (Iterator objectNameIterator = names.iterator(); objectNameIterator.hasNext();) {
addSource((ObjectName) objectNameIterator.next());
}
-
- for (Iterator iterator = boundListeners.keySet().iterator(); iterator.hasNext();) {
- ObjectName source = (ObjectName) iterator.next();
- try {
- if (server.isInstanceOf(source, NotificationBroadcaster.class.getName())) {
- server.addNotificationListener(source, this, STATE_CHANGE_FILTER, null);
- }
- } catch (InstanceNotFoundException e) {
- // the instance died before we could get going... not a big deal
- break;
- } catch (Throwable e) {
- log.warn("Could not add state change listener to: " + source + " on behalf of objectName", e);
- }
- }
}
public synchronized void destroy() {
- try {
- server.removeNotificationListener(JMXUtil.DELEGATE_NAME, this);
- } catch (Exception ignore) {
- // don't care... we tried
- }
-
- // unregister for all notifications
- for (Iterator iterator = boundListeners.keySet().iterator(); iterator.hasNext();) {
- ObjectName target = (ObjectName) iterator.next();
- try {
- server.removeNotificationListener(target, this, STATE_CHANGE_FILTER, null);
- } catch (Exception ignore) {
- // don't care... we tried
- }
- }
-
boundListeners.clear();
listenerPatterns.clear();
}
@@ -257,61 +207,48 @@
}
}
- public void handleNotification(Notification notification, Object o) {
- String type = notification.getType();
+ /**
+ * @deprecated is this for internal use by the GBeanInstance and will be remove later
+ */
+ public LifecycleBroadcaster createLifecycleBroadcaster(ObjectName objectName) {
+ return new RawLifecycleBroadcaster(objectName);
+ }
- if (MBeanServerNotification.REGISTRATION_NOTIFICATION.equals(type)) {
- ObjectName source = ((MBeanServerNotification) notification).getMBeanName();
- if (!boundListeners.containsKey(source)) {
- // register for state change notifications
- try {
- server.addNotificationListener(source, this, STATE_CHANGE_FILTER, null);
- } catch (InstanceNotFoundException e) {
- // the instance died before we could get going... not a big deal
- return;
- }
+ private class RawLifecycleBroadcaster implements LifecycleBroadcaster {
+ private final ObjectName objectName;
- addSource(source);
- fireLoadedEvent(source);
- }
- } else if (MBeanServerNotification.UNREGISTRATION_NOTIFICATION.equals(type)) {
- ObjectName source = ((MBeanServerNotification) notification).getMBeanName();
- fireUnloadedEvent(source);
- removeSource(source);
- } else {
- final ObjectName source = (ObjectName) notification.getSource();
- if (NotificationType.STATE_STARTING.equals(type)) {
- fireStartingEvent(source);
- } else if (NotificationType.STATE_RUNNING.equals(type)) {
- fireRunningEvent(source);
- } else if (NotificationType.STATE_STOPPING.equals(type)) {
- fireStoppingEvent(source);
- } else if (NotificationType.STATE_STOPPED.equals(type)) {
- fireStoppedEvent(source);
- } else if (NotificationType.STATE_FAILED.equals(type)) {
- fireFailedEvent(source);
- }
+ public RawLifecycleBroadcaster(ObjectName objectName) {
+ this.objectName = objectName;
}
- }
- /**
- * A notification filter which only lets all J2EE state change notifications pass.
- * Specifically this is STATE_STARTING, STATE_RUNNING, STATE_STOPPING, STATE_STOPPED
- * and STATE_FAILED.
- */
- private static final NotificationFilter STATE_CHANGE_FILTER = new J2EEStateChangeFilter();
+ public void fireLoadedEvent() {
+ addSource(objectName);
+ LifecycleMonitor.this.fireLoadedEvent(objectName);
+ }
+
+ public void fireStartingEvent() {
+ LifecycleMonitor.this.fireStartingEvent(objectName);
+ }
+
+ public void fireRunningEvent() {
+ LifecycleMonitor.this.fireRunningEvent(objectName);
+ }
+
+ public void fireStoppingEvent() {
+ LifecycleMonitor.this.fireStoppingEvent(objectName);
+ }
+
+ public void fireStoppedEvent() {
+ LifecycleMonitor.this.fireStoppedEvent(objectName);
+ }
- private static final class J2EEStateChangeFilter implements NotificationFilter {
- private J2EEStateChangeFilter() {
+ public void fireFailedEvent() {
+ LifecycleMonitor.this.fireFailedEvent(objectName);
}
- public boolean isNotificationEnabled(Notification notification) {
- String type = notification.getType();
- return NotificationType.STATE_STARTING.equals(type) ||
- NotificationType.STATE_RUNNING.equals(type) ||
- NotificationType.STATE_STOPPING.equals(type) ||
- NotificationType.STATE_STOPPED.equals(type) ||
- NotificationType.STATE_FAILED.equals(type);
+ public void fireUnloadedEvent() {
+ LifecycleMonitor.this.fireUnloadedEvent(objectName);
+ removeSource(objectName);
}
}
}
Modified: geronimo/trunk/modules/kernel/src/test/org/apache/geronimo/gbean/runtime/GBeanAttributeTest.java
Url: http://svn.apache.org/viewcvs/geronimo/trunk/modules/kernel/src/test/org/apache/geronimo/gbean/runtime/GBeanAttributeTest.java?view=diff&rev=109658&p1=geronimo/trunk/modules/kernel/src/test/org/apache/geronimo/gbean/runtime/GBeanAttributeTest.java&r1=109657&p2=geronimo/trunk/modules/kernel/src/test/org/apache/geronimo/gbean/runtime/GBeanAttributeTest.java&r2=109658
==============================================================================
--- geronimo/trunk/modules/kernel/src/test/org/apache/geronimo/gbean/runtime/GBeanAttributeTest.java (original)
+++ geronimo/trunk/modules/kernel/src/test/org/apache/geronimo/gbean/runtime/GBeanAttributeTest.java Fri Dec 3 01:16:02 2004
@@ -23,7 +23,6 @@
import org.apache.geronimo.gbean.GBeanData;
import org.apache.geronimo.gbean.InvalidConfigurationException;
import org.apache.geronimo.kernel.Kernel;
-import org.apache.geronimo.kernel.LifecycleAdapter;
import org.apache.geronimo.kernel.MockDynamicGBean;
import org.apache.geronimo.kernel.MockGBean;
@@ -351,11 +350,11 @@
gbeanInstance = new GBeanInstance(kernel,
new GBeanData(new ObjectName("test:MockGBean=normal"), MockGBean.getGBeanInfo()),
- new LifecycleAdapter(),
+ new MyLifecycleBroadcaster(),
MockGBean.class.getClassLoader());
dynamicGBeanInstance = new GBeanInstance(kernel,
new GBeanData(new ObjectName("test:MockGBean=dynamic"), MockDynamicGBean.getGBeanInfo()),
- new LifecycleAdapter(),
+ new MyLifecycleBroadcaster(),
MockGBean.class.getClassLoader());
getInvoker = new MethodInvoker() {
@@ -376,5 +375,28 @@
protected void tearDown() throws Exception {
kernel.shutdown();
gbeanInstance = null;
+ }
+
+ private static class MyLifecycleBroadcaster implements LifecycleBroadcaster {
+ public void fireLoadedEvent() {
+ }
+
+ public void fireStartingEvent() {
+ }
+
+ public void fireRunningEvent() {
+ }
+
+ public void fireStoppingEvent() {
+ }
+
+ public void fireStoppedEvent() {
+ }
+
+ public void fireFailedEvent() {
+ }
+
+ public void fireUnloadedEvent() {
+ }
}
}