You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by co...@apache.org on 2010/09/10 20:23:45 UTC
svn commit: r995920 - in
/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans:
context/creational/EjbInterceptorContext.java
intercept/InterceptorDataImpl.java
Author: covener
Date: Fri Sep 10 18:23:44 2010
New Revision: 995920
URL: http://svn.apache.org/viewvc?rev=995920&view=rev
Log:
[OWB-318] Beans with multiple method-level @Interceptors don't use the same intereptor instances
due to incorrect key into EJBInterceptorContext map.
Submitted By: Rohit Kelapure
Reviewed By: Eric Covener
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/creational/EjbInterceptorContext.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorDataImpl.java
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/creational/EjbInterceptorContext.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/creational/EjbInterceptorContext.java?rev=995920&r1=995919&r2=995920&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/creational/EjbInterceptorContext.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/creational/EjbInterceptorContext.java Fri Sep 10 18:23:44 2010
@@ -84,5 +84,12 @@ public class EjbInterceptorContext imple
{
this.injectorInstance = injectorInstance;
}
-
+
+ @Override
+ public String toString()
+ {
+ return "EjbInterceptorContext [interceptorClass=" + interceptorClass
+ + ", interceptorInstance=" + interceptorInstance
+ + ", injectorInstance=" + injectorInstance + "]";
+ }
}
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorDataImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorDataImpl.java?rev=995920&r1=995919&r2=995920&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorDataImpl.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorDataImpl.java Fri Sep 10 18:23:44 2010
@@ -300,6 +300,13 @@ public class InterceptorDataImpl impleme
@SuppressWarnings("unchecked")
public Object createNewInstance(Object ownerInstance, CreationalContextImpl<?> ownerCreationalContext)
{
+ if (logger.wblWillLogDebug())
+ {
+ logger.debug("> " + ownerInstance + " " + ownerCreationalContext + " " + this);
+ logger.debug("isDefinedWithWebBeansInterceptor " + isDefinedWithWebBeansInterceptor);
+ logger.debug("definedInInterceptorClass " + definedInInterceptorClass);
+ }
+
// check for this InterceptorData is defined by interceptor class
if (this.isDefinedWithWebBeansInterceptor && this.definedInInterceptorClass)
{
@@ -308,6 +315,11 @@ public class InterceptorDataImpl impleme
// Means that it is the last interceptor added by InterceptorHandler
if (this.webBeansInterceptor == null)
{
+ if (logger.wblWillLogDebug())
+ {
+ logger.debug("< " + decoratorInterceptor);
+ }
+
return this.decoratorInterceptor;
}
@@ -325,6 +337,10 @@ public class InterceptorDataImpl impleme
ownerCreationalContext.addDependent(ownerInstance, (WebBeansInterceptor<Object>) this.webBeansInterceptor, interceptor);
}
+ if (logger.wblWillLogDebug())
+ {
+ logger.debug("< " + interceptor);
+ }
return interceptor;
}
@@ -335,9 +351,19 @@ public class InterceptorDataImpl impleme
if (this.definedInInterceptorClass)
{
ctx = ownerCreationalContext.getEjbInterceptor(ownerInstance, this.interceptorClass);
+ if (logger.wblWillLogDebug())
+ {
+ logger.debug("EjbInterceptor Context " + ctx);
+ }
+
if (ctx == null)
{
interceptor = WebBeansUtil.newInstanceForced(this.interceptorClass);
+ if (logger.wblWillLogDebug())
+ {
+ logger.debug("EjbInterceptor newInstanceForced " + interceptor);
+ }
+
try
{
OWBInjector injector = new OWBInjector();
@@ -346,19 +372,29 @@ public class InterceptorDataImpl impleme
ctx = new EjbInterceptorContext();
ctx.setInjectorInstance(injector);
ctx.setInterceptorInstance(interceptor);
+ ctx.setInterceptorClass(interceptorClass);
}
catch (Exception e)
{
logger.error(OWBLogConst.ERROR_0022, e, interceptorClass);
}
- ownerCreationalContext.addEjbInterceptor(interceptorClass, ctx);
+ ownerCreationalContext.addEjbInterceptor(ownerInstance, ctx);
}
else
{
interceptor = ctx.getInterceptorInstance();
+ if (logger.wblWillLogDebug())
+ {
+ logger.debug("EjbInterceptor existing " + interceptor);
+ }
+
}
}
+ if (logger.wblWillLogDebug())
+ {
+ logger.debug("< " + interceptor);
+ }
return interceptor;
}
@@ -367,7 +403,10 @@ public class InterceptorDataImpl impleme
public String toString()
{
StringBuilder sb = new StringBuilder();
- sb.append("Class: [").append(webBeansInterceptor.getBeanClass()).append("]");
+ if (null != webBeansInterceptor)
+ {
+ sb.append("Class: [").append(webBeansInterceptor.getBeanClass()).append("]");
+ }
sb.append(" aroundInvoke [").append(aroundInvoke).append("]");
sb.append(" postConstruct [").append(postConstruct).append("]");
sb.append(" preDestroy [").append(preDestroy).append("]");