You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by ke...@apache.org on 2007/07/18 10:52:07 UTC

svn commit: r557201 - /incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/TypeHelperImpl.java

Author: kelvingoodson
Date: Wed Jul 18 01:52:06 2007
New Revision: 557201

URL: http://svn.apache.org/viewvc?view=rev&rev=557201
Log:
TUSCANY-1110 ensure correct class loader is used for loading impl class

Modified:
    incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/TypeHelperImpl.java

Modified: incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/TypeHelperImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/TypeHelperImpl.java?view=diff&rev=557201&r1=557200&r2=557201
==============================================================================
--- incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/TypeHelperImpl.java (original)
+++ incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/TypeHelperImpl.java Wed Jul 18 01:52:06 2007
@@ -20,6 +20,8 @@
 package org.apache.tuscany.sdo.helper;
 
 import java.lang.reflect.Method;
+import java.security.AccessController;
+import java.security.PrivilegedExceptionAction;
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.Iterator;
@@ -106,6 +108,24 @@
         }
     }
     
+    public Class loadClass(final ClassLoader classLoader, final String className) {
+        Class returnClass = null;
+        try {
+            returnClass = (Class)AccessController.doPrivileged(
+                                                               new PrivilegedExceptionAction() {
+                                                                   public Object run() throws Exception {
+                                                                       return classLoader.loadClass(className);
+                                                                   }
+                                                               }
+            );
+        }
+        catch (Exception e) {
+            return null;
+        }
+
+        return returnClass;
+    }
+    
     public Type getType(Class interfaceClass) {
         Type type = SDOUtil.getJavaSDOType(interfaceClass);
         if (type != null) {
@@ -124,12 +144,11 @@
                 else {
                     sdoTypeImplClassName = sdoTypeImplClassName.substring(0, index) + ".impl" + sdoTypeImplClassName.substring(index) + "Impl";
                 }
-                try {
-                    sdoTypeImplClass = Class.forName(sdoTypeImplClassName);
-                }
-                catch (Exception e) {
+                sdoTypeImplClass = loadClass(interfaceClass.getClassLoader(), sdoTypeImplClassName);
+                if (sdoTypeImplClass == null) {
                     return null;
                 }
+                
                 getStaticTypeMethod = getGetStaticTypeMethod(sdoTypeImplClass);
                 if (getStaticTypeMethod == null) {
                     return null;



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org