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/27 05:56:33 UTC

svn commit: r598516 - /mina/trunk/integration-jmx/src/main/java/org/apache/mina/integration/jmx/IoServiceMBean.java

Author: trustin
Date: Mon Nov 26 20:56:32 2007
New Revision: 598516

URL: http://svn.apache.org/viewvc?rev=598516&view=rev
Log:
Added findAndProcessSessions operation to IoServiceMBean

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

Modified: mina/trunk/integration-jmx/src/main/java/org/apache/mina/integration/jmx/IoServiceMBean.java
URL: http://svn.apache.org/viewvc/mina/trunk/integration-jmx/src/main/java/org/apache/mina/integration/jmx/IoServiceMBean.java?rev=598516&r1=598515&r2=598516&view=diff
==============================================================================
--- mina/trunk/integration-jmx/src/main/java/org/apache/mina/integration/jmx/IoServiceMBean.java (original)
+++ mina/trunk/integration-jmx/src/main/java/org/apache/mina/integration/jmx/IoServiceMBean.java Mon Nov 26 20:56:32 2007
@@ -26,6 +26,7 @@
 import javax.management.ReflectionException;
 import javax.management.modelmbean.ModelMBeanOperationInfo;
 
+import ognl.Ognl;
 import ognl.OgnlException;
 
 import org.apache.mina.common.IoService;
@@ -92,6 +93,26 @@
             }
         }
         
+        if (name.equals("findAndProcessSessions")) {
+            try {
+                IoSessionFinder finder = new IoSessionFinder((String) params[0]);
+                String command = (String) params[1];
+                Object expr = Ognl.parseExpression(command);
+                Set<IoSession> matches = finder.find(getSource().getManagedSessions());
+                
+                for (IoSession s: matches) {
+                    try {
+                        Ognl.getValue(expr, s);
+                    } catch (Exception e) {
+                        logger.warn("Failed to execute '" + command + "' for: " + s, e);
+                    }
+                }
+                return convertReturnValue(matches);
+            } catch (OgnlException e) {
+                throwMBeanException(e);
+            }
+        }
+        
         return super.invoke(name, params, signature);
     }
 
@@ -108,6 +129,14 @@
                 new MBeanParameterInfo[] {
                         new MBeanParameterInfo(
                                 "ognlQuery", String.class.getName(), "a boolean OGNL expression")
+                }, Set.class.getName(), ModelMBeanOperationInfo.ACTION_INFO));
+        operations.add(new ModelMBeanOperationInfo(
+                "findAndProcessSessions", "findAndProcessSessions",
+                new MBeanParameterInfo[] {
+                        new MBeanParameterInfo(
+                                "ognlQuery", String.class.getName(), "a boolean OGNL expression"),
+                        new MBeanParameterInfo(
+                                "ognlCommand", String.class.getName(), "an OGNL expression that modifies the state of the sessions in the match result")
                 }, Set.class.getName(), ModelMBeanOperationInfo.ACTION_INFO));
     }