Author: slaws
Date: Fri Aug 26 16:41:39 2011
New Revision: 1162160

URL: http://svn.apache.org/viewvc?rev=1162160&view=rev
Log:
TUSCANY-3925 - Apply Jennifer's Java security patch. 

Modified:
    
tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/WSDLHelper.java
    
tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/impl/JDKProxyFactory.java
    
tuscany/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultFactoryExtensionPoint.java

Modified: 
tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/WSDLHelper.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/WSDLHelper.java?rev=1162160&r1=1162159&r2=1162160&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/WSDLHelper.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/WSDLHelper.java
 Fri Aug 26 16:41:39 2011
@@ -29,6 +29,9 @@ import java.io.OutputStreamWriter;
 import java.io.Writer;
 import java.net.URI;
 import java.net.URL;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -36,6 +39,7 @@ import java.util.Map;
 import javax.wsdl.Definition;
 import javax.wsdl.PortType;
 import javax.wsdl.Types;
+import javax.wsdl.WSDLException;
 import javax.wsdl.xml.WSDLLocator;
 import javax.wsdl.xml.WSDLReader;
 
@@ -227,11 +231,30 @@ public class WSDLHelper {
             // read
             for (XMLString xmlString : xmlMap.values()){
                 if (xmlString instanceof WSDLInfo){
-                    WSDLReader reader =  
javax.wsdl.factory.WSDLFactory.newInstance().newWSDLReader();
+                    WSDLReader reader;
+                    try {
+                        reader =  AccessController.doPrivileged(new 
PrivilegedExceptionAction<WSDLReader>() {
+                            public WSDLReader run() throws WSDLException {
+                                return 
javax.wsdl.factory.WSDLFactory.newInstance().newWSDLReader();                   
      
+                            }
+                        });
+                    } catch (PrivilegedActionException e){
+                        throw (WSDLException)e.getException();
+                    }
                     reader.setFeature("javax.wsdl.verbose", false);
                     reader.setFeature("javax.wsdl.importDocuments", true);
-                    WSDLLocatorImpl locator = new 
WSDLLocatorImpl(xmlString.getBaseURI(), xmlMap);
-                    Definition readDefinition = reader.readWSDL(locator);
+                    final WSDLLocatorImpl locator = new 
WSDLLocatorImpl(xmlString.getBaseURI(), xmlMap);
+                    final WSDLReader freader = reader;
+                    Definition readDefinition;
+                    try {
+                        readDefinition = AccessController.doPrivileged(new 
PrivilegedExceptionAction<Definition>() {
+                            public Definition run() throws WSDLException {
+                                return freader.readWSDL(locator);              
          
+                            }
+                        });
+                    } catch (PrivilegedActionException e){
+                        throw (WSDLException)e.getException();
+                    }
                     
                     WSDLDefinition wsdlDefinition = 
wsdlFactory.createWSDLDefinition();
                     wsdlDefinition.setDefinition(readDefinition);

Modified: 
tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/impl/JDKProxyFactory.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/impl/JDKProxyFactory.java?rev=1162160&r1=1162159&r2=1162160&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/impl/JDKProxyFactory.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/impl/JDKProxyFactory.java
 Fri Aug 26 16:41:39 2011
@@ -146,9 +146,13 @@ public class JDKProxyFactory implements 
 
     public <T> T createCallbackProxy(ServiceReference<T> callbackReference) 
throws ProxyCreationException {
         assert callbackReference != null;
-        Class<T> interfaze = callbackReference.getBusinessInterface();
+        final Class<T> interfaze = callbackReference.getBusinessInterface();
         InvocationHandler handler = new 
JDKCallbackInvocationHandler(messageFactory, callbackReference);
-        ClassLoader cl = interfaze.getClassLoader();
+        ClassLoader cl = AccessController.doPrivileged(new 
PrivilegedAction<ClassLoader>() {
+            public ClassLoader run() {
+                return interfaze.getClassLoader();
+            }
+        });
         T proxy = interfaze.cast(newProxyInstance(cl, new Class[] {interfaze}, 
handler));
         ((ServiceReferenceExt<T>)callbackReference).setProxy(proxy);
         return proxy;

Modified: 
tuscany/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultFactoryExtensionPoint.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultFactoryExtensionPoint.java?rev=1162160&r1=1162159&r2=1162160&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultFactoryExtensionPoint.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultFactoryExtensionPoint.java
 Fri Aug 26 16:41:39 2011
@@ -25,6 +25,8 @@ import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
@@ -103,7 +105,7 @@ public class DefaultFactoryExtensionPoin
      * @param factoryInterface The lookup key (factory interface)
      * @return The factory
      */    
-    public <T> T getFactory(Class<T> factoryInterface) {
+    public <T> T getFactory(final Class<T> factoryInterface) {
         Object factory = factories.get(factoryInterface);
         if (factory == null) {
 
@@ -128,12 +130,37 @@ public class DefaultFactoryExtensionPoin
                     
                     // If the input interface is an abstract class
                     if (!factoryInterface.isInterface() && 
Modifier.isAbstract(factoryInterface.getModifiers())) {
-                        Method newInstanceMethod = 
factoryInterface.getDeclaredMethod("newInstance");
-                        ClassLoader tccl = 
setContextClassLoader(factoryInterface.getClassLoader());
+                    
+                        Method newInstanceMethod;
                         try {
-                            
-                            // Create a new instance
-                            factory = newInstanceMethod.invoke(null);
+                            newInstanceMethod = 
AccessController.doPrivileged(new PrivilegedExceptionAction<Method>() {
+                                public Method run() throws Exception {
+                                    return 
factoryInterface.getDeclaredMethod("newInstance");
+                                }
+                            });
+                        } catch (PrivilegedActionException e){
+                            throw (Exception)e.getException();
+                        }
+                        
+                        ClassLoader cl = AccessController.doPrivileged(new 
PrivilegedAction<ClassLoader>() {
+                            public ClassLoader run() {
+                                ClassLoader cl = 
factoryInterface.getClassLoader();
+                                return cl;
+                            }
+                        });
+                        ClassLoader tccl = setContextClassLoader(cl);
+                        try {
+                            try {
+                                final Method fnewInstanceMethod = 
newInstanceMethod;
+                                factory = AccessController.doPrivileged(new 
PrivilegedExceptionAction<Object>() {
+                                public Object run() throws Exception {
+                                    Object factory = 
fnewInstanceMethod.invoke(null);
+                                    return factory;
+                                }
+                            });
+                            } catch (PrivilegedActionException e){
+                                throw (Exception)e.getException();
+                            }
                             
                             // Cache the factory
                             factories.put(factoryInterface, factory);


Reply via email to