You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltaspike.apache.org by ta...@apache.org on 2015/04/08 19:58:52 UTC

deltaspike git commit: DELTASPIKE-870 Partial Bean with signed jar trouble

Repository: deltaspike
Updated Branches:
  refs/heads/master cb62677ff -> a40c71da6


DELTASPIKE-870 Partial Bean with signed jar trouble

Project: http://git-wip-us.apache.org/repos/asf/deltaspike/repo
Commit: http://git-wip-us.apache.org/repos/asf/deltaspike/commit/a40c71da
Tree: http://git-wip-us.apache.org/repos/asf/deltaspike/tree/a40c71da
Diff: http://git-wip-us.apache.org/repos/asf/deltaspike/diff/a40c71da

Branch: refs/heads/master
Commit: a40c71da60080be0016e70d3bff54aee9789977e
Parents: cb62677
Author: Thomas Andraschko <ta...@apache.org>
Authored: Wed Apr 8 19:58:43 2015 +0200
Committer: Thomas Andraschko <ta...@apache.org>
Committed: Wed Apr 8 19:58:43 2015 +0200

----------------------------------------------------------------------
 .../core/util/proxy/AsmProxyClassGenerator.java     | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/deltaspike/blob/a40c71da/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/util/proxy/AsmProxyClassGenerator.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/util/proxy/AsmProxyClassGenerator.java b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/util/proxy/AsmProxyClassGenerator.java
index e1f8394..e7942af 100644
--- a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/util/proxy/AsmProxyClassGenerator.java
+++ b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/util/proxy/AsmProxyClassGenerator.java
@@ -23,6 +23,7 @@ import org.apache.deltaspike.core.util.proxy.invocation.DelegateManualInvocation
 import java.lang.annotation.Annotation;
 import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.UndeclaredThrowableException;
+import java.security.ProtectionDomain;
 import java.util.ArrayList;
 import java.util.Arrays;
 import javax.enterprise.inject.Typed;
@@ -60,8 +61,9 @@ public abstract class AsmProxyClassGenerator
 
         byte[] proxyBytes = generateProxyClassBytes(targetClass, invocationHandlerClass,
                 classFileName, superAccessorMethodSuffix, additionalInterfaces, delegateMethods, interceptMethods);
-        
-        Class<T> proxyClass = (Class<T>) loadClass(classLoader, proxyName, proxyBytes);
+
+        Class<T> proxyClass = (Class<T>) loadClass(classLoader, proxyName, proxyBytes,
+                targetClass.getProtectionDomain());
 
         return proxyClass;
     }
@@ -95,7 +97,7 @@ public abstract class AsmProxyClassGenerator
                 interfaces[(interfaces.length - 1) + i] = Type.getInternalName(additionalInterfaces[i]);
             }
         }
-        
+
         Type superType = Type.getType(superClass);
         Type proxyType = Type.getObjectType(proxyName);
         Type invocationHandlerType = Type.getType(invocationHandlerClass);
@@ -429,13 +431,14 @@ public abstract class AsmProxyClassGenerator
      *
      * @return Class<?>
      */
-    private static Class<?> loadClass(ClassLoader loader, String className, byte[] b)
+    private static Class<?> loadClass(ClassLoader loader, String className, byte[] b,
+            ProtectionDomain protectionDomain)
     {
         // override classDefine (as it is protected) and define the class.
         try
         {
             java.lang.reflect.Method method = ClassLoader.class.getDeclaredMethod(
-                    "defineClass", String.class, byte[].class, int.class, int.class);
+                    "defineClass", String.class, byte[].class, int.class, int.class, ProtectionDomain.class);
 
             // protected method invocation
             boolean accessible = method.isAccessible();
@@ -445,7 +448,8 @@ public abstract class AsmProxyClassGenerator
             }
             try
             {
-                return (Class<?>) method.invoke(loader, className, b, Integer.valueOf(0), Integer.valueOf(b.length));
+                return (Class<?>) method.invoke(loader, className, b, Integer.valueOf(0), Integer.valueOf(b.length),
+                        protectionDomain);
             }
             finally
             {