Author: ron.sigal(a)jboss.com
Date: 2008-03-26 01:28:07 -0400 (Wed, 26 Mar 2008)
New Revision: 3776
Modified:
  
remoting2/branches/2.x/src/main/org/jboss/remoting/transport/http/HTTPClientInvoker.java
Log:
JBREM-934: Put Class.getMethod() in AccessController.doPrivileged() calls.
Modified:
remoting2/branches/2.x/src/main/org/jboss/remoting/transport/http/HTTPClientInvoker.java
===================================================================
---
remoting2/branches/2.x/src/main/org/jboss/remoting/transport/http/HTTPClientInvoker.java	2008-03-26
05:27:26 UTC (rev 3775)
+++
remoting2/branches/2.x/src/main/org/jboss/remoting/transport/http/HTTPClientInvoker.java	2008-03-26
05:28:07 UTC (rev 3776)
@@ -500,7 +500,7 @@
       return result;
    }
 
-   private void setChunked(Map metadata, HttpURLConnection conn)
+   private void setChunked(Map metadata, final HttpURLConnection conn)
    {
       String chunkedValue = (String) metadata.get("chunkedLength");
       if (chunkedValue != null && chunkedValue.length() > 0)
@@ -515,7 +515,23 @@
              */
             try
             {
-               Method setChunkedLengthMethod =
conn.getClass().getMethod("setChunkedStreamingMode", new Class[]{int.class});
+               Method setChunkedLengthMethod = null;
+              
+               try
+               {
+                  setChunkedLengthMethod = (Method)AccessController.doPrivileged( new
PrivilegedExceptionAction()
+                  {
+                     public Object run() throws Exception
+                     {
+                        return
conn.getClass().getMethod("setChunkedStreamingMode", new Class[]{int.class});
+                     }
+                  });
+               }
+               catch (PrivilegedActionException e)
+               {
+                  throw (Exception) e.getCause();
+               }
+               
                setChunkedLengthMethod.invoke(conn, new Object[]{new
Integer(chunkedLength)});
             }
             catch (NoSuchMethodException e)
@@ -532,6 +548,12 @@
                log.error("Error setting http client connection chunked
length.");
                log.debug(e);
             }
+            catch (Exception e)
+            {
+               // Unexpected.
+               log.error("Unexpected error setting http client connection chunked
length.");
+               log.debug(e);
+            }
          }
          catch (NumberFormatException e)
          {
@@ -725,7 +747,7 @@
           */
          try
          {
-            Class proxyClass = ClassLoaderUtility.loadClass("java.net.Proxy",
HTTPClientInvoker.class);
+            final Class proxyClass =
ClassLoaderUtility.loadClass("java.net.Proxy", HTTPClientInvoker.class);
             InetSocketAddress proxyAddress = new InetSocketAddress(proxyHost,
proxyPort);
             Class[] decalredClasses = proxyClass.getDeclaredClasses();
             Class proxyTypeClass = null;
@@ -753,7 +775,23 @@
             }
             Constructor proxyConstructor = proxyClass.getConstructor(new Class[]
{proxyTypeClass, SocketAddress.class});
             Object proxy = proxyConstructor.newInstance(new Object[] {proxyType,
proxyAddress});
-            Method openConnection =
externalURL.getClass().getMethod("openConnection", new Class[] {proxyClass});
+            Method openConnection = null;
+            
+            try
+            {
+               openConnection = (Method)AccessController.doPrivileged( new
PrivilegedExceptionAction()
+               {
+                  public Object run() throws Exception
+                  {
+                     return URL.class.getMethod("openConnection", new Class[]
{proxyClass});
+                  }
+               });
+            }
+            catch (PrivilegedActionException e)
+            {
+                throw (Exception) e.getCause();
+            }
+            
             httpURLConn = (HttpURLConnection)openConnection.invoke(externalURL, new
Object[] {proxy});
          }
          catch (Exception e)
    
    
    
 
                    
                    
                        
                        Show replies by date