You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by tr...@apache.org on 2007/11/24 07:06:27 UTC

svn commit: r597811 - /mina/trunk/integration-jmx/src/main/java/org/apache/mina/integration/jmx/DefaultModelMBean.java

Author: trustin
Date: Fri Nov 23 22:06:26 2007
New Revision: 597811

URL: http://svn.apache.org/viewvc?rev=597811&view=rev
Log:
Added minimal support for operations

Modified:
    mina/trunk/integration-jmx/src/main/java/org/apache/mina/integration/jmx/DefaultModelMBean.java

Modified: mina/trunk/integration-jmx/src/main/java/org/apache/mina/integration/jmx/DefaultModelMBean.java
URL: http://svn.apache.org/viewvc/mina/trunk/integration-jmx/src/main/java/org/apache/mina/integration/jmx/DefaultModelMBean.java?rev=597811&r1=597810&r2=597811&view=diff
==============================================================================
--- mina/trunk/integration-jmx/src/main/java/org/apache/mina/integration/jmx/DefaultModelMBean.java (original)
+++ mina/trunk/integration-jmx/src/main/java/org/apache/mina/integration/jmx/DefaultModelMBean.java Fri Nov 23 22:06:26 2007
@@ -19,6 +19,7 @@
 import java.beans.PropertyDescriptor;
 import java.beans.PropertyEditor;
 import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
 import java.net.SocketAddress;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -57,6 +58,7 @@
 import org.apache.commons.beanutils.PropertyUtils;
 import org.apache.mina.common.AttributeKey;
 import org.apache.mina.common.DefaultIoFilterChainBuilder;
+import org.apache.mina.common.IoFilter;
 import org.apache.mina.common.IoFilterChain;
 import org.apache.mina.common.IoFilterChainBuilder;
 import org.apache.mina.common.IoHandler;
@@ -313,6 +315,7 @@
         List<ModelMBeanOperationInfo> operations = new ArrayList<ModelMBeanOperationInfo>();
         
         addAttributes(attributes, source, source.getClass(), "");
+        addOperations(operations, source);
         
         return new ModelMBeanInfoSupport(
                 className, description,
@@ -398,6 +401,44 @@
             }
         }
         return false;
+    }
+    
+    private void addOperations(List<ModelMBeanOperationInfo> operations, Object object) {
+        for (Method m: object.getClass().getMethods()) {
+            String mname = m.getName();
+            // Ignore getters and setters.
+            if (mname.startsWith("is") || mname.startsWith("get") || mname.startsWith("set")) {
+                continue;
+            }
+            
+            // Ignore Object methods.
+            if (mname.matches("(wait|notify|notifyAll|toString|equals|compareTo|hashCode)")) {
+                continue;
+            }
+            
+            // Ignore some IoServide methods.
+            if (object instanceof IoService &&
+                mname.matches("(newSession|broadcast|(add|remove)Listener)")) {
+                continue;
+            }
+
+            // Ignore some IoSession methods.
+            if (object instanceof IoSession &&
+                mname.matches("(write|read|(remove|replace|contains)Attribute)")) {
+                continue;
+            }
+            
+            // Ignore some IoFilter methods.
+            if (object instanceof IoFilter &&
+                    mname.matches("(init|destroy|on(Pre|Post)(Add|Remove)|" +
+                    		"session(Created|Opened|Idle|Closed)|" +
+                    		"exceptionCaught|message(Received|Sent)|" +
+                    		"filter(Close|Write|SetTrafficMask))")) {
+                continue;
+            }
+            
+            operations.add(new ModelMBeanOperationInfo(m.getName(), m));
+        }
     }
     
     private boolean isWritable(Class<?> type, String pname) {