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 2003/11/06 20:58:46 UTC
cvs commit: incubator-geronimo/modules/kernel/src/java/org/apache/geronimo/kernel/service GeronimoMBeanInfo.java
dain 2003/11/06 11:58:45
Modified: modules/kernel/src/java/org/apache/geronimo/kernel/service
GeronimoMBeanInfo.java
Log:
Added Endpoint support.
Changed java.lang.reflect.Method to cglib FastMethod.
Revision Changes Path
1.3 +48 -4 incubator-geronimo/modules/kernel/src/java/org/apache/geronimo/kernel/service/GeronimoMBeanInfo.java
Index: GeronimoMBeanInfo.java
===================================================================
RCS file: /home/cvs/incubator-geronimo/modules/kernel/src/java/org/apache/geronimo/kernel/service/GeronimoMBeanInfo.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- GeronimoMBeanInfo.java 24 Oct 2003 22:45:01 -0000 1.2
+++ GeronimoMBeanInfo.java 6 Nov 2003 19:58:45 -0000 1.3
@@ -70,6 +70,8 @@
import org.apache.geronimo.kernel.service.ParserUtil;
import org.apache.geronimo.kernel.service.GeronimoAttributeInfo;
+import net.sf.cglib.reflect.FastClass;
+
/**
* Describes a GeronimoMBean. This extension allows the properties to be mutable during setup,
* and once the MBean is deployed an imutable copy of will be made. This class also adds support for multi target
@@ -79,9 +81,14 @@
*/
public final class GeronimoMBeanInfo extends MBeanInfo {
/**
- * The key for the default target.
+ * The key for the default target
+ */
+ final static String DEFAULT_TARGET_NAME = "default";
+
+ /**
+ * The key for the geronimo mbean
*/
- private final static String DEFAULT_TARGET_NAME = "default";
+ final static String GERONIMO_MBEAN_TARGET_NAME = "___Geronimo___MBean___";
private static final MBeanConstructorInfo[] NO_CONSTRUCTORS = new MBeanConstructorInfo[0];
private final boolean immutable;
@@ -92,7 +99,9 @@
private final Set attributes = new HashSet();
private final Set operations = new HashSet();
private final Set notifications = new HashSet();
+ private final Set endpoints = new HashSet();
final Map targets = new HashMap();
+ final Map targetFastClasses = new HashMap();
public static final String ALWAYS = "always";
public static final String NEVER = "never";
@@ -129,8 +138,11 @@
for (Iterator i = targetClasses.entrySet().iterator(); i.hasNext();) {
Map.Entry entry = (Map.Entry) i.next();
className = (String) entry.getValue();
- Object target = ParserUtil.loadClass(className).newInstance();
+ Class clazz = ParserUtil.loadClass(className);
+ Object target = clazz.newInstance();
targets.put(entry.getKey(), target);
+ FastClass fastClass = FastClass.create(clazz);
+ targetFastClasses.put(entry.getKey(), fastClass);
}
} catch (ClassNotFoundException e) {
throw new IllegalArgumentException("Target class could not be loaded: className=" + className);
@@ -161,6 +173,12 @@
GeronimoNotificationInfo notificationInfo = (GeronimoNotificationInfo) iterator.next();
notifications.add(new GeronimoNotificationInfo(notificationInfo, this));
}
+
+
+ for (Iterator iterator = source.endpoints.iterator(); iterator.hasNext();) {
+ GeronimoMBeanEndpoint endpoint = (GeronimoMBeanEndpoint) iterator.next();
+ endpoints.add(new GeronimoMBeanEndpoint(endpoint, this));
+ }
}
public String getClassName() {
@@ -201,6 +219,17 @@
return targets.get(name);
}
+ FastClass getTargetFastClass() {
+ return (FastClass)targetFastClasses.get(DEFAULT_TARGET_NAME);
+ }
+
+ FastClass getTargetFastClass(String name) {
+ if(GERONIMO_MBEAN_TARGET_NAME.equals(name)) {
+ return GeronimoMBean.fastClass;
+ }
+ return (FastClass)targetFastClasses.get(name);
+ }
+
public String getName() {
return name;
}
@@ -271,6 +300,21 @@
throw new IllegalStateException("Data is no longer mutable");
}
notifications.add(notificationInfo);
+ }
+
+ public Set getEndpointsSet() {
+ return Collections.unmodifiableSet(endpoints);
+ }
+
+ public GeronimoMBeanEndpoint[] getEndpoints() {
+ return (GeronimoMBeanEndpoint[]) endpoints.toArray(new GeronimoMBeanEndpoint[endpoints.size()]);
+ }
+
+ public void addEndpoint(GeronimoMBeanEndpoint endpoint) {
+ if (immutable) {
+ throw new IllegalStateException("Data is no longer mutable");
+ }
+ endpoints.add(endpoint);
}
public int hashCode() {