[jboss-cvs] JBossAS SVN: r81662 - trunk/varia/src/main/org/jboss/jmx/adaptor/html.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Nov 26 15:42:53 EST 2008


Author: anil.saldhana at jboss.com
Date: 2008-11-26 15:42:52 -0500 (Wed, 26 Nov 2008)
New Revision: 81662

Modified:
   trunk/varia/src/main/org/jboss/jmx/adaptor/html/HtmlAdaptorServlet.java
Log:
JBAS-4154: add priv ops

Modified: trunk/varia/src/main/org/jboss/jmx/adaptor/html/HtmlAdaptorServlet.java
===================================================================
--- trunk/varia/src/main/org/jboss/jmx/adaptor/html/HtmlAdaptorServlet.java	2008-11-26 20:26:19 UTC (rev 81661)
+++ trunk/varia/src/main/org/jboss/jmx/adaptor/html/HtmlAdaptorServlet.java	2008-11-26 20:42:52 UTC (rev 81662)
@@ -23,13 +23,15 @@
 
 import java.io.IOException;
 import java.net.URLDecoder;
-import java.net.URLEncoder;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
 import java.util.ArrayList;
 import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.Iterator;
+
 import javax.management.AttributeList;
-import javax.management.JMException;
 import javax.servlet.RequestDispatcher;
 import javax.servlet.ServletConfig;
 import javax.servlet.ServletException;
@@ -38,10 +40,10 @@
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
 
-import org.jboss.logging.Logger;
 import org.jboss.jmx.adaptor.control.OpResultInfo;
 import org.jboss.jmx.adaptor.control.Server;
 import org.jboss.jmx.adaptor.model.MBeanData;
+import org.jboss.logging.Logger;
 
 /** The HTML adaptor controller servlet.
  *
@@ -190,16 +192,16 @@
       Iterator mbeans;
       try
       {
-         mbeans = Server.getDomainData(filter);
+         mbeans = getDomainData(filter);
       }
-      catch (JMException e)
+      catch (Exception e)
       {
          request.setAttribute("filterError", e.getMessage());
          try
          {
-            mbeans = Server.getDomainData("");
+            mbeans = getDomainData("");
          }
-         catch (JMException e1)
+         catch (Exception e1)
          {
             throw new ServletException("Failed to get MBeans", e);
          }
@@ -219,12 +221,12 @@
       log.trace("inspectMBean, name="+name);
       try
       {
-         MBeanData data = Server.getMBeanData(name);
+         MBeanData data = getMBeanData(name);
          request.setAttribute("mbeanData", data);
          RequestDispatcher rd = this.getServletContext().getRequestDispatcher("/inspectMBean.jsp");
          rd.forward(request, response);
       }
-      catch(JMException e)
+      catch(Exception e)
       {
          throw new ServletException("Failed to get MBean data", e);
       }
@@ -235,10 +237,10 @@
    private void updateAttributes(HttpServletRequest request, HttpServletResponse response)
       throws ServletException, IOException
    {
-      String name = request.getParameter("name");
+      final String name = request.getParameter("name");
       log.trace("updateAttributes, name="+name);
       Enumeration paramNames = request.getParameterNames();
-      HashMap attributes = new HashMap();
+      final HashMap attributes = new HashMap();
       while( paramNames.hasMoreElements() )
       {
          String param = (String) paramNames.nextElement();
@@ -254,13 +256,13 @@
 
       try
       {
-         AttributeList newAttributes = Server.setAttributes(name, attributes);
-         MBeanData data = Server.getMBeanData(name);
+         AttributeList newAttributes = setAttributes(name, attributes);
+         MBeanData data = getMBeanData(name);
          request.setAttribute("mbeanData", data);
          RequestDispatcher rd = this.getServletContext().getRequestDispatcher("/inspectMBean.jsp");
          rd.forward(request, response);
       }
-      catch(JMException e)
+      catch(Exception e)
       {
          throw new ServletException("Failed to update attributes", e);
       }
@@ -271,22 +273,23 @@
    private void invokeOp(HttpServletRequest request, HttpServletResponse response)
       throws ServletException, IOException
    {
-      String name = request.getParameter("name");
-      name = URLDecoder.decode(name, "UTF-8");
+      String reqname = request.getParameter("name");
+      final String name = URLDecoder.decode(reqname, "UTF-8");
       log.trace("invokeOp, name="+name);
-      String[] args = getArgs(request);
+      final String[] args = getArgs(request);
       String methodIndex = request.getParameter("methodIndex");
       if( methodIndex == null || methodIndex.length() == 0 )
          throw new ServletException("No methodIndex given in invokeOp form");
-      int index = Integer.parseInt(methodIndex);
+      final int index = Integer.parseInt(methodIndex);
+     
       try
       {
-         OpResultInfo opResult = Server.invokeOp(name, index, args);
+         OpResultInfo opResult = invokeOp(name, index, args);
          request.setAttribute("opResultInfo", opResult);
          RequestDispatcher rd = this.getServletContext().getRequestDispatcher("/displayOpResult.jsp");
          rd.forward(request, response);
       }
-      catch(JMException e)
+      catch(Exception e)
       {
          throw new ServletException("Failed to invoke operation", e);
       }
@@ -297,21 +300,21 @@
    private void invokeOpByName(HttpServletRequest request, HttpServletResponse response)
       throws ServletException, IOException
    {
-      String name = request.getParameter("name");
+      final String name = request.getParameter("name");
       log.trace("invokeOpByName, name="+name);
-      String[] argTypes = request.getParameterValues("argType");
-      String[] args = getArgs(request);
-      String methodName = request.getParameter("methodName");
+      final String[] argTypes = request.getParameterValues("argType");
+      final String[] args = getArgs(request);
+      final String methodName = request.getParameter("methodName");
       if( methodName == null )
          throw new ServletException("No methodName given in invokeOpByName form");
       try
       {
-         OpResultInfo opResult = Server.invokeOpByName(name, methodName, argTypes, args);
+         OpResultInfo opResult = invokeOpByName(name, methodName, argTypes, args);
          request.setAttribute("opResultInfo", opResult);
          RequestDispatcher rd = this.getServletContext().getRequestDispatcher("/displayOpResult.jsp");
          rd.forward(request, response);
       }
-      catch(JMException e)
+      catch(Exception e)
       {
          throw new ServletException("Failed to invoke operation", e);
       }
@@ -344,5 +347,61 @@
      s = s.replaceAll(">",">");
      return s;
    }
-}
-
+   
+   private MBeanData getMBeanData(final String name) throws PrivilegedActionException
+   {
+      return AccessController.doPrivileged(new PrivilegedExceptionAction<MBeanData>()
+      {
+         public MBeanData run() throws Exception
+         {
+            return Server.getMBeanData(name);
+         }
+      });
+   }
+   
+   @SuppressWarnings("unchecked")
+   private Iterator getDomainData(final String filter) throws PrivilegedActionException
+   {
+      return AccessController.doPrivileged(new PrivilegedExceptionAction<Iterator>()
+      {
+         public Iterator run() throws Exception
+         {
+            return Server.getDomainData(filter);
+         }
+      });
+   }
+   
+   private OpResultInfo invokeOp(final String name, final int index, final String[] args) throws PrivilegedActionException
+   {
+      return AccessController.doPrivileged(new PrivilegedExceptionAction<OpResultInfo>()
+      {
+         public OpResultInfo run() throws Exception
+         {
+            return Server.invokeOp(name, index, args);
+         }
+      });
+   }
+   
+   private OpResultInfo invokeOpByName(final String name, final String methodName,final String[] argTypes, final String[] args) throws PrivilegedActionException
+   {
+      return AccessController.doPrivileged(new PrivilegedExceptionAction<OpResultInfo>()
+      {
+         public OpResultInfo run() throws Exception
+         {
+            return Server.invokeOpByName(name, methodName, argTypes, args);
+         }
+      });
+   }
+   
+   @SuppressWarnings({"unchecked"})
+   private AttributeList setAttributes(final String name, final HashMap attributes) throws PrivilegedActionException
+   {
+      return AccessController.doPrivileged(new PrivilegedExceptionAction<AttributeList>()
+      {
+         public AttributeList run() throws Exception
+         {
+            return Server.setAttributes(name, attributes);
+         }
+      });
+   }
+}
\ No newline at end of file




More information about the jboss-cvs-commits mailing list