You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by st...@apache.org on 2013/01/15 14:16:57 UTC
svn commit: r1433391 - in /openwebbeans/trunk/webbeans-impl/src:
main/java/org/apache/webbeans/intercept/InterceptorResolutionService.java
test/java/org/apache/webbeans/newtests/interceptors/resolution/InterceptorProxyChainTest.java
Author: struberg
Date: Tue Jan 15 13:16:57 2013
New Revision: 1433391
URL: http://svn.apache.org/viewvc?rev=1433391&view=rev
Log:
OWB-344 add NormalScoping proxy to the game
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorResolutionService.java
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/resolution/InterceptorProxyChainTest.java
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorResolutionService.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorResolutionService.java?rev=1433391&r1=1433390&r2=1433391&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorResolutionService.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorResolutionService.java Tue Jan 15 13:16:57 2013
@@ -115,7 +115,7 @@ public class InterceptorResolutionServic
Set<Interceptor<?>> allUsedCdiInterceptors = new HashSet<Interceptor<?>>();
Map<Method, MethodInterceptorInfo> businessMethodInterceptorInfos = new HashMap<Method, MethodInterceptorInfo>();
- List<AnnotatedMethod> nonInterceptedMethods = new ArrayList<AnnotatedMethod>();
+ List<Method> nonInterceptedMethods = new ArrayList<Method>();
// iterate over all methods and build up the interceptor/decorator stack
for (AnnotatedMethod annotatedMethod : interceptableAnnotatedMethods)
@@ -131,7 +131,7 @@ public class InterceptorResolutionServic
if (methodInterceptorInfo.isEmpty())
{
- nonInterceptedMethods.add(annotatedMethod);
+ nonInterceptedMethods.add(annotatedMethod.getJavaMember());
continue;
}
@@ -357,7 +357,7 @@ public class InterceptorResolutionServic
public BeanInterceptorInfo(List<Decorator<?>> decorators,
Set<Interceptor<?>> interceptors,
Map<Method, MethodInterceptorInfo> businessMethodsInfo,
- List<AnnotatedMethod> nonInterceptedMethods)
+ List<Method> nonInterceptedMethods)
{
this.decorators = decorators;
this.interceptors = interceptors;
@@ -386,7 +386,7 @@ public class InterceptorResolutionServic
/**
* all non-intercepted methods
*/
- private List<AnnotatedMethod> nonInterceptedMethods = Collections.EMPTY_LIST;
+ private List<Method> nonInterceptedMethods = Collections.EMPTY_LIST;
public List<Decorator<?>> getDecorators()
{
@@ -403,7 +403,7 @@ public class InterceptorResolutionServic
return businessMethodsInfo;
}
- public List<AnnotatedMethod> getNonInterceptedMethods()
+ public List<Method> getNonInterceptedMethods()
{
return nonInterceptedMethods;
}
Modified: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/resolution/InterceptorProxyChainTest.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/resolution/InterceptorProxyChainTest.java?rev=1433391&r1=1433390&r2=1433391&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/resolution/InterceptorProxyChainTest.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/resolution/InterceptorProxyChainTest.java Tue Jan 15 13:16:57 2013
@@ -5,6 +5,7 @@ import javax.enterprise.inject.spi.Annot
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.InterceptionType;
import javax.enterprise.inject.spi.Interceptor;
+import javax.inject.Provider;
import java.lang.reflect.Method;
import java.net.URL;
import java.net.URLClassLoader;
@@ -20,12 +21,15 @@ import org.apache.webbeans.newtests.Abst
import org.apache.webbeans.newtests.interceptors.factory.beans.ClassMultiInterceptedClass;
import org.apache.webbeans.proxy.InterceptorDecoratorProxyFactory;
import org.apache.webbeans.proxy.InterceptorHandler;
+import org.apache.webbeans.proxy.NormalScopeProxyFactory;
+import org.apache.webbeans.proxy.ProxyGenerationException;
import org.apache.webbeans.test.component.intercept.webbeans.ActionInterceptor;
import org.apache.webbeans.test.component.intercept.webbeans.SecureInterceptor;
import org.apache.webbeans.test.component.intercept.webbeans.TransactionalInterceptor;
import org.apache.webbeans.test.component.intercept.webbeans.bindings.Action;
import org.apache.webbeans.test.component.intercept.webbeans.bindings.Secure;
import org.apache.webbeans.test.component.intercept.webbeans.bindings.Transactional;
+import org.apache.webbeans.util.ClassUtil;
import org.junit.Assert;
import org.junit.Test;
@@ -111,7 +115,7 @@ public class InterceptorProxyChainTest e
InterceptorDecoratorProxyFactory pf = new InterceptorDecoratorProxyFactory();
// we take a fresh URLClassLoader to not blur the test classpath with synthetic classes.
- ClassLoader classLoader = new URLClassLoader(new URL[0]);
+ ClassLoader classLoader = this.getClass().getClassLoader(); // new URLClassLoader(new URL[0]);
Method[] businessMethods = methodInterceptors.keySet().toArray(new Method[methodInterceptors.size()]);
Method[] nonInterceptedMethods = interceptorInfo.getNonInterceptedMethods().toArray(new Method[interceptorInfo.getNonInterceptedMethods().size()]);
@@ -130,11 +134,28 @@ public class InterceptorProxyChainTest e
// for testing with the old proxies
//X proxyInstance = getInstance(ClassMultiInterceptedClass.class);
- //X performBenchmarkOn(proxyInstance);
+ //X this is for creating the NormalScoping Proxy which is now separate
+ proxyInstance = createNormalScopingProxy(classLoader, ClassMultiInterceptedClass.class, proxyInstance);
+
+ performBenchmarkOn(proxyInstance);
shutDownContainer();
}
+ private <T> T createNormalScopingProxy(ClassLoader classLoader, Class<T> clazz, T instance) throws ProxyGenerationException
+ {
+ NormalScopeProxyFactory pf = new NormalScopeProxyFactory();
+
+ List<Method> methods = ClassUtil.getNonPrivateMethods(clazz);
+
+ Method[] nonInterceptedMethods = methods.toArray(new Method[methods.size()]);
+
+ Class<T> proxyClass = pf.createProxyClass(classLoader, clazz, nonInterceptedMethods);
+ Assert.assertNotNull(proxyClass);
+
+ return pf.createProxyInstance(proxyClass, new TestRequestScopedInstanceProvider(instance));
+ }
+
private void performBenchmarkOn(ClassMultiInterceptedClass proxyInstance)
{
@@ -159,5 +180,23 @@ public class InterceptorProxyChainTest e
}
}
+ /**
+ * Test Provider for emulating a RequestScopedProxy
+ * @param <T>
+ */
+ public static class TestRequestScopedInstanceProvider<T> implements Provider<T>
+ {
+ private ThreadLocal<T> instance = new ThreadLocal<T>();
+
+ public TestRequestScopedInstanceProvider(T instance)
+ {
+ this.instance.set(instance);
+ }
+ @Override
+ public T get()
+ {
+ return instance.get();
+ }
+ }
}