[jboss-cvs] JBossCache/src-50/org/jboss/cache/pojo/interceptors ...

Ben Wang bwang at jboss.com
Thu Nov 9 11:53:28 EST 2006


  User: bwang   
  Date: 06/11/09 11:53:28

  Modified:    src-50/org/jboss/cache/pojo/interceptors 
                        MethodReentrancyStopperInterceptor.java
  Log:
  Added detection for Collection hashCode recursion.
  
  Revision  Changes    Path
  1.2       +21 -3     JBossCache/src-50/org/jboss/cache/pojo/interceptors/MethodReentrancyStopperInterceptor.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: MethodReentrancyStopperInterceptor.java
  ===================================================================
  RCS file: /cvsroot/jboss/JBossCache/src-50/org/jboss/cache/pojo/interceptors/MethodReentrancyStopperInterceptor.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -b -r1.1 -r1.2
  --- MethodReentrancyStopperInterceptor.java	2 Aug 2006 10:28:41 -0000	1.1
  +++ MethodReentrancyStopperInterceptor.java	9 Nov 2006 16:53:28 -0000	1.2
  @@ -23,7 +23,8 @@
   public class MethodReentrancyStopperInterceptor implements Interceptor
   {
      private final Log log_ = LogFactory.getLog(MethodReentrancyStopperInterceptor.class);
  -   ThreadLocal<Boolean> done;
  +   private ThreadLocal<Boolean> done;
  +   private String methodName;
   
      public MethodReentrancyStopperInterceptor()
      {
  @@ -31,9 +32,14 @@
         done.set(false);
      }
   
  +   public void setMethodName(String mname)
  +   {
  +      methodName = mname;
  +   }
  +
      public String getName()
      {
  -      return MethodReentrancyStopperInterceptor.class.getName();
  +      return MethodReentrancyStopperInterceptor.class.getName() + "-" +methodName;
      }
   
      public Object invoke(Invocation invocation) throws Throwable
  @@ -54,7 +60,19 @@
                  Method method = ((MethodInvocation)invocation).getMethod();
                  log_.debug("Detect recursive interception. Will call the target directly: " +method.getName());
               }
  +
  +            if(methodName.equals("toString"))
  +            {
               return invocation.getTargetObject().getClass().getName();
  +            } else
  +            if(methodName.equals("hashCode"))
  +            {
  +               return 0;
  +            } else
  +            {
  +               throw new RuntimeException("MethodReentrancyStopperInterceptor.invoke(): unknown method name"
  +                       +methodName);
  +            }
            }
         }
         finally
  
  
  



More information about the jboss-cvs-commits mailing list