Author: ron.sigal(a)jboss.com
Date: 2009-04-14 06:19:59 -0400 (Tue, 14 Apr 2009)
New Revision: 5014
Modified:
remoting2/branches/2.x/src/main/org/jboss/remoting/transport/coyote/CoyoteInvoker.java
Log:
JBREM-1116: Eliminated dependence on SecurityUtility.
Modified:
remoting2/branches/2.x/src/main/org/jboss/remoting/transport/coyote/CoyoteInvoker.java
===================================================================
---
remoting2/branches/2.x/src/main/org/jboss/remoting/transport/coyote/CoyoteInvoker.java 2009-04-14
10:19:39 UTC (rev 5013)
+++
remoting2/branches/2.x/src/main/org/jboss/remoting/transport/coyote/CoyoteInvoker.java 2009-04-14
10:19:59 UTC (rev 5014)
@@ -163,7 +163,7 @@
Class clazz = null;
try
{
- clazz = (Class) SecurityUtility.forName(protocolHandlerClassName);
+ clazz = (Class) forName(protocolHandlerClassName);
}
catch (ClassNotFoundException e)
{
@@ -363,7 +363,7 @@
if (remoteAddressMB != null)
{
String remoteAddressString = remoteAddressMB.toString();
- InetAddress remoteAddress =
SecurityUtility.getAddressByName(remoteAddressString);
+ InetAddress remoteAddress = getAddressByName(remoteAddressString);
invocationRequest.getRequestPayload().put(Remoting.CLIENT_ADDRESS,
remoteAddress);
}
else
@@ -1079,7 +1079,7 @@
{
try
{
- params[0] = SecurityUtility.getAddressByName(value);
+ params[0] = getAddressByName(value);
}
catch(UnknownHostException exc)
{
@@ -1144,5 +1144,50 @@
{
return true;
}
-
+
+ static private Object forName(final String className) throws ClassNotFoundException
+ {
+ if (SecurityUtility.skipAccessControl())
+ {
+ return Class.forName(className);
+ }
+
+ try
+ {
+ return AccessController.doPrivileged( new PrivilegedExceptionAction()
+ {
+ public Object run() throws Exception
+ {
+ return Class.forName(className);
+ }
+ });
+ }
+ catch (PrivilegedActionException e)
+ {
+ throw (ClassNotFoundException) e.getCause();
+ }
+ }
+
+ static private InetAddress getAddressByName(final String host) throws
UnknownHostException
+ {
+ if (SecurityUtility.skipAccessControl())
+ {
+ return InetAddress.getByName(host);
+ }
+
+ try
+ {
+ return (InetAddress)AccessController.doPrivileged( new
PrivilegedExceptionAction()
+ {
+ public Object run() throws IOException
+ {
+ return InetAddress.getByName(host);
+ }
+ });
+ }
+ catch (PrivilegedActionException e)
+ {
+ throw (UnknownHostException) e.getCause();
+ }
+ }
}