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 13:15:54 UTC
svn commit: r1433368 - in /openwebbeans/trunk/webbeans-impl/src:
main/java/org/apache/webbeans/component/
test/java/org/apache/webbeans/newtests/interceptors/factory/beans/
test/java/org/apache/webbeans/newtests/interceptors/resolution/
test/java/org/a...
Author: struberg
Date: Tue Jan 15 12:15:54 2013
New Revision: 1433368
URL: http://svn.apache.org/viewvc?rev=1433368&view=rev
Log:
OWB-344 add performance benchmark
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InterceptorBean.java
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/factory/beans/ClassMultiInterceptedClass.java
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/resolution/InterceptorProxyChainTest.java
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/intercept/webbeans/ActionInterceptor.java
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/intercept/webbeans/TransactionalInterceptor.java
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InterceptorBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InterceptorBean.java?rev=1433368&r1=1433367&r2=1433368&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InterceptorBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InterceptorBean.java Tue Jan 15 12:15:54 2013
@@ -56,6 +56,11 @@ public abstract class InterceptorBean<T>
*/
private Map<InterceptionType, Method[]> interceptionMethods;
+ /**
+ * This is for performance reasons
+ */
+ private Method aroundInvokeMethod = null;
+
public InterceptorBean(WebBeansContext webBeansContext,
AnnotatedType<T> annotatedType,
Set<Type> types,
@@ -71,6 +76,17 @@ public abstract class InterceptorBean<T>
beanClass,
Collections.<Class<? extends Annotation>>emptySet());
this.interceptionMethods = Collections.unmodifiableMap(interceptionMethods);
+
+ // extract the aroundInvokeMethod if any
+ Method[] aroundInvokeMethods = interceptionMethods.get(InterceptionType.AROUND_INVOKE);
+ if (aroundInvokeMethods != null && aroundInvokeMethods.length == 1)
+ {
+ aroundInvokeMethod = aroundInvokeMethods[0];
+ if (!aroundInvokeMethod.isAccessible())
+ {
+ aroundInvokeMethod.setAccessible(true);
+ }
+ }
}
@Override
@@ -136,6 +152,11 @@ public abstract class InterceptorBean<T>
{
try
{
+ if (InterceptionType.AROUND_INVOKE == interceptionType && aroundInvokeMethod != null)
+ {
+ return aroundInvokeMethod.invoke(instance, invocationContext);
+ }
+
Method[] interceptorMethods = getInterceptorMethods(interceptionType);
if (interceptorMethods.length == 1)
{
Modified: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/factory/beans/ClassMultiInterceptedClass.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/factory/beans/ClassMultiInterceptedClass.java?rev=1433368&r1=1433367&r2=1433368&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/factory/beans/ClassMultiInterceptedClass.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/factory/beans/ClassMultiInterceptedClass.java Tue Jan 15 12:15:54 2013
@@ -20,6 +20,7 @@ package org.apache.webbeans.newtests.int
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
+import javax.enterprise.context.RequestScoped;
import org.apache.webbeans.test.component.intercept.webbeans.bindings.Action;
import org.apache.webbeans.test.component.intercept.webbeans.bindings.Secure;
@@ -31,6 +32,7 @@ import org.apache.webbeans.test.componen
@Transactional
@Action
@Secure
+@RequestScoped
public class ClassMultiInterceptedClass
{
private boolean defaultCtInvoked = false;
@@ -64,8 +66,8 @@ public class ClassMultiInterceptedClass
public int getMeaningOfLife()
{
- System.out.println("answering the question about life, the universe and everything!");
- System.out.println("and being in " + this.getClass());
+ //X System.out.println("answering the question about life, the universe and everything!");
+ //X System.out.println("and being in " + this.getClass());
return meaningOfLife;
}
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=1433368&r1=1433367&r2=1433368&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 12:15:54 2013
@@ -127,8 +127,37 @@ public class InterceptorProxyChainTest e
proxyInstance.setMeaningOfLife(42);
Assert.assertEquals(42, proxyInstance.getMeaningOfLife());
+ // for testing with the old proxies
+ //X proxyInstance = getInstance(ClassMultiInterceptedClass.class);
+
+ //X performBenchmarkOn(proxyInstance);
+
shutDownContainer();
}
+ private void performBenchmarkOn(ClassMultiInterceptedClass proxyInstance)
+ {
+
+ // warmup
+ action(proxyInstance, 1000);
+
+ System.out.println("Starting the real bench");
+ long start = System.nanoTime();
+ action(proxyInstance, 10000000);
+ long end = System.nanoTime();
+ System.out.println("took: " + (end - start)/1000);
+ }
+
+ private void action(ClassMultiInterceptedClass proxyInstance, int counter)
+ {
+ for (int i=0; i < counter; i++) {
+ proxyInstance.getChar();
+ proxyInstance.getFloat();
+ proxyInstance.setMeaningOfLife(42);
+ proxyInstance.getMeaningOfLife();
+ proxyInstance.getSelf();
+ }
+ }
+
}
Modified: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/intercept/webbeans/ActionInterceptor.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/intercept/webbeans/ActionInterceptor.java?rev=1433368&r1=1433367&r2=1433368&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/intercept/webbeans/ActionInterceptor.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/intercept/webbeans/ActionInterceptor.java Tue Jan 15 12:15:54 2013
@@ -36,7 +36,6 @@ public class ActionInterceptor
@AroundInvoke
public Object call(InvocationContext context) throws Exception
{
- System.out.println("Call Action ArondInvoke");
WInterceptorComponent.sWithMeta = 10;
WMetaInterceptorComponent.sWithMeta = 10;
return context.proceed();
Modified: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/intercept/webbeans/TransactionalInterceptor.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/intercept/webbeans/TransactionalInterceptor.java?rev=1433368&r1=1433367&r2=1433368&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/intercept/webbeans/TransactionalInterceptor.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/intercept/webbeans/TransactionalInterceptor.java Tue Jan 15 12:15:54 2013
@@ -37,7 +37,8 @@ public class TransactionalInterceptor
ShoppingCard.CALLED = true;
return context.proceed();
- }catch(Exception e)
+ }
+ catch(Exception e)
{
ShoppingCard.CALLED = false;
}