You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by rm...@apache.org on 2017/07/04 07:09:15 UTC
svn commit: r1800732 - in
/openwebbeans/branches/owb_1.7.x/webbeans-impl/src/main/java/org/apache/webbeans/proxy:
AbstractProxyFactory.java InterceptorDecoratorProxyFactory.java
NormalScopeProxyFactory.java SubclassProxyFactory.java
Author: rmannibucau
Date: Tue Jul 4 07:09:14 2017
New Revision: 1800732
URL: http://svn.apache.org/viewvc?rev=1800732&view=rev
Log:
OWB-1196 ensure we can proxy signed classes - backport from trunk in 1.7.x
Modified:
openwebbeans/branches/owb_1.7.x/webbeans-impl/src/main/java/org/apache/webbeans/proxy/AbstractProxyFactory.java
openwebbeans/branches/owb_1.7.x/webbeans-impl/src/main/java/org/apache/webbeans/proxy/InterceptorDecoratorProxyFactory.java
openwebbeans/branches/owb_1.7.x/webbeans-impl/src/main/java/org/apache/webbeans/proxy/NormalScopeProxyFactory.java
openwebbeans/branches/owb_1.7.x/webbeans-impl/src/main/java/org/apache/webbeans/proxy/SubclassProxyFactory.java
Modified: openwebbeans/branches/owb_1.7.x/webbeans-impl/src/main/java/org/apache/webbeans/proxy/AbstractProxyFactory.java
URL: http://svn.apache.org/viewvc/openwebbeans/branches/owb_1.7.x/webbeans-impl/src/main/java/org/apache/webbeans/proxy/AbstractProxyFactory.java?rev=1800732&r1=1800731&r2=1800732&view=diff
==============================================================================
--- openwebbeans/branches/owb_1.7.x/webbeans-impl/src/main/java/org/apache/webbeans/proxy/AbstractProxyFactory.java (original)
+++ openwebbeans/branches/owb_1.7.x/webbeans-impl/src/main/java/org/apache/webbeans/proxy/AbstractProxyFactory.java Tue Jul 4 07:09:14 2017
@@ -184,6 +184,13 @@ public abstract class AbstractProxyFacto
throw new WebBeansException("Unable to detect a free proxy class name based on: " + proxyClassName);
}
+ protected <T> String getSignedClassProxyName(final Class<T> classToProxy)
+ {
+ // avoid java.lang.SecurityException: class's signer information
+ // does not match signer information of other classes in the same package
+ return "org.apache.webbeans.custom.signed." + classToProxy.getName();
+ }
+
protected String fixPreservedPackages(String proxyClassName)
{
proxyClassName = fixPreservedPackage(proxyClassName, "java.");
Modified: openwebbeans/branches/owb_1.7.x/webbeans-impl/src/main/java/org/apache/webbeans/proxy/InterceptorDecoratorProxyFactory.java
URL: http://svn.apache.org/viewvc/openwebbeans/branches/owb_1.7.x/webbeans-impl/src/main/java/org/apache/webbeans/proxy/InterceptorDecoratorProxyFactory.java?rev=1800732&r1=1800731&r2=1800732&view=diff
==============================================================================
--- openwebbeans/branches/owb_1.7.x/webbeans-impl/src/main/java/org/apache/webbeans/proxy/InterceptorDecoratorProxyFactory.java (original)
+++ openwebbeans/branches/owb_1.7.x/webbeans-impl/src/main/java/org/apache/webbeans/proxy/InterceptorDecoratorProxyFactory.java Tue Jul 4 07:09:14 2017
@@ -182,7 +182,9 @@ public class InterceptorDecoratorProxyFa
Method[] interceptedMethods, Method[] nonInterceptedMethods)
throws ProxyGenerationException
{
- String proxyClassName = getUnusedProxyClassName(classLoader, classToProxy.getName() + "$$OwbInterceptProxy");
+ String proxyClassName = getUnusedProxyClassName(
+ classLoader,
+ (classToProxy.getSigners() != null ? getSignedClassProxyName(classToProxy) : classToProxy.getName()) + "$$OwbInterceptProxy");
Class<T> clazz = createProxyClass(classLoader, proxyClassName, classToProxy, interceptedMethods, nonInterceptedMethods);
Modified: openwebbeans/branches/owb_1.7.x/webbeans-impl/src/main/java/org/apache/webbeans/proxy/NormalScopeProxyFactory.java
URL: http://svn.apache.org/viewvc/openwebbeans/branches/owb_1.7.x/webbeans-impl/src/main/java/org/apache/webbeans/proxy/NormalScopeProxyFactory.java?rev=1800732&r1=1800731&r2=1800732&view=diff
==============================================================================
--- openwebbeans/branches/owb_1.7.x/webbeans-impl/src/main/java/org/apache/webbeans/proxy/NormalScopeProxyFactory.java (original)
+++ openwebbeans/branches/owb_1.7.x/webbeans-impl/src/main/java/org/apache/webbeans/proxy/NormalScopeProxyFactory.java Tue Jul 4 07:09:14 2017
@@ -232,7 +232,9 @@ public class NormalScopeProxyFactory ext
public <T> Class<T> createProxyClass(ClassLoader classLoader, Class<T> classToProxy)
throws ProxyGenerationException
{
- String proxyClassName = getUnusedProxyClassName(classLoader, classToProxy.getName() + "$$OwbNormalScopeProxy");
+ String proxyClassName = getUnusedProxyClassName(
+ classLoader,
+ (classToProxy.getSigners() != null ? getSignedClassProxyName(classToProxy) : classToProxy.getName()) + "$$OwbNormalScopeProxy");
Method[] nonInterceptedMethods;
Method[] interceptedMethods = null;
Modified: openwebbeans/branches/owb_1.7.x/webbeans-impl/src/main/java/org/apache/webbeans/proxy/SubclassProxyFactory.java
URL: http://svn.apache.org/viewvc/openwebbeans/branches/owb_1.7.x/webbeans-impl/src/main/java/org/apache/webbeans/proxy/SubclassProxyFactory.java?rev=1800732&r1=1800731&r2=1800732&view=diff
==============================================================================
--- openwebbeans/branches/owb_1.7.x/webbeans-impl/src/main/java/org/apache/webbeans/proxy/SubclassProxyFactory.java (original)
+++ openwebbeans/branches/owb_1.7.x/webbeans-impl/src/main/java/org/apache/webbeans/proxy/SubclassProxyFactory.java Tue Jul 4 07:09:14 2017
@@ -43,6 +43,8 @@ import javax.inject.Inject;
public class SubclassProxyFactory extends AbstractProxyFactory
{
+ private static final String SUB_CLASS_NAME_SUFFIX = "$$OwbSubClass";
+
public SubclassProxyFactory(WebBeansContext webBeansContext)
{
super(webBeansContext);
@@ -92,7 +94,11 @@ public class SubclassProxyFactory extend
private <T> String getSubClassName(Class<T> classToProxy)
{
- return fixPreservedPackages(classToProxy.getName() + "$$OwbSubClass");
+ if (classToProxy.getSigners() != null)
+ {
+ return getSignedClassProxyName(classToProxy) + SUB_CLASS_NAME_SUFFIX;
+ }
+ return fixPreservedPackages(classToProxy.getName() + SUB_CLASS_NAME_SUFFIX);
}
/**