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("]");