Author: struberg
Date: Fri Jul 23 01:14:02 2010
New Revision: 966923
URL: http://svn.apache.org/viewvc?rev=966923&view=rev
Log:
OWB-414 improve Interceptor performance
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/ContextFactory.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorHandler.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/NormalScopedBeanInterceptorHandler.java
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/ContextFactory.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/ContextFactory.java?rev=966923&r1=966922&r2=966923&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/ContextFactory.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/ContextFactory.java
Fri Jul 23 01:14:02 2010
@@ -253,35 +253,32 @@ public final class ContextFactory
*/
public static Context getStandardContext(Class<? extends Annotation>
scopeType)
{
- Context context = null;
-
if (scopeType.equals(RequestScoped.class))
{
- context = getStandardContext(ContextTypes.REQUEST);
+ return getStandardContext(ContextTypes.REQUEST);
}
- else if (scopeType.equals(SessionScoped.class))
+ if (scopeType.equals(SessionScoped.class))
{
- context = getStandardContext(ContextTypes.SESSION);
+ return getStandardContext(ContextTypes.SESSION);
}
- else if (scopeType.equals(ApplicationScoped.class))
+ if (scopeType.equals(ApplicationScoped.class))
{
- context = getStandardContext(ContextTypes.APPLICATION);
+ return getStandardContext(ContextTypes.APPLICATION);
}
- else if (scopeType.equals(ConversationScoped.class))
+ if (scopeType.equals(ConversationScoped.class))
{
- context = getStandardContext(ContextTypes.CONVERSATION);
-
+ return getStandardContext(ContextTypes.CONVERSATION);
}
- else if (scopeType.equals(Dependent.class))
+ if (scopeType.equals(Dependent.class))
{
- context = getStandardContext(ContextTypes.DEPENDENT);
+ return getStandardContext(ContextTypes.DEPENDENT);
}
- else if (scopeType.equals(Singleton.class))
+ if (scopeType.equals(Singleton.class))
{
- context = getStandardContext(ContextTypes.SINGLETON);
+ return getStandardContext(ContextTypes.SINGLETON);
}
- return context;
+ return null;
}
/**
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=966923&r1=966922&r2=966923&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 Jul 23 01:14:02 2010
@@ -148,7 +148,7 @@ public abstract class InterceptorHandler
protected OwbBean<?> bean = null;
/**Intercepted methods*/
- protected transient Map<Method, List<InterceptorData>>
interceptedMethodMap = new WeakHashMap<Method, List<InterceptorData>>();
+ protected transient Map<Method, List<InterceptorData>>
interceptedMethodMap = null;
/**
* Creates a new handler.
@@ -224,6 +224,12 @@ public abstract class InterceptorHandler
List<InterceptorData> interceptorStack =
injectionTarget.getInterceptorStack();
if (interceptorStack.size() > 0)
{
+ if (this.interceptedMethodMap == null)
+ {
+ // lazy initialisation, because creating a
WeakHashMap is expensive!
+ this.interceptedMethodMap = new
WeakHashMap<Method, List<InterceptorData>>();
+ }
+
if (decorators != null)
{
// We have interceptors and decorators, Our
delegateHandler will need to be wrapped in an interceptor
@@ -362,9 +368,6 @@ public abstract class InterceptorHandler
{
logger.warn(OWBLogConst.WARN_0011, this.bean);
}
-
- // restore transient interceptorMethodMap
- interceptedMethodMap = new WeakHashMap<Method,
List<InterceptorData>>();
}
}
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/NormalScopedBeanInterceptorHandler.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/NormalScopedBeanInterceptorHandler.java?rev=966923&r1=966922&r2=966923&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/NormalScopedBeanInterceptorHandler.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/NormalScopedBeanInterceptorHandler.java
Fri Jul 23 01:14:02 2010
@@ -43,6 +43,7 @@ public class NormalScopedBeanInterceptor
{
/**Serial id*/
private static final long serialVersionUID = 1L;
+ private static final String FINALIZE = "finalize".intern();
/**
* Creates a new bean instance
@@ -80,9 +81,9 @@ public class NormalScopedBeanInterceptor
@Override
public Object invoke(Object instance, Method method, Method proceed,
Object[] arguments) throws Exception
{
- if (method.getName().equals("finalize") &&
+ if (method.getName() == FINALIZE && // Method.getName() is defined
to return .intern() in the VM spec.
method.getParameterTypes().length == 0 &&
- method.getReturnType().equals(Void.TYPE))
+ method.getReturnType() == Void.TYPE)
{
// we should NOT invoke the bean's finalize() from proxied
// finalize() method since JVM will invoke it directly.