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/09 20:56:56 UTC
cvs commit: incubator-geronimo/modules/kernel/src/java/org/apache/geronimo/kernel/jmx InterfaceCallbackFilter.java InvokeMBean.java MBeanProxyFactory.java
dain 2003/11/09 11:56:56
Modified: modules/kernel/src/java/org/apache/geronimo/kernel/jmx
InterfaceCallbackFilter.java InvokeMBean.java
MBeanProxyFactory.java
Log:
Changed proxy to correctly select mbean operation invoke or attribute get/set based
on the MBeanInfo of the object
Revision Changes Path
1.2 +15 -6 incubator-geronimo/modules/kernel/src/java/org/apache/geronimo/kernel/jmx/InterfaceCallbackFilter.java
Index: InterfaceCallbackFilter.java
===================================================================
RCS file: /home/cvs/incubator-geronimo/modules/kernel/src/java/org/apache/geronimo/kernel/jmx/InterfaceCallbackFilter.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- InterfaceCallbackFilter.java 7 Nov 2003 17:32:11 -0000 1.1
+++ InterfaceCallbackFilter.java 9 Nov 2003 19:56:55 -0000 1.2
@@ -56,9 +56,11 @@
package org.apache.geronimo.kernel.jmx;
import java.lang.reflect.Method;
+import java.util.HashSet;
+import java.util.Set;
-import net.sf.cglib.proxy.SimpleFilter;
import net.sf.cglib.proxy.Callbacks;
+import net.sf.cglib.proxy.SimpleFilter;
/**
*
@@ -66,15 +68,22 @@
* @version $Revision$ $Date$
*/
public final class InterfaceCallbackFilter extends SimpleFilter {
- public InterfaceCallbackFilter() {
+ private final Set methodSet;
+ public InterfaceCallbackFilter(Class iface) {
super(Callbacks.INTERCEPT);
+ Method[] methods = iface.getMethods();
+ methodSet = new HashSet(methods.length);
+ for (int i = 0; i < methods.length; i++) {
+ Method method = methods[i];
+ methodSet.add(new MBeanOperationSignature(method));
+ }
}
public int accept(Method method) {
- if(method.getDeclaringClass() == Object.class) {
- return Callbacks.NO_OP;
+ if(methodSet.contains(new MBeanOperationSignature(method))) {
+ return Callbacks.INTERCEPT;
}
- return Callbacks.INTERCEPT;
+ return Callbacks.NO_OP;
}
}
1.3 +12 -3 incubator-geronimo/modules/kernel/src/java/org/apache/geronimo/kernel/jmx/InvokeMBean.java
Index: InvokeMBean.java
===================================================================
RCS file: /home/cvs/incubator-geronimo/modules/kernel/src/java/org/apache/geronimo/kernel/jmx/InvokeMBean.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- InvokeMBean.java 7 Nov 2003 18:06:02 -0000 1.2
+++ InvokeMBean.java 9 Nov 2003 19:56:55 -0000 1.3
@@ -70,7 +70,7 @@
*
* @version $Revision$ $Date$
*/
-public final class InvokeMBean {
+public class InvokeMBean {
private final String name;
private final String[] argumentTypes;
private final Class[] declaredExceptions;
@@ -78,6 +78,15 @@
private final boolean isGetter;
private final int expectedArguments;
+ protected InvokeMBean(String name, String[] argumentTypes, Class[] declaredExceptions, boolean attribute, boolean getter, int expectedArguments) {
+ this.name = name;
+ this.argumentTypes = argumentTypes;
+ this.declaredExceptions = declaredExceptions;
+ isAttribute = attribute;
+ isGetter = getter;
+ this.expectedArguments = expectedArguments;
+ }
+
public InvokeMBean(Method method, boolean isAttribute, boolean isGetter) {
this.isAttribute = isAttribute;
this.isGetter = isGetter;
@@ -101,7 +110,7 @@
} else {
name = method.getName();
}
-
+
// conver the parameters to a MBeanServer friendly string array
Class[] parameters = method.getParameterTypes();
argumentTypes = new String[parameters.length];
1.3 +2 -2 incubator-geronimo/modules/kernel/src/java/org/apache/geronimo/kernel/jmx/MBeanProxyFactory.java
Index: MBeanProxyFactory.java
===================================================================
RCS file: /home/cvs/incubator-geronimo/modules/kernel/src/java/org/apache/geronimo/kernel/jmx/MBeanProxyFactory.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- MBeanProxyFactory.java 7 Nov 2003 17:32:11 -0000 1.2
+++ MBeanProxyFactory.java 9 Nov 2003 19:56:55 -0000 1.3
@@ -95,7 +95,7 @@
Factory factory = Enhancer.create(
Object.class,
new Class[]{iface},
- new InterfaceCallbackFilter(),
+ new InterfaceCallbackFilter(iface),
new SimpleCallbacks());
// build the method table