[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