Author: ron.sigal(a)jboss.com
Date: 2009-04-14 06:12:27 -0400 (Tue, 14 Apr 2009)
New Revision: 4998
Modified:
remoting2/branches/2.x/src/main/org/jboss/remoting/callback/CallbackStore.java
remoting2/branches/2.x/src/main/org/jboss/remoting/callback/ServerInvokerCallbackHandler.java
Log:
JBREM-1116: Eliminated dependence on SecurityUtility.
Modified: remoting2/branches/2.x/src/main/org/jboss/remoting/callback/CallbackStore.java
===================================================================
---
remoting2/branches/2.x/src/main/org/jboss/remoting/callback/CallbackStore.java 2009-04-14
10:11:33 UTC (rev 4997)
+++
remoting2/branches/2.x/src/main/org/jboss/remoting/callback/CallbackStore.java 2009-04-14
10:12:27 UTC (rev 4998)
@@ -123,7 +123,7 @@
{
try
{
- filePath =
SecurityUtility.getSystemProperty("jboss.server.data.dir", "data");
+ filePath = getSystemProperty("jboss.server.data.dir",
"data");
}
catch (Exception e)
{
@@ -134,7 +134,7 @@
File storeFile = new File(filePath);
if (!storeFile.exists())
{
- boolean madeDir = SecurityUtility.mkdirs(storeFile);
+ boolean madeDir = mkdirs(storeFile);
if (!madeDir)
{
throw new IOException("Can not create directory for store. Path
given: " + filePath);
@@ -202,7 +202,7 @@
{
try
{
- String separator =
SecurityUtility.getSystemProperty("file.separator");
+ String separator = getSystemProperty("file.separator");
fileToDelete = filePath + separator + fileList[x];
final File currentFile = new File(fileToDelete);
@@ -352,9 +352,9 @@
{
// only getting the first one, which will be first one entered since the
getting
// of the list is automatically ordered by the OS and all file names are
numeric by time.
- String separator =
SecurityUtility.getSystemProperty("file.separator");
+ String separator = getSystemProperty("file.separator");
objectFilePath = filePath + separator + objectFileList[0];
- inFile = SecurityUtility.getFileInputStream(objectFilePath);
+ inFile = getFileInputStream(objectFilePath);
in =
SerializationStreamFactory.getManagerInstance(serializationType).createRegularInput(inFile);
try
@@ -456,7 +456,7 @@
}
StringBuffer path = new StringBuffer(filePath);
- String separator =
SecurityUtility.getSystemProperty("file.separator");
+ String separator = getSystemProperty("file.separator");
path.append(separator).append(String.valueOf(currentTimestamp));
path.append("-").append(timestampCounter).append(".").append(fileSuffix);
final File storeFile = new File(path.toString());
@@ -465,7 +465,7 @@
try
{
- outFile = SecurityUtility.getFileOutputStream(storeFile, false);
+ outFile = getFileOutputStream(storeFile, false);
if (serializationType.indexOf("jboss") > 0)
{
out =
SerializationStreamFactory.getManagerInstance(serializationType).createOutput(outFile);
@@ -545,5 +545,115 @@
}
}
}
-
+
+ static private boolean mkdirs(final File dir)
+ {
+ if (SecurityUtility.skipAccessControl())
+ {
+ return dir.mkdirs();
+ }
+
+ return ((Boolean) AccessController.doPrivileged( new PrivilegedAction()
+ {
+ public Object run()
+ {
+ return new Boolean(dir.mkdirs());
+ }
+ })).booleanValue();
+ }
+
+ static private FileInputStream getFileInputStream(final String path) throws
FileNotFoundException
+ {
+ if (SecurityUtility.skipAccessControl())
+ {
+ return new FileInputStream(path);
+ }
+
+ try
+ {
+ return (FileInputStream)AccessController.doPrivileged( new
PrivilegedExceptionAction()
+ {
+ public Object run() throws FileNotFoundException
+ {
+ return new FileInputStream(path);
+ }
+ });
+ }
+ catch (PrivilegedActionException e)
+ {
+ throw (FileNotFoundException) e.getCause();
+ }
+ }
+
+ static private FileOutputStream getFileOutputStream(final File file, final boolean
append)
+ throws FileNotFoundException
+ {
+ if (SecurityUtility.skipAccessControl())
+ {
+ return new FileOutputStream(file, append);
+ }
+
+ try
+ {
+ return (FileOutputStream)AccessController.doPrivileged( new
PrivilegedExceptionAction()
+ {
+ public Object run() throws FileNotFoundException
+ {
+ return new FileOutputStream(file, append);
+ }
+ });
+ }
+ catch (PrivilegedActionException e)
+ {
+ throw (FileNotFoundException) e.getCause();
+ }
+ }
+
+ static private String getSystemProperty(final String name, final String defaultValue)
+ {
+ if (SecurityUtility.skipAccessControl())
+ return System.getProperty(name, defaultValue);
+
+ String value = null;
+ try
+ {
+ value = (String)AccessController.doPrivileged( new PrivilegedExceptionAction()
+ {
+ public Object run() throws Exception
+ {
+ return System.getProperty(name, defaultValue);
+ }
+ });
+ }
+ catch (PrivilegedActionException e)
+ {
+ throw (RuntimeException) e.getCause();
+ }
+
+ return value;
+ }
+
+ static private String getSystemProperty(final String name)
+ {
+ if (SecurityUtility.skipAccessControl())
+ return System.getProperty(name);
+
+ String value = null;
+ try
+ {
+ value = (String)AccessController.doPrivileged( new PrivilegedExceptionAction()
+ {
+ public Object run() throws Exception
+ {
+ return System.getProperty(name);
+ }
+ });
+ }
+ catch (PrivilegedActionException e)
+ {
+ throw (RuntimeException) e.getCause();
+ }
+
+ return value;
+ }
}
Modified:
remoting2/branches/2.x/src/main/org/jboss/remoting/callback/ServerInvokerCallbackHandler.java
===================================================================
---
remoting2/branches/2.x/src/main/org/jboss/remoting/callback/ServerInvokerCallbackHandler.java 2009-04-14
10:11:33 UTC (rev 4997)
+++
remoting2/branches/2.x/src/main/org/jboss/remoting/callback/ServerInvokerCallbackHandler.java 2009-04-14
10:12:27 UTC (rev 4998)
@@ -36,6 +36,7 @@
import org.jboss.remoting.security.SSLSocketFactoryService;
import org.jboss.remoting.util.SecurityUtility;
+import javax.management.InstanceNotFoundException;
import javax.management.MBeanServer;
import javax.management.MBeanServerInvocationHandler;
import javax.management.MalformedObjectNameException;
@@ -295,10 +296,10 @@
if (server != null)
{
String className = SSLServerSocketFactoryServiceMBean.class.getName();
- boolean isCorrectType = SecurityUtility.isInstanceOf(server,
serverSocketFactoryObjName, className);
+ boolean isCorrectType = isInstanceOf(server, serverSocketFactoryObjName,
className);
if (isCorrectType)
{
- Object o = SecurityUtility.getMBeanAttribute(server,
serverSocketFactoryObjName, "SSLSocketBuilder");
+ Object o = getMBeanAttribute(server, serverSocketFactoryObjName,
"SSLSocketBuilder");
SSLSocketBuilderMBean sslSocketBuilder = (SSLSocketBuilderMBean) o;
if (sslSocketBuilder != null)
@@ -428,10 +429,10 @@
String filePath = (String) storeConfig.get(CallbackStore.FILE_PATH_KEY);
if(filePath == null)
{
- filePath =
SecurityUtility.getSystemProperty("jboss.server.data.dir", "data");
+ filePath = getSystemProperty("jboss.server.data.dir",
"data");
}
- String separator =
SecurityUtility.getSystemProperty("file.separator");
+ String separator = getSystemProperty("file.separator");
String newFilePath = filePath + separator + "remoting" + separator +
sessionId;
storeConfig.put(CallbackStore.FILE_PATH_KEY, newFilePath);
callbackStore.setConfig(storeConfig);
@@ -1051,4 +1052,100 @@
{
this.shouldPersist = shouldPersist;
}
+
+ static private Object getMBeanAttribute(final MBeanServer server, final ObjectName
objectName, final String attribute)
+ throws Exception
+ {
+ if (SecurityUtility.skipAccessControl())
+ {
+ return server.getAttribute(objectName, attribute);
+ }
+
+ try
+ {
+ return AccessController.doPrivileged( new PrivilegedExceptionAction()
+ {
+ public Object run() throws Exception
+ {
+ return server.getAttribute(objectName, attribute);
+ }
+ });
+ }
+ catch (PrivilegedActionException e)
+ {
+ throw (Exception) e.getCause();
+ }
+ }
+
+ static private boolean isInstanceOf(final MBeanServer server, final ObjectName
objectName, final String className)
+ throws InstanceNotFoundException
+ {
+ if (SecurityUtility.skipAccessControl())
+ {
+ return server.isInstanceOf(objectName, className);
+ }
+
+ try
+ {
+ return ((Boolean)AccessController.doPrivileged( new PrivilegedExceptionAction()
+ {
+ public Object run() throws Exception
+ {
+ return new Boolean(server.isInstanceOf(objectName, className));
+ }
+ })).booleanValue();
+ }
+ catch (PrivilegedActionException e)
+ {
+ throw (InstanceNotFoundException) e.getCause();
+ }
+ }
+
+ static private String getSystemProperty(final String name, final String defaultValue)
+ {
+ if (SecurityUtility.skipAccessControl())
+ return System.getProperty(name, defaultValue);
+
+ String value = null;
+ try
+ {
+ value = (String)AccessController.doPrivileged( new PrivilegedExceptionAction()
+ {
+ public Object run() throws Exception
+ {
+ return System.getProperty(name, defaultValue);
+ }
+ });
+ }
+ catch (PrivilegedActionException e)
+ {
+ throw (RuntimeException) e.getCause();
+ }
+
+ return value;
+ }
+
+ static private String getSystemProperty(final String name)
+ {
+ if (SecurityUtility.skipAccessControl())
+ return System.getProperty(name);
+
+ String value = null;
+ try
+ {
+ value = (String)AccessController.doPrivileged( new PrivilegedExceptionAction()
+ {
+ public Object run() throws Exception
+ {
+ return System.getProperty(name);
+ }
+ });
+ }
+ catch (PrivilegedActionException e)
+ {
+ throw (RuntimeException) e.getCause();
+ }
+
+ return value;
+ }
}