You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by ge...@apache.org on 2010/03/19 22:11:19 UTC
svn commit: r925421 - in /openwebbeans/trunk/webbeans-impl/src:
main/java/org/apache/webbeans/intercept/
test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/
test/java/org/apache/webbeans/newtests/decorators/multiple/
test/java/org/apach...
Author: gerdogdu
Date: Fri Mar 19 21:11:18 2010
New Revision: 925421
URL: http://svn.apache.org/viewvc?rev=925421&view=rev
Log:
[OWB-331] Cache Interceptor & Decorator Stack oon Interceptor Handler, also renaming some tests
Added:
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/Alternative1Test.java
- copied, changed from r925397, openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/AlternativeTest1.java
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/Alternative2Test.java
- copied, changed from r925397, openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/AlternativeTest2.java
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/Alternative3Test.java
- copied, changed from r925397, openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/AlternativeTest3.java
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/Alternative4Test.java
- copied, changed from r925397, openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/AlternativeTest4.java
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/Alternative5Test.java
- copied, changed from r925397, openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/AlternativeTest5.java
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/decorator/Decorator1Test.java
- copied, changed from r925397, openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/decorator/DecoratorTest1.java
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/inject/InjectedComponentWithMemberTest.java
- copied, changed from r925397, openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/inject/InjectedComponentTestWithMember.java
Removed:
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/AlternativeTest1.java
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/AlternativeTest2.java
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/AlternativeTest3.java
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/AlternativeTest4.java
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/AlternativeTest5.java
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/decorator/DecoratorTest1.java
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/inject/InjectedComponentTestWithMember.java
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorHandler.java
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/decorators/multiple/Decorator1.java
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/decorators/multiple/Decorator2.java
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorHandler.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorHandler.java?rev=925421&r1=925420&r2=925421&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorHandler.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorHandler.java Fri Mar 19 21:11:18 2010
@@ -22,6 +22,8 @@ import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
+import java.util.WeakHashMap;
import javassist.util.proxy.MethodHandler;
import javassist.util.proxy.ProxyFactory;
@@ -145,6 +147,15 @@ public abstract class InterceptorHandler
/**Proxied bean*/
protected OwbBean<?> bean = null;
+
+ /**Intercepted methods*/
+ protected transient Map<Method, List<InterceptorData>> interceptedMethodMap = new WeakHashMap<Method, List<InterceptorData>>();
+
+ /**Bean decorator objects*/
+ protected transient List<Object> decorators = null;
+
+ /**Delegate handler*/
+ protected transient DelegateHandler delegateHandler;
/**
* Creates a new handler.
@@ -181,10 +192,9 @@ public abstract class InterceptorHandler
&& InterceptorUtil.isWebBeansBusinessMethod(method))
{
- DelegateHandler delegateHandler = null;
List<Object> decorators = null;
- if (injectionTarget.getDecoratorStack().size() > 0)
+ if (injectionTarget.getDecoratorStack().size() > 0 && this.decorators == null)
{
Class<?> proxyClass = JavassistProxyFactory.getInterceptorProxyClasses().get(bean);
if (proxyClass == null)
@@ -194,47 +204,55 @@ public abstract class InterceptorHandler
JavassistProxyFactory.getInterceptorProxyClasses().put(bean, proxyClass);
}
Object delegate = proxyClass.newInstance();
- delegateHandler = new DelegateHandler();
- ((ProxyObject)delegate).setHandler(delegateHandler);
+ this.delegateHandler = new DelegateHandler();
+ ((ProxyObject)delegate).setHandler(this.delegateHandler);
// Gets component decorator stack
decorators = WebBeansDecoratorConfig.getDecoratorStack(injectionTarget, instance, delegate, ownerCreationalContext);
//Sets decorator stack of delegate
- delegateHandler.setDecorators(decorators);
+ this.delegateHandler.setDecorators(decorators);
+
+ this.decorators = decorators;
}
// Run around invoke chain
List<InterceptorData> interceptorStack = injectionTarget.getInterceptorStack();
if (interceptorStack.size() > 0)
{
- //Holds filtered interceptor stack
- List<InterceptorData> filteredInterceptorStack = new ArrayList<InterceptorData>(interceptorStack);
-
- // Filter both EJB and WebBeans interceptors
- filterCommonInterceptorStackList(filteredInterceptorStack, method, ownerCreationalContext);
-
- // If there are both interceptors and decorators, add hook
- // point to the end of the interceptor stack.
- if (decorators != null && filteredInterceptorStack.size() > 0)
+ if(this.interceptedMethodMap.get(method) == null)
{
- WebBeansDecoratorInterceptor lastInterceptor = new WebBeansDecoratorInterceptor(delegateHandler, instance);
- InterceptorDataImpl data = new InterceptorDataImpl(true,lastInterceptor);
- data.setDefinedInInterceptorClass(true);
- data.setAroundInvoke(lastInterceptor.getClass().getDeclaredMethods()[0]);
- //Add to last
- filteredInterceptorStack.add(data);
- }
-
+ //Holds filtered interceptor stack
+ List<InterceptorData> filteredInterceptorStack = new ArrayList<InterceptorData>(interceptorStack);
+
+ // Filter both EJB and WebBeans interceptors
+ filterCommonInterceptorStackList(filteredInterceptorStack, method, ownerCreationalContext);
+
+ // If there are both interceptors and decorators, add hook
+ // point to the end of the interceptor stack.
+ if (decorators != null && filteredInterceptorStack.size() > 0)
+ {
+ WebBeansDecoratorInterceptor lastInterceptor = new WebBeansDecoratorInterceptor(delegateHandler, instance);
+ InterceptorDataImpl data = new InterceptorDataImpl(true,lastInterceptor);
+ data.setDefinedInInterceptorClass(true);
+ data.setAroundInvoke(lastInterceptor.getClass().getDeclaredMethods()[0]);
+ //Add to last
+ filteredInterceptorStack.add(data);
+ }
+
+ this.interceptedMethodMap.put(method, filteredInterceptorStack);
+ }
+
// Call Around Invokes
- if (WebBeansUtil.isContainsInterceptorMethod(filteredInterceptorStack, InterceptorType.AROUND_INVOKE))
+ if (WebBeansUtil.isContainsInterceptorMethod(this.interceptedMethodMap.get(method), InterceptorType.AROUND_INVOKE))
{
- return callAroundInvokes(method, arguments, WebBeansUtil.getInterceptorMethods(filteredInterceptorStack, InterceptorType.AROUND_INVOKE));
+ return callAroundInvokes(method, arguments, WebBeansUtil.getInterceptorMethods(this.interceptedMethodMap.get(method), InterceptorType.AROUND_INVOKE));
}
+
}
// If there are Decorators, allow the delegate handler to
// manage the stack
- if (decorators != null)
+ if (this.decorators != null)
{
return delegateHandler.invoke(instance, method, proceed, arguments);
}
Copied: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/Alternative1Test.java (from r925397, openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/AlternativeTest1.java)
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/Alternative1Test.java?p2=openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/Alternative1Test.java&p1=openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/AlternativeTest1.java&r1=925397&r2=925421&rev=925421&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/AlternativeTest1.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/Alternative1Test.java Fri Mar 19 21:11:18 2010
@@ -37,7 +37,7 @@ import org.apache.webbeans.newtests.conc
import org.apache.webbeans.newtests.concepts.alternatives.common.QualifierProducerBased;
import org.junit.Test;
-public class AlternativeTest1 extends AbstractUnitTest {
+public class Alternative1Test extends AbstractUnitTest {
@Test
@SuppressWarnings("unchecked")
Copied: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/Alternative2Test.java (from r925397, openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/AlternativeTest2.java)
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/Alternative2Test.java?p2=openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/Alternative2Test.java&p1=openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/AlternativeTest2.java&r1=925397&r2=925421&rev=925421&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/AlternativeTest2.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/Alternative2Test.java Fri Mar 19 21:11:18 2010
@@ -37,7 +37,7 @@ import org.apache.webbeans.newtests.conc
import org.apache.webbeans.newtests.concepts.alternatives.common.QualifierProducerBased;
import org.junit.Test;
-public class AlternativeTest2 extends AbstractUnitTest {
+public class Alternative2Test extends AbstractUnitTest {
@Test
@SuppressWarnings("unchecked")
Copied: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/Alternative3Test.java (from r925397, openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/AlternativeTest3.java)
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/Alternative3Test.java?p2=openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/Alternative3Test.java&p1=openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/AlternativeTest3.java&r1=925397&r2=925421&rev=925421&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/AlternativeTest3.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/Alternative3Test.java Fri Mar 19 21:11:18 2010
@@ -37,7 +37,7 @@ import org.apache.webbeans.newtests.conc
import org.apache.webbeans.newtests.concepts.alternatives.common.QualifierProducerBased;
import org.junit.Test;
-public class AlternativeTest3 extends AbstractUnitTest {
+public class Alternative3Test extends AbstractUnitTest {
@Test
@SuppressWarnings("unchecked")
Copied: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/Alternative4Test.java (from r925397, openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/AlternativeTest4.java)
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/Alternative4Test.java?p2=openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/Alternative4Test.java&p1=openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/AlternativeTest4.java&r1=925397&r2=925421&rev=925421&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/AlternativeTest4.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/Alternative4Test.java Fri Mar 19 21:11:18 2010
@@ -38,7 +38,7 @@ import org.apache.webbeans.newtests.conc
import org.apache.webbeans.newtests.concepts.alternatives.common.QualifierProducerBased;
import org.junit.Test;
-public class AlternativeTest4 extends AbstractUnitTest {
+public class Alternative4Test extends AbstractUnitTest {
@Test
@SuppressWarnings("unchecked")
Copied: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/Alternative5Test.java (from r925397, openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/AlternativeTest5.java)
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/Alternative5Test.java?p2=openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/Alternative5Test.java&p1=openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/AlternativeTest5.java&r1=925397&r2=925421&rev=925421&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/AlternativeTest5.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/alternatives/tests/Alternative5Test.java Fri Mar 19 21:11:18 2010
@@ -38,9 +38,9 @@ import org.apache.webbeans.newtests.conc
import org.apache.webbeans.newtests.concepts.alternatives.common.QualifierProducerBased;
import org.junit.Test;
-public class AlternativeTest5 extends AbstractUnitTest {
+public class Alternative5Test extends AbstractUnitTest {
- private static final String PACKAGE_NAME = AlternativeTest5.class.getPackage().getName();
+ private static final String PACKAGE_NAME = Alternative5Test.class.getPackage().getName();
@Test
@SuppressWarnings("unchecked")
Modified: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/decorators/multiple/Decorator1.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/decorators/multiple/Decorator1.java?rev=925421&r1=925420&r2=925421&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/decorators/multiple/Decorator1.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/decorators/multiple/Decorator1.java Fri Mar 19 21:11:18 2010
@@ -22,12 +22,9 @@ import javax.inject.Inject;
public class Decorator1 implements IOutputProvider
{
- @Inject
- @Delegate
- @Any
- IOutputProvider op;
- @Inject
- RequestStringBuilder rsb;
+ @Inject @Delegate @Any IOutputProvider op;
+
+ @Inject RequestStringBuilder rsb;
public String getOutput()
{
Modified: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/decorators/multiple/Decorator2.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/decorators/multiple/Decorator2.java?rev=925421&r1=925420&r2=925421&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/decorators/multiple/Decorator2.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/decorators/multiple/Decorator2.java Fri Mar 19 21:11:18 2010
@@ -23,16 +23,8 @@ import javax.inject.Named;
@Decorator
public class Decorator2 implements IOutputProvider
{
-
- @Inject
- @Delegate
- @Default
- @Any
- @Named
- IOutputProvider op;
- @Inject
- @Default
- RequestStringBuilder rsb;
+ @Inject @Delegate @Default @Any @Named IOutputProvider op;
+ @Inject @Default RequestStringBuilder rsb;
public String getOutput()
{
Copied: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/decorator/Decorator1Test.java (from r925397, openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/decorator/DecoratorTest1.java)
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/decorator/Decorator1Test.java?p2=openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/decorator/Decorator1Test.java&p1=openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/decorator/DecoratorTest1.java&r1=925397&r2=925421&rev=925421&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/decorator/DecoratorTest1.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/decorator/Decorator1Test.java Fri Mar 19 21:11:18 2010
@@ -39,12 +39,12 @@ import org.apache.webbeans.test.componen
import org.junit.Before;
import org.junit.Test;
-public class DecoratorTest1 extends TestContext
+public class Decorator1Test extends TestContext
{
- public DecoratorTest1()
+ public Decorator1Test()
{
- super(DecoratorTest1.class.getName());
+ super(Decorator1Test.class.getName());
}
@Before
Copied: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/inject/InjectedComponentWithMemberTest.java (from r925397, openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/inject/InjectedComponentTestWithMember.java)
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/inject/InjectedComponentWithMemberTest.java?p2=openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/inject/InjectedComponentWithMemberTest.java&p1=openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/inject/InjectedComponentTestWithMember.java&r1=925397&r2=925421&rev=925421&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/inject/InjectedComponentTestWithMember.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/inject/InjectedComponentWithMemberTest.java Fri Mar 19 21:11:18 2010
@@ -28,13 +28,13 @@ import org.apache.webbeans.test.componen
import org.junit.Before;
import org.junit.Test;
-public class InjectedComponentTestWithMember extends TestContext
+public class InjectedComponentWithMemberTest extends TestContext
{
BeanManager container = null;
- public InjectedComponentTestWithMember()
+ public InjectedComponentWithMemberTest()
{
- super(InjectedComponentTestWithMember.class.getSimpleName());
+ super(InjectedComponentWithMemberTest.class.getSimpleName());
}
@Before