[jboss-cvs] JBossAS SVN: r69840 - projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Feb 14 10:45:19 EST 2008


Author: alesj
Date: 2008-02-14 10:45:18 -0500 (Thu, 14 Feb 2008)
New Revision: 69840

Modified:
   projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/AbstractBeanAnnotationAdapter.java
Log:
Adding remove annotation plugin.

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/AbstractBeanAnnotationAdapter.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/AbstractBeanAnnotationAdapter.java	2008-02-14 12:49:29 UTC (rev 69839)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/annotations/AbstractBeanAnnotationAdapter.java	2008-02-14 15:45:18 UTC (rev 69840)
@@ -21,30 +21,30 @@
 */
 package org.jboss.kernel.plugins.annotations;
 
-import java.util.Set;
-import java.util.HashSet;
 import java.lang.annotation.Annotation;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
-import java.lang.annotation.Retention;
-import java.lang.annotation.ElementType;
+import java.util.HashSet;
+import java.util.Set;
 
-import org.jboss.logging.Logger;
-import org.jboss.beans.metadata.spi.MetaDataVisitor;
 import org.jboss.beans.info.spi.BeanInfo;
 import org.jboss.beans.info.spi.PropertyInfo;
+import org.jboss.beans.metadata.spi.MetaDataVisitor;
+import org.jboss.kernel.Kernel;
+import org.jboss.kernel.plugins.config.Configurator;
 import org.jboss.kernel.spi.dependency.KernelControllerContext;
 import org.jboss.kernel.spi.metadata.KernelMetaDataRepository;
-import org.jboss.kernel.Kernel;
-import org.jboss.kernel.plugins.config.Configurator;
+import org.jboss.logging.Logger;
 import org.jboss.metadata.spi.MetaData;
-import org.jboss.metadata.spi.signature.Signature;
 import org.jboss.metadata.spi.signature.ConstructorSignature;
+import org.jboss.metadata.spi.signature.FieldSignature;
 import org.jboss.metadata.spi.signature.MethodSignature;
-import org.jboss.metadata.spi.signature.FieldSignature;
+import org.jboss.metadata.spi.signature.Signature;
 import org.jboss.reflect.spi.ClassInfo;
 import org.jboss.reflect.spi.ConstructorInfo;
+import org.jboss.reflect.spi.FieldInfo;
 import org.jboss.reflect.spi.MethodInfo;
-import org.jboss.reflect.spi.FieldInfo;
 
 /**
  * Abstract bean annotation handler.
@@ -69,7 +69,7 @@
     *
     * @param plugin the annotation plugin
     */
-   protected void addAnnotationPlugin(AnnotationPlugin plugin)
+   public void addAnnotationPlugin(AnnotationPlugin plugin)
    {
       if (plugin == null)
          throw new IllegalArgumentException("Null plugin.");
@@ -108,6 +108,42 @@
       }
    }
 
+   /**
+    * Remove the plugin.
+    * TODO - test it
+    *
+    * @param plugin the annotation plugin
+    */
+   public void removeAnnotationPlugin(AnnotationPlugin plugin)
+   {
+      if (plugin == null)
+         return;
+
+      Set supported = plugin.getSupportedTypes();
+      if (supported == null || supported.isEmpty())
+         throw new IllegalArgumentException("Null or empty support types: " + plugin);
+
+      if (supported.contains(ElementType.TYPE))
+      {
+         classAnnotationPlugins.remove(plugin);
+      }
+      if (supported.contains(ElementType.CONSTRUCTOR))
+      {
+         constructorAnnotationPlugins.remove(plugin);
+      }
+      if (supported.contains(ElementType.METHOD))
+      {
+         if (plugin instanceof PropertyAware)
+            propertyAnnotationPlugins.remove(plugin);
+         else
+            methodAnnotationPlugins.remove(plugin);
+      }
+      if (supported.contains(ElementType.FIELD))
+      {
+         fieldAnnotationPlugins.remove(plugin);
+      }
+   }
+
    public void applyAnnotations(MetaDataVisitor visitor) throws Throwable
    {
       handleAnnotations(visitor, true);




More information about the jboss-cvs-commits mailing list