[jboss-cvs] JBossAS SVN: r70065 - in projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3: stateful and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Feb 25 12:40:19 EST 2008


Author: bdecoste
Date: 2008-02-25 12:40:19 -0500 (Mon, 25 Feb 2008)
New Revision: 70065

Modified:
   projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/AnnotationRepositoryToMetaData.java
   projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/EJBContainer.java
   projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateful/StatefulInstanceInterceptor.java
Log:
implemented disableAnnotation(..)

Modified: projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/AnnotationRepositoryToMetaData.java
===================================================================
--- projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/AnnotationRepositoryToMetaData.java	2008-02-25 15:56:13 UTC (rev 70064)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/AnnotationRepositoryToMetaData.java	2008-02-25 17:40:19 UTC (rev 70065)
@@ -25,7 +25,9 @@
 import java.lang.reflect.Member;
 import java.util.Arrays;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
 
 import javassist.CtClass;
 import javassist.CtConstructor;
@@ -63,9 +65,13 @@
    /** The log */
    private static final Logger log = Logger.getLogger(AnnotationRepositoryToMetaData.class);
    
+   private static final String CLASS_ANNOTATION = "CLASS";
+   
    /** The metadata */
    private MetaData metaData;
    
+   protected ConcurrentHashMap<Object, Object> disabledAnnotations = new ConcurrentHashMap<Object, Object>();;
+   
    /** The mutable metadata */
    private MemoryMetaDataLoader mutableMetaData;
    
@@ -219,12 +225,26 @@
 
    public void disableAnnotation(Member m, String annotation)
    {
-      log.warn("Not implemented: disableAnnotation(" + m + ", " + annotation + ")");
+      ConcurrentHashMap<String, String> disabledClassAnnotations = (ConcurrentHashMap<String, String>)disabledAnnotations.get(m);
+      if (disabledClassAnnotations == null)
+      {
+         disabledClassAnnotations = new ConcurrentHashMap<String, String>();
+         disabledAnnotations.put(m, disabledClassAnnotations);
+      }
+      
+      disabledClassAnnotations.put(annotation, annotation);
    }
 
    public void disableAnnotation(String annotation)
    {
-      log.warn("Not implemented: disableAnnotation(" + annotation + ")");
+      ConcurrentHashMap<String, String> disabledClassAnnotations = (ConcurrentHashMap<String, String>)disabledAnnotations.get(CLASS_ANNOTATION);
+      if (disabledClassAnnotations == null)
+      {
+         disabledClassAnnotations = new ConcurrentHashMap<String, String>();
+         disabledAnnotations.put(CLASS_ANNOTATION, disabledClassAnnotations);
+      }
+      
+      disabledClassAnnotations.put(annotation, annotation);
    }
 
    public void enableAnnotation(String annotation)
@@ -290,16 +310,34 @@
 
    public boolean isDisabled(Class annotation)
    {
+      ConcurrentHashMap<String, String> disabledClassAnnotations = (ConcurrentHashMap<String, String>)disabledAnnotations.get(CLASS_ANNOTATION);
+      if (disabledClassAnnotations != null)
+      {
+         return disabledClassAnnotations.get(annotation.getName()) != null;
+      }
+      
       return false;
    }
 
    public boolean isDisabled(Member m, Class annotation)
    {
+      ConcurrentHashMap<String, String> disabledClassAnnotations = (ConcurrentHashMap<String, String>)disabledAnnotations.get(CLASS_ANNOTATION);
+      if (disabledClassAnnotations != null)
+      {
+         return disabledClassAnnotations.get(annotation.getName()) != null;
+      }
+      
       return false;
    }
 
    public boolean isDisabled(Member m, String annotation)
    {
+      ConcurrentHashMap<String, String> disabledClassAnnotations = (ConcurrentHashMap<String, String>)disabledAnnotations.get(CLASS_ANNOTATION);
+      if (disabledClassAnnotations != null)
+      {
+         return disabledClassAnnotations.get(annotation) != null;
+      }
+      
       return false;
    }
 

Modified: projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/EJBContainer.java
===================================================================
--- projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/EJBContainer.java	2008-02-25 15:56:13 UTC (rev 70064)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/EJBContainer.java	2008-02-25 17:40:19 UTC (rev 70065)
@@ -1128,6 +1128,9 @@
    @SuppressWarnings("unchecked")
    public <T extends Annotation> T getAnnotation(Class<T> annotationType)
    {
+      if (this.getAnnotations().isDisabled(annotationType))
+         return null;
+      
       return (T) resolveAnnotation(annotationType);
    }
    
@@ -1151,6 +1154,9 @@
    
    public <T extends Annotation> T getAnnotation(Class<T> annotationType, Method method)
    {
+      if (this.getAnnotations().isDisabled(method, annotationType))
+         return null;
+      
       return (T) resolveAnnotation(method, annotationType);
    }
 

Modified: projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateful/StatefulInstanceInterceptor.java
===================================================================
--- projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateful/StatefulInstanceInterceptor.java	2008-02-25 15:56:13 UTC (rev 70064)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateful/StatefulInstanceInterceptor.java	2008-02-25 17:40:19 UTC (rev 70065)
@@ -62,8 +62,8 @@
       StatefulContainer container = (StatefulContainer) ejb.getAdvisor();
       StatefulBeanContext target = container.getCache().get(id);
 
-      boolean block = container.resolveAnnotation(SerializedConcurrentAccess.class) != null;
-
+      boolean block = container.getAnnotation(SerializedConcurrentAccess.class) != null;
+      
       if (block)
       {
          target.getLock().lockInterruptibly();




More information about the jboss-cvs-commits mailing list