[jboss-cvs] JBossAS SVN: r97114 - in projects/kernel/trunk/kernel/src: test/java/org/jboss/test/kernel/annotations/test/wb and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Nov 27 11:53:46 EST 2009


Author: kabir.khan at jboss.com
Date: 2009-11-27 11:53:45 -0500 (Fri, 27 Nov 2009)
New Revision: 97114

Modified:
   projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/AbstractAdaptersAnnotationPlugin.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/AbstractAnnotationPlugin.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/AbstractConstructorParameterAnnotationPlugin.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/AbstractMetaDataAnnotationAdapter.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/AbstractMethodParameterAnnotationPlugin.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/AbstractParameterAnnotationPlugin.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/AliasMetaDataAnnotationPlugin.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/AnnotationPlugin.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/ArrayValueAnnotationPlugin.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/BasicBeanAnnotationAdapter.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/BasicBeanMetaDataAnnotationAdapter.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/BeanAnnotationPlugin.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/ClassFactoryAnnotationPlugin.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/CollectionValueAnnotationPlugin.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/CommonAnnotationAdapter.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/ConstructorParameterAnnotationPlugin.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/CreateLifecycleAnnotationPlugin.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/DestroyLifecycleAnnotationPlugin.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/ExternalInstallAnnotationPlugin.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/FactoryMethodAnnotationPlugin.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/InstallCallbackAnnotationPlugin.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/InstallMethodParameterAnnotationPlugin.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/InstallationParameterAnnotationPlugin.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/JavaBeanValueAnnotationPlugin.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/LifecycleParameterAnnotationPlugin.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/ListValueAnnotationPlugin.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/MapValueAnnotationPlugin.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/MethodInstallCallbackAnnotationPlugin.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/MethodUninstallCallbackAnnotationPlugin.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/NullValueAnnotationPlugin.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/SetValueAnnotationPlugin.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/StartLifecycleAnnotationPlugin.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/StopLifecycleAnnotationPlugin.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/SupplysAnnotationPlugin.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/ThisValueAnnotationPlugin.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/UninstallCallbackAnnotationPlugin.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/UninstallMethodParameterAnnotationPlugin.java
   projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/annotations/test/wb/WBInjectionTestCase.java
Log:
[JBKERNEL-64] Drive annotation plugins/adapter from the actual annotations found rather than the list of plugins

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/AbstractAdaptersAnnotationPlugin.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/AbstractAdaptersAnnotationPlugin.java	2009-11-27 16:11:31 UTC (rev 97113)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/AbstractAdaptersAnnotationPlugin.java	2009-11-27 16:53:45 UTC (rev 97114)
@@ -22,7 +22,7 @@
 package org.jboss.kernel.plugins.annotations;
 
 import java.lang.annotation.Annotation;
-import java.util.Set;
+import java.util.Map;
 
 import org.jboss.reflect.spi.AnnotatedInfo;
 
@@ -35,9 +35,9 @@
  */
 public abstract class AbstractAdaptersAnnotationPlugin<T extends AnnotatedInfo, C extends Annotation> extends AbstractAnnotationPlugin<T, C>
 {
-   protected Set<Annotation2ValueMetaDataAdapter<? extends Annotation>> adapters;
+   protected Map<Class<? extends Annotation>, Annotation2ValueMetaDataAdapter<? extends Annotation>> adapters;
 
-   protected AbstractAdaptersAnnotationPlugin(Class<C> annotation, Set<Annotation2ValueMetaDataAdapter<? extends Annotation>> adapters)
+   protected AbstractAdaptersAnnotationPlugin(Class<C> annotation, Map<Class<? extends Annotation>, Annotation2ValueMetaDataAdapter<? extends Annotation>> adapters)
    {
       super(annotation);
       if (adapters == null)

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/AbstractAnnotationPlugin.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/AbstractAnnotationPlugin.java	2009-11-27 16:11:31 UTC (rev 97113)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/AbstractAnnotationPlugin.java	2009-11-27 16:53:45 UTC (rev 97114)
@@ -24,10 +24,10 @@
 import java.lang.annotation.Annotation;
 import java.util.List;
 
+import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
+import org.jboss.beans.metadata.spi.BeanMetaData;
 import org.jboss.beans.metadata.spi.MetaDataVisitor;
 import org.jboss.beans.metadata.spi.MetaDataVisitorNode;
-import org.jboss.beans.metadata.spi.BeanMetaData;
-import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
 import org.jboss.kernel.spi.dependency.KernelControllerContext;
 import org.jboss.metadata.spi.MetaData;
 import org.jboss.reflect.spi.AnnotatedInfo;

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/AbstractConstructorParameterAnnotationPlugin.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/AbstractConstructorParameterAnnotationPlugin.java	2009-11-27 16:11:31 UTC (rev 97113)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/AbstractConstructorParameterAnnotationPlugin.java	2009-11-27 16:53:45 UTC (rev 97114)
@@ -22,7 +22,7 @@
 package org.jboss.kernel.plugins.annotations;
 
 import java.lang.annotation.Annotation;
-import java.util.Set;
+import java.util.Map;
 
 import org.jboss.beans.metadata.plugins.builder.MutableParameterizedMetaData;
 import org.jboss.metadata.spi.signature.ConstructorParametersSignature;
@@ -38,7 +38,7 @@
  */
 public abstract class AbstractConstructorParameterAnnotationPlugin<C extends Annotation, P extends MutableParameterizedMetaData> extends AbstractParameterAnnotationPlugin<ConstructorInfo, C, P>
 {
-   protected AbstractConstructorParameterAnnotationPlugin(Class<C> annotation, Set<Annotation2ValueMetaDataAdapter<? extends Annotation>> adapters)
+   protected AbstractConstructorParameterAnnotationPlugin(Class<C> annotation, Map<Class<? extends Annotation>, Annotation2ValueMetaDataAdapter<? extends Annotation>> adapters)
    {
       super(annotation, adapters);
    }

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/AbstractMetaDataAnnotationAdapter.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/AbstractMetaDataAnnotationAdapter.java	2009-11-27 16:11:31 UTC (rev 97113)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/AbstractMetaDataAnnotationAdapter.java	2009-11-27 16:53:45 UTC (rev 97114)
@@ -23,9 +23,9 @@
 
 import org.jboss.beans.info.spi.BeanInfo;
 import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.kernel.spi.annotations.BeanMetaDataAnnotationAdapter;
 import org.jboss.metadata.spi.MetaData;
 import org.jboss.reflect.spi.AnnotatedInfo;
-import org.jboss.kernel.spi.annotations.BeanMetaDataAnnotationAdapter;
 
 /**
  * Abstract metadata annotation handler.

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/AbstractMethodParameterAnnotationPlugin.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/AbstractMethodParameterAnnotationPlugin.java	2009-11-27 16:11:31 UTC (rev 97113)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/AbstractMethodParameterAnnotationPlugin.java	2009-11-27 16:53:45 UTC (rev 97114)
@@ -22,7 +22,7 @@
 package org.jboss.kernel.plugins.annotations;
 
 import java.lang.annotation.Annotation;
-import java.util.Set;
+import java.util.Map;
 
 import org.jboss.beans.metadata.plugins.builder.MutableParameterizedMetaData;
 import org.jboss.metadata.spi.signature.MethodParametersSignature;
@@ -38,7 +38,7 @@
  */
 public abstract class AbstractMethodParameterAnnotationPlugin<C extends Annotation, P extends MutableParameterizedMetaData> extends AbstractParameterAnnotationPlugin<MethodInfo, C, P>
 {
-   protected AbstractMethodParameterAnnotationPlugin(Class<C> annotation, Set<Annotation2ValueMetaDataAdapter<? extends Annotation>> adapters)
+   protected AbstractMethodParameterAnnotationPlugin(Class<C> annotation, Map<Class<? extends Annotation>, Annotation2ValueMetaDataAdapter<? extends Annotation>> adapters)
    {
       super(annotation, adapters);
    }

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/AbstractParameterAnnotationPlugin.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/AbstractParameterAnnotationPlugin.java	2009-11-27 16:11:31 UTC (rev 97113)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/AbstractParameterAnnotationPlugin.java	2009-11-27 16:53:45 UTC (rev 97114)
@@ -26,7 +26,7 @@
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
-import java.util.Set;
+import java.util.Map;
 
 import org.jboss.beans.metadata.plugins.AbstractParameterMetaData;
 import org.jboss.beans.metadata.plugins.builder.MutableParameterizedMetaData;
@@ -51,7 +51,7 @@
  */
 public abstract class AbstractParameterAnnotationPlugin<T extends AnnotatedInfo, C extends Annotation, P extends MutableParameterizedMetaData> extends AbstractAdaptersAnnotationPlugin<T, C>
 {
-   protected AbstractParameterAnnotationPlugin(Class<C> annotation, Set<Annotation2ValueMetaDataAdapter<? extends Annotation>> adapters)
+   protected AbstractParameterAnnotationPlugin(Class<C> annotation, Map<Class<? extends Annotation>, Annotation2ValueMetaDataAdapter<? extends Annotation>> adapters)
    {
       super(annotation, adapters);
    }
@@ -161,14 +161,15 @@
          if (mdr != null)
          {
             ValueMetaData value = null;
-            for(Annotation2ValueMetaDataAdapter adapter : adapters)
+            for (Annotation ann : mdr.getAnnotations())
             {
-               Annotation adapterAnnotation = mdr.getAnnotation(adapter.getAnnotation());
-               if (adapterAnnotation != null)
+               Annotation2ValueMetaDataAdapter adapter = adapters.get(ann.annotationType());
+               if (adapter != null)
                {
-                  value = adapter.createValueMetaData(pi, adapterAnnotation, value);
+                  value = adapter.createValueMetaData(pi, ann, value);
                }
             }
+
             if (value == null)
                throw new IllegalArgumentException("No such Annotation2ValueMetaData adapter or no annotation on ParameterInfo: " + pi);
             if (trace)

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/AliasMetaDataAnnotationPlugin.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/AliasMetaDataAnnotationPlugin.java	2009-11-27 16:11:31 UTC (rev 97113)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/AliasMetaDataAnnotationPlugin.java	2009-11-27 16:53:45 UTC (rev 97114)
@@ -21,10 +21,10 @@
 */
 package org.jboss.kernel.plugins.annotations;
 
+import java.util.Arrays;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
-import java.util.HashSet;
-import java.util.Arrays;
 
 import org.jboss.beans.metadata.api.annotations.Aliases;
 import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/AnnotationPlugin.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/AnnotationPlugin.java	2009-11-27 16:11:31 UTC (rev 97113)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/AnnotationPlugin.java	2009-11-27 16:53:45 UTC (rev 97114)
@@ -24,7 +24,6 @@
 import java.lang.annotation.Annotation;
 
 import org.jboss.beans.metadata.spi.MetaDataVisitor;
-import org.jboss.kernel.plugins.annotations.MetaDataAnnotationPlugin;
 import org.jboss.metadata.spi.MetaData;
 import org.jboss.reflect.spi.AnnotatedInfo;
 

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/ArrayValueAnnotationPlugin.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/ArrayValueAnnotationPlugin.java	2009-11-27 16:11:31 UTC (rev 97113)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/ArrayValueAnnotationPlugin.java	2009-11-27 16:53:45 UTC (rev 97114)
@@ -21,9 +21,9 @@
 */
 package org.jboss.kernel.plugins.annotations;
 
-import org.jboss.beans.metadata.plugins.AbstractArrayMetaData;
 import org.jboss.beans.metadata.api.annotations.ArrayValue;
 import org.jboss.beans.metadata.api.annotations.Value;
+import org.jboss.beans.metadata.plugins.AbstractArrayMetaData;
 import org.jboss.beans.metadata.spi.ValueMetaData;
 
 /**

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/BasicBeanAnnotationAdapter.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/BasicBeanAnnotationAdapter.java	2009-11-27 16:11:31 UTC (rev 97113)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/BasicBeanAnnotationAdapter.java	2009-11-27 16:53:45 UTC (rev 97114)
@@ -22,8 +22,8 @@
 package org.jboss.kernel.plugins.annotations;
 
 import java.lang.annotation.Annotation;
-import java.util.Set;
-import java.util.concurrent.CopyOnWriteArraySet;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
 
 /**
  * Basic bean annotation handler.
@@ -35,12 +35,12 @@
    public static final BasicBeanAnnotationAdapter INSTANCE = new BasicBeanAnnotationAdapter();
 
    /** The parameter annotation adapters */
-   private Set<Annotation2ValueMetaDataAdapter<? extends Annotation>> adapters;
+   private Map<Class<? extends Annotation>, Annotation2ValueMetaDataAdapter<? extends Annotation>> adapters;
 
    protected BasicBeanAnnotationAdapter()
    {
       // -- adapters
-      adapters = new CopyOnWriteArraySet<Annotation2ValueMetaDataAdapter<? extends Annotation>>();
+      adapters = new ConcurrentHashMap<Class<? extends Annotation>, Annotation2ValueMetaDataAdapter<? extends Annotation>>();
 
       // -- plugins
       // class
@@ -93,6 +93,7 @@
       addAnnotationPlugin(ValueFactoryFieldAnnotationPlugin.INSTANCE);
       addAnnotationPlugin(InstallFieldCallbackAnnotationPlugin.INSTANCE);
       addAnnotationPlugin(UninstallFieldCallbackAnnotationPlugin.INSTANCE);
+      
    }
 
    @SuppressWarnings("unchecked")
@@ -120,7 +121,7 @@
    {
       if (adapter == null)
          throw new IllegalArgumentException("Null Annotation2ValueMetaDataAdapter");
-      adapters.add(adapter);
+      adapters.put(adapter.getAnnotation(), adapter);
    }
 
    /**

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/BasicBeanMetaDataAnnotationAdapter.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/BasicBeanMetaDataAnnotationAdapter.java	2009-11-27 16:11:31 UTC (rev 97113)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/BasicBeanMetaDataAnnotationAdapter.java	2009-11-27 16:53:45 UTC (rev 97114)
@@ -22,8 +22,8 @@
 package org.jboss.kernel.plugins.annotations;
 
 import java.lang.annotation.Annotation;
-import java.util.Set;
-import java.util.concurrent.CopyOnWriteArraySet;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
 
 /**
  * Basic bean metadata annotation handler.
@@ -35,12 +35,12 @@
    public static final BasicBeanMetaDataAnnotationAdapter INSTANCE = new BasicBeanMetaDataAnnotationAdapter();
 
    /** The parameter annotation adapters */
-   private Set<Annotation2ValueMetaDataAdapter<? extends Annotation>> adapters;
+   private Map<Class<? extends Annotation>, Annotation2ValueMetaDataAdapter<? extends Annotation>> adapters;
 
    protected BasicBeanMetaDataAnnotationAdapter()
    {
       // -- adapters
-      adapters = new CopyOnWriteArraySet<Annotation2ValueMetaDataAdapter<? extends Annotation>>();
+      adapters = new ConcurrentHashMap<Class<? extends Annotation>, Annotation2ValueMetaDataAdapter<? extends Annotation>>();
 
       // class
       addAnnotationPlugin(BeanAnnotationPlugin.INSTANCE);
@@ -109,7 +109,7 @@
    {
       if (adapter == null)
          throw new IllegalArgumentException("Null Annotation2ValueMetaDataAdapter");
-      adapters.add(adapter);
+      adapters.put(adapter.getAnnotation(), adapter);
    }
 
    /**

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/BeanAnnotationPlugin.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/BeanAnnotationPlugin.java	2009-11-27 16:11:31 UTC (rev 97113)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/BeanAnnotationPlugin.java	2009-11-27 16:53:45 UTC (rev 97114)
@@ -24,9 +24,9 @@
 import java.util.List;
 
 import org.jboss.beans.metadata.api.annotations.Bean;
+import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
 import org.jboss.beans.metadata.spi.BeanMetaData;
 import org.jboss.beans.metadata.spi.MetaDataVisitorNode;
-import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
 import org.jboss.reflect.spi.ClassInfo;
 
 /**

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/ClassFactoryAnnotationPlugin.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/ClassFactoryAnnotationPlugin.java	2009-11-27 16:11:31 UTC (rev 97113)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/ClassFactoryAnnotationPlugin.java	2009-11-27 16:53:45 UTC (rev 97114)
@@ -26,7 +26,7 @@
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
-import java.util.Set;
+import java.util.Map;
 
 import org.jboss.beans.metadata.api.annotations.Factory;
 import org.jboss.beans.metadata.api.annotations.Value;
@@ -45,7 +45,7 @@
  */
 public class ClassFactoryAnnotationPlugin extends AbstractAdaptersAnnotationPlugin<ClassInfo, Factory>
 {
-   public ClassFactoryAnnotationPlugin(Set<Annotation2ValueMetaDataAdapter<? extends Annotation>> adapters)
+   public ClassFactoryAnnotationPlugin(Map<Class<? extends Annotation>, Annotation2ValueMetaDataAdapter<? extends Annotation>> adapters)
    {
       super(Factory.class, adapters);
    }

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/CollectionValueAnnotationPlugin.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/CollectionValueAnnotationPlugin.java	2009-11-27 16:11:31 UTC (rev 97113)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/CollectionValueAnnotationPlugin.java	2009-11-27 16:53:45 UTC (rev 97114)
@@ -21,9 +21,9 @@
 */
 package org.jboss.kernel.plugins.annotations;
 
-import org.jboss.beans.metadata.plugins.AbstractCollectionMetaData;
 import org.jboss.beans.metadata.api.annotations.CollectionValue;
 import org.jboss.beans.metadata.api.annotations.Value;
+import org.jboss.beans.metadata.plugins.AbstractCollectionMetaData;
 import org.jboss.beans.metadata.spi.ValueMetaData;
 
 /**

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/CommonAnnotationAdapter.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/CommonAnnotationAdapter.java	2009-11-27 16:11:31 UTC (rev 97113)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/CommonAnnotationAdapter.java	2009-11-27 16:53:45 UTC (rev 97114)
@@ -65,14 +65,16 @@
    protected Logger log = Logger.getLogger(getClass());
 
    /** The annotation plugins */
-   private final Map<ElementType, Set<T>> pluginsMap = new HashMap<ElementType, Set<T>>();
+   //private final Map<ElementType, Set<T>> pluginsMap = new HashMap<ElementType, Set<T>>();
+   private final Map<ElementType, Map<Class<? extends Annotation>, Set<T>>> pluginsMap = new HashMap<ElementType, Map<Class<? extends Annotation>, Set<T>>>();
+   
 
    /** The property annotation plugin filter */
    private static final AnnotationPluginFilter PROPERTY_FILTER = new PropertyAnnotationPluginFilter();
 
    /** The method annotation plugin filter */
    private static final AnnotationPluginFilter METHOD_FILTER = new MethodAnnotationPluginFilter();
-
+   
    /**
     * Add the annotation plugin.
     * Breaks down the plugin usage into
@@ -102,11 +104,17 @@
       {
          for (ElementType type : supported)
          {
-            Set<T> plugins = pluginsMap.get(type);
+            Map<Class<? extends Annotation>, Set<T>> pluginsForType = pluginsMap.get(type);
+            if (pluginsForType == null)
+            {
+               pluginsForType = new HashMap<Class<? extends Annotation>, Set<T>>();
+               pluginsMap.put(type, pluginsForType);
+            }
+            Set<T> plugins = pluginsForType.get(plugin.getAnnotation());
             if (plugins == null)
             {
                plugins = new HashSet<T>();
-               pluginsMap.put(type, plugins);
+               pluginsForType.put(plugin.getAnnotation(), plugins);
             }
             plugins.add(plugin);
          }
@@ -131,12 +139,17 @@
       {
          for (ElementType type : supported)
          {
-            Set<T> plugins = pluginsMap.get(type);
-            if (plugins != null)
+            Map<Class<? extends Annotation>, Set<T>> pluginsForType = pluginsMap.get(type);
+            if (pluginsForType != null)
             {
-               plugins.remove(plugin);
-
-               if (plugins.isEmpty())
+               Set<T> plugins = pluginsForType.remove(plugin.getAnnotation());
+               if (plugins != null)
+               {
+                  plugins.remove(plugin);
+                  if (plugins.isEmpty())
+                     pluginsForType.remove(plugin.getAnnotation());
+               }
+               if (pluginsForType.isEmpty())
                   pluginsMap.remove(type);
             }
          }
@@ -177,21 +190,33 @@
     * Get plugins.
     *
     * @param type the element type to match
+    * @param the annotation to find a plugin for
     * @param filter possible plugins filter
     * @param annotationClasses possible annotations
     * @return iterable matching plugins
     */
-   protected Iterable<T> getPlugins(ElementType type, AnnotationPluginFilter filter, Collection<Class<? extends Annotation>> annotationClasses)
+   protected Iterable<T> getPlugins(ElementType type, Annotation annotation, AnnotationPluginFilter filter, Collection<Class<? extends Annotation>> annotationClasses)
    {
-      Set<T> plugins;
+      if (type == null)
+         throw new IllegalArgumentException("Null type");
+      if (annotation == null)
+         throw new IllegalArgumentException("Null annotation");
+      if (annotationClasses != null && !annotationClasses.contains(annotation))
+         return Collections.emptySet();
+      
+      Set<T> plugins = null;
       synchronized (pluginsMap)
       {
-         plugins = pluginsMap.get(type);
+         Map<Class<? extends Annotation>, Set<T>> pluginsForType = pluginsMap.get(type);
+         if (pluginsForType != null)
+         {
+            plugins = pluginsForType.get(annotation.annotationType());
+         }
       }
       
       if (plugins == null || plugins.isEmpty())
          return Collections.emptySet();
-
+      
       if (filter != null)
       {
          List<T> result = new ArrayList<T>();
@@ -204,24 +229,9 @@
          }
          return result;
       }
-      else if (annotationClasses != null)
-      {
-         List<T> result = new ArrayList<T>();
-         for (T plugin : plugins)
-         {
-            if (annotationClasses.contains(plugin.getAnnotation()))
-            {
-               result.add(plugin);
-            }
-         }
-         return result;
-      }
-      else
-      {
-         return plugins;
-      }
+      return plugins;
    }
-
+   
    /**
     * Handle apply or cleanup of annotations.
     *
@@ -258,14 +268,16 @@
 
       // class
       ClassInfo classInfo = info.getClassInfo();
-      for(T plugin : getPlugins(ElementType.TYPE, null, annotationClasses))
+      for (Annotation annotation : retrieval.getAnnotations())
       {
-         if (isApplyPhase)
-            applyPlugin(plugin, classInfo, retrieval, handle);
-         else
-            cleanPlugin(plugin, classInfo, retrieval, handle);
+         for(T plugin : getPlugins(ElementType.TYPE, annotation, null, annotationClasses))
+         {
+            if (isApplyPhase)
+               applyPlugin(plugin, classInfo, retrieval, handle);
+            else
+               cleanPlugin(plugin, classInfo, retrieval, handle);
+         }
       }
-
       // constructors
       Set<ConstructorInfo> constructors = info.getConstructors();
       if (constructors != null && constructors.isEmpty() == false)
@@ -276,13 +288,16 @@
             MetaData cmdr = retrieval.getComponentMetaData(cis);
             if (cmdr != null)
             {
-               for(T plugin : getPlugins(ElementType.CONSTRUCTOR, null, annotationClasses))
+               for (Annotation annotation : cmdr.getAnnotations())
                {
-                  if (isApplyPhase)
-                     applyPlugin(plugin, ci, cmdr, handle);
-                  else
-                     cleanPlugin(plugin, ci, cmdr, handle);
-               }
+                  for(T plugin : getPlugins(ElementType.CONSTRUCTOR, annotation, null, annotationClasses))
+                  {
+                     if (isApplyPhase)
+                        applyPlugin(plugin, ci, cmdr, handle);
+                     else
+                        cleanPlugin(plugin, ci, cmdr, handle);
+                  }
+               }  
             }
             else if (trace)
                log.trace("No annotations for " + ci);
@@ -305,12 +320,15 @@
                MetaData cmdr = retrieval.getComponentMetaData(sis);
                if (cmdr != null)
                {
-                  for(T plugin : getPlugins(ElementType.FIELD, null, annotationClasses))
+                  for (Annotation annotation : cmdr.getAnnotations())
                   {
-                     if (isApplyPhase)
-                        applyPlugin(plugin, field, cmdr, handle);
-                     else
-                        cleanPlugin(plugin, field, cmdr, handle);
+                     for(T plugin : getPlugins(ElementType.FIELD, annotation, null, annotationClasses))
+                     {
+                        if (isApplyPhase)
+                           applyPlugin(plugin, field, cmdr, handle);
+                        else
+                           cleanPlugin(plugin, field, cmdr, handle);
+                     }
                   }
                }
                else if (trace)
@@ -328,9 +346,6 @@
       TypeInfoFactory tif = classInfo.getTypeInfoFactory();
       TypeInfo objectTI = tif.getTypeInfo(Object.class);
 
-      // method plugins
-      Iterable<T> methodPlugins = null;
-
       // methods
       Set<MethodInfo> methods = info.getMethods();
       if (methods != null && methods.isEmpty() == false)
@@ -345,15 +360,15 @@
                MetaData cmdr = retrieval.getComponentMetaData(mis);
                if (cmdr != null)
                {
-                  if (methodPlugins == null)
-                     methodPlugins = getPlugins(ElementType.METHOD, METHOD_FILTER, annotationClasses);
-                  
-                  for(T plugin : methodPlugins)
+                  for (Annotation annotation : cmdr.getAnnotations())
                   {
-                     if (isApplyPhase)
-                        applyPlugin(plugin, mi, cmdr, handle);
-                     else
-                        cleanPlugin(plugin, mi, cmdr, handle);
+                     for(T plugin : getPlugins(ElementType.METHOD, annotation, METHOD_FILTER, annotationClasses))
+                     {
+                        if (isApplyPhase)
+                           applyPlugin(plugin, mi, cmdr, handle);
+                        else
+                           cleanPlugin(plugin, mi, cmdr, handle);
+                     }
                   }
                }
                else if (trace)
@@ -376,15 +391,15 @@
                MetaData cmdr = retrieval.getComponentMetaData(mis);
                if (cmdr != null)
                {
-                  if (methodPlugins == null)
-                     methodPlugins = getPlugins(ElementType.METHOD, METHOD_FILTER, annotationClasses);
-                  
-                  for(T plugin : methodPlugins)
+                  for (Annotation annotation : cmdr.getAnnotations())
                   {
-                     if (isApplyPhase)
-                        applyPlugin(plugin, smi, cmdr, handle);
-                     else
-                        cleanPlugin(plugin, smi, cmdr, handle);
+                     for(T plugin : getPlugins(ElementType.METHOD, annotation, METHOD_FILTER, annotationClasses))
+                     {                  
+                        if (isApplyPhase)
+                           applyPlugin(plugin, smi, cmdr, handle);
+                        else
+                           cleanPlugin(plugin, smi, cmdr, handle);
+                     }
                   }
                }
                else if (trace)
@@ -432,12 +447,15 @@
       MetaData cmdr = retrieval.getComponentMetaData(sis);
       if (cmdr != null)
       {
-         for(T plugin : getPlugins(ElementType.METHOD, PROPERTY_FILTER, annotationClasses))
+         for (Annotation annotation : cmdr.getAnnotations())
          {
-            if (isApplyPhase)
-               applyPlugin(plugin, pi, cmdr, handle);
-            else
-               cleanPlugin(plugin, pi, cmdr, handle);
+            for(T plugin : getPlugins(ElementType.METHOD, annotation, PROPERTY_FILTER, annotationClasses))
+            {
+               if (isApplyPhase)
+                  applyPlugin(plugin, pi, cmdr, handle);
+               else
+                  cleanPlugin(plugin, pi, cmdr, handle);
+            }
          }
       }
       else if (trace)

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/ConstructorParameterAnnotationPlugin.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/ConstructorParameterAnnotationPlugin.java	2009-11-27 16:11:31 UTC (rev 97113)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/ConstructorParameterAnnotationPlugin.java	2009-11-27 16:53:45 UTC (rev 97114)
@@ -24,7 +24,7 @@
 import java.lang.annotation.Annotation;
 import java.lang.annotation.ElementType;
 import java.util.List;
-import java.util.Set;
+import java.util.Map;
 
 import org.jboss.beans.metadata.api.annotations.Constructor;
 import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
@@ -41,7 +41,7 @@
  */
 public class ConstructorParameterAnnotationPlugin extends AbstractConstructorParameterAnnotationPlugin<Constructor, AbstractConstructorMetaData>
 {
-   public ConstructorParameterAnnotationPlugin(Set<Annotation2ValueMetaDataAdapter<? extends Annotation>> adapters)
+   public ConstructorParameterAnnotationPlugin(Map<Class<? extends Annotation>, Annotation2ValueMetaDataAdapter<? extends Annotation>> adapters)
    {
       super(Constructor.class, adapters);
    }

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/CreateLifecycleAnnotationPlugin.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/CreateLifecycleAnnotationPlugin.java	2009-11-27 16:11:31 UTC (rev 97113)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/CreateLifecycleAnnotationPlugin.java	2009-11-27 16:53:45 UTC (rev 97114)
@@ -22,12 +22,12 @@
 package org.jboss.kernel.plugins.annotations;
 
 import java.lang.annotation.Annotation;
-import java.util.Set;
+import java.util.Map;
 
+import org.jboss.beans.metadata.api.annotations.Create;
 import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
 import org.jboss.beans.metadata.plugins.AbstractLifecycleMetaData;
 import org.jboss.beans.metadata.spi.BeanMetaData;
-import org.jboss.beans.metadata.api.annotations.Create;
 
 /**
  * Create annotation plugin.
@@ -36,7 +36,7 @@
  */
 public class CreateLifecycleAnnotationPlugin extends LifecycleParameterAnnotationPlugin<Create>
 {
-   public CreateLifecycleAnnotationPlugin(Set<Annotation2ValueMetaDataAdapter<? extends Annotation>> adapters)
+   public CreateLifecycleAnnotationPlugin(Map<Class<? extends Annotation>, Annotation2ValueMetaDataAdapter<? extends Annotation>> adapters)
    {
       super(Create.class, adapters);
    }

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/DestroyLifecycleAnnotationPlugin.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/DestroyLifecycleAnnotationPlugin.java	2009-11-27 16:11:31 UTC (rev 97113)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/DestroyLifecycleAnnotationPlugin.java	2009-11-27 16:53:45 UTC (rev 97114)
@@ -22,11 +22,11 @@
 package org.jboss.kernel.plugins.annotations;
 
 import java.lang.annotation.Annotation;
-import java.util.Set;
+import java.util.Map;
 
+import org.jboss.beans.metadata.api.annotations.Destroy;
 import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
 import org.jboss.beans.metadata.plugins.AbstractLifecycleMetaData;
-import org.jboss.beans.metadata.api.annotations.Destroy;
 import org.jboss.beans.metadata.spi.BeanMetaData;
 
 /**
@@ -36,7 +36,7 @@
  */
 public class DestroyLifecycleAnnotationPlugin extends LifecycleParameterAnnotationPlugin<Destroy>
 {
-   public DestroyLifecycleAnnotationPlugin(Set<Annotation2ValueMetaDataAdapter<? extends Annotation>> adapters)
+   public DestroyLifecycleAnnotationPlugin(Map<Class<? extends Annotation>, Annotation2ValueMetaDataAdapter<? extends Annotation>> adapters)
    {
       super(Destroy.class, adapters);
    }

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/ExternalInstallAnnotationPlugin.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/ExternalInstallAnnotationPlugin.java	2009-11-27 16:11:31 UTC (rev 97113)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/ExternalInstallAnnotationPlugin.java	2009-11-27 16:53:45 UTC (rev 97114)
@@ -21,11 +21,11 @@
 */
 package org.jboss.kernel.plugins.annotations;
 
+import java.util.ArrayList;
 import java.util.List;
-import java.util.ArrayList;
 
+import org.jboss.beans.metadata.api.annotations.ExternalInstall;
 import org.jboss.beans.metadata.api.annotations.ExternalInstalls;
-import org.jboss.beans.metadata.api.annotations.ExternalInstall;
 import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
 import org.jboss.beans.metadata.spi.BeanMetaData;
 import org.jboss.beans.metadata.spi.InstallMetaData;

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/FactoryMethodAnnotationPlugin.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/FactoryMethodAnnotationPlugin.java	2009-11-27 16:11:31 UTC (rev 97113)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/FactoryMethodAnnotationPlugin.java	2009-11-27 16:53:45 UTC (rev 97114)
@@ -23,13 +23,13 @@
 
 import java.lang.annotation.Annotation;
 import java.lang.annotation.ElementType;
+import java.util.Collections;
 import java.util.List;
-import java.util.Collections;
-import java.util.Set;
+import java.util.Map;
 
+import org.jboss.beans.metadata.api.annotations.FactoryMethod;
 import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
 import org.jboss.beans.metadata.plugins.AbstractConstructorMetaData;
-import org.jboss.beans.metadata.api.annotations.FactoryMethod;
 import org.jboss.beans.metadata.spi.BeanMetaData;
 import org.jboss.beans.metadata.spi.MetaDataVisitorNode;
 import org.jboss.reflect.spi.MethodInfo;
@@ -42,7 +42,7 @@
  */
 public class FactoryMethodAnnotationPlugin extends AbstractMethodParameterAnnotationPlugin<FactoryMethod, AbstractConstructorMetaData>
 {
-   public FactoryMethodAnnotationPlugin(Set<Annotation2ValueMetaDataAdapter<? extends Annotation>> adapters)
+   public FactoryMethodAnnotationPlugin(Map<Class<? extends Annotation>, Annotation2ValueMetaDataAdapter<? extends Annotation>> adapters)
    {
       super(FactoryMethod.class, adapters);
    }

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/InstallCallbackAnnotationPlugin.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/InstallCallbackAnnotationPlugin.java	2009-11-27 16:11:31 UTC (rev 97113)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/InstallCallbackAnnotationPlugin.java	2009-11-27 16:53:45 UTC (rev 97114)
@@ -21,19 +21,19 @@
 */
 package org.jboss.kernel.plugins.annotations;
 
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Set;
-import java.util.List;
-import java.util.ArrayList;
 
+import org.jboss.beans.metadata.api.annotations.Install;
 import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
 import org.jboss.beans.metadata.plugins.AbstractCallbackMetaData;
 import org.jboss.beans.metadata.plugins.InstallCallbackMetaData;
-import org.jboss.beans.metadata.api.annotations.Install;
 import org.jboss.beans.metadata.spi.CallbackMetaData;
 import org.jboss.dependency.spi.CallbackItem;
-import org.jboss.dependency.spi.DependencyInfo;
 import org.jboss.dependency.spi.Cardinality;
 import org.jboss.dependency.spi.ControllerState;
+import org.jboss.dependency.spi.DependencyInfo;
 import org.jboss.reflect.spi.AnnotatedInfo;
 
 /**

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/InstallMethodParameterAnnotationPlugin.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/InstallMethodParameterAnnotationPlugin.java	2009-11-27 16:11:31 UTC (rev 97113)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/InstallMethodParameterAnnotationPlugin.java	2009-11-27 16:53:45 UTC (rev 97114)
@@ -22,17 +22,17 @@
 package org.jboss.kernel.plugins.annotations;
 
 import java.lang.annotation.Annotation;
+import java.util.ArrayList;
 import java.util.List;
-import java.util.ArrayList;
-import java.util.Set;
+import java.util.Map;
 
+import org.jboss.beans.metadata.api.annotations.InstallMethod;
+import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
 import org.jboss.beans.metadata.plugins.AbstractInstallMetaData;
-import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
-import org.jboss.beans.metadata.api.annotations.InstallMethod;
 import org.jboss.beans.metadata.spi.BeanMetaData;
 import org.jboss.beans.metadata.spi.InstallMetaData;
+import org.jboss.dependency.spi.ControllerState;
 import org.jboss.reflect.spi.MethodInfo;
-import org.jboss.dependency.spi.ControllerState;
 
 /**
  * Install method annotation plugin.
@@ -41,7 +41,7 @@
  */
 public class InstallMethodParameterAnnotationPlugin extends InstallationParameterAnnotationPlugin<InstallMethod>
 {
-   public InstallMethodParameterAnnotationPlugin(Set<Annotation2ValueMetaDataAdapter<? extends Annotation>> adapters)
+   public InstallMethodParameterAnnotationPlugin(Map<Class<? extends Annotation>, Annotation2ValueMetaDataAdapter<? extends Annotation>> adapters)
    {
       super(InstallMethod.class, adapters);
    }

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/InstallationParameterAnnotationPlugin.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/InstallationParameterAnnotationPlugin.java	2009-11-27 16:11:31 UTC (rev 97113)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/InstallationParameterAnnotationPlugin.java	2009-11-27 16:53:45 UTC (rev 97114)
@@ -23,19 +23,19 @@
 
 import java.lang.annotation.Annotation;
 import java.lang.annotation.ElementType;
+import java.util.Collections;
 import java.util.List;
-import java.util.Collections;
-import java.util.Set;
+import java.util.Map;
 
 import org.jboss.beans.metadata.plugins.AbstractInstallMetaData;
 import org.jboss.beans.metadata.spi.BeanMetaData;
 import org.jboss.beans.metadata.spi.InstallMetaData;
+import org.jboss.beans.metadata.spi.MetaDataVisitorNode;
 import org.jboss.beans.metadata.spi.ParameterMetaData;
-import org.jboss.beans.metadata.spi.MetaDataVisitorNode;
+import org.jboss.kernel.plugins.config.Configurator;
 import org.jboss.reflect.spi.MethodInfo;
 import org.jboss.reflect.spi.ParameterInfo;
 import org.jboss.reflect.spi.TypeInfo;
-import org.jboss.kernel.plugins.config.Configurator;
 
 /**
  * Abstract installation annotation plugin.
@@ -45,7 +45,7 @@
  */
 public abstract class InstallationParameterAnnotationPlugin<C extends Annotation> extends AbstractMethodParameterAnnotationPlugin<C, AbstractInstallMetaData>
 {
-   protected InstallationParameterAnnotationPlugin(Class<C> annotation, Set<Annotation2ValueMetaDataAdapter<? extends Annotation>> adapters)
+   protected InstallationParameterAnnotationPlugin(Class<C> annotation, Map<Class<? extends Annotation>, Annotation2ValueMetaDataAdapter<? extends Annotation>> adapters)
    {
       super(annotation, adapters);
    }

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/JavaBeanValueAnnotationPlugin.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/JavaBeanValueAnnotationPlugin.java	2009-11-27 16:11:31 UTC (rev 97113)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/JavaBeanValueAnnotationPlugin.java	2009-11-27 16:53:45 UTC (rev 97114)
@@ -24,10 +24,10 @@
 import java.security.AccessController;
 import java.security.PrivilegedAction;
 
+import org.jboss.beans.info.spi.BeanInfo;
+import org.jboss.beans.metadata.api.annotations.JavaBeanValue;
 import org.jboss.beans.metadata.plugins.AbstractValueMetaData;
-import org.jboss.beans.metadata.api.annotations.JavaBeanValue;
 import org.jboss.beans.metadata.spi.ValueMetaData;
-import org.jboss.beans.info.spi.BeanInfo;
 import org.jboss.config.plugins.property.PropertyConfiguration;
 import org.jboss.config.spi.Configuration;
 

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/LifecycleParameterAnnotationPlugin.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/LifecycleParameterAnnotationPlugin.java	2009-11-27 16:11:31 UTC (rev 97113)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/LifecycleParameterAnnotationPlugin.java	2009-11-27 16:53:45 UTC (rev 97114)
@@ -23,9 +23,9 @@
 
 import java.lang.annotation.Annotation;
 import java.lang.annotation.ElementType;
+import java.util.Collections;
 import java.util.List;
-import java.util.Collections;
-import java.util.Set;
+import java.util.Map;
 
 import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
 import org.jboss.beans.metadata.plugins.AbstractLifecycleMetaData;
@@ -42,7 +42,7 @@
  */
 public abstract class LifecycleParameterAnnotationPlugin<C extends Annotation> extends AbstractMethodParameterAnnotationPlugin<C, AbstractLifecycleMetaData>
 {
-   protected LifecycleParameterAnnotationPlugin(Class<C> annotation, Set<Annotation2ValueMetaDataAdapter<? extends Annotation>> adapters)
+   protected LifecycleParameterAnnotationPlugin(Class<C> annotation, Map<Class<? extends Annotation>, Annotation2ValueMetaDataAdapter<? extends Annotation>> adapters)
    {
       super(annotation, adapters);
    }

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/ListValueAnnotationPlugin.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/ListValueAnnotationPlugin.java	2009-11-27 16:11:31 UTC (rev 97113)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/ListValueAnnotationPlugin.java	2009-11-27 16:53:45 UTC (rev 97114)
@@ -21,9 +21,9 @@
 */
 package org.jboss.kernel.plugins.annotations;
 
-import org.jboss.beans.metadata.plugins.AbstractListMetaData;
 import org.jboss.beans.metadata.api.annotations.ListValue;
 import org.jboss.beans.metadata.api.annotations.Value;
+import org.jboss.beans.metadata.plugins.AbstractListMetaData;
 import org.jboss.beans.metadata.spi.ValueMetaData;
 
 /**

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/MapValueAnnotationPlugin.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/MapValueAnnotationPlugin.java	2009-11-27 16:11:31 UTC (rev 97113)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/MapValueAnnotationPlugin.java	2009-11-27 16:53:45 UTC (rev 97114)
@@ -21,9 +21,9 @@
 */
 package org.jboss.kernel.plugins.annotations;
 
+import org.jboss.beans.metadata.api.annotations.EntryValue;
+import org.jboss.beans.metadata.api.annotations.MapValue;
 import org.jboss.beans.metadata.plugins.AbstractMapMetaData;
-import org.jboss.beans.metadata.api.annotations.MapValue;
-import org.jboss.beans.metadata.api.annotations.EntryValue;
 import org.jboss.beans.metadata.spi.ValueMetaData;
 
 /**

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/MethodInstallCallbackAnnotationPlugin.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/MethodInstallCallbackAnnotationPlugin.java	2009-11-27 16:11:31 UTC (rev 97113)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/MethodInstallCallbackAnnotationPlugin.java	2009-11-27 16:53:45 UTC (rev 97114)
@@ -22,8 +22,8 @@
 package org.jboss.kernel.plugins.annotations;
 
 import org.jboss.beans.metadata.plugins.AbstractCallbackMetaData;
+import org.jboss.dependency.spi.CallbackItem;
 import org.jboss.reflect.spi.MethodInfo;
-import org.jboss.dependency.spi.CallbackItem;
 
 /**
  * Method install annotation plugin.

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/MethodUninstallCallbackAnnotationPlugin.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/MethodUninstallCallbackAnnotationPlugin.java	2009-11-27 16:11:31 UTC (rev 97113)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/MethodUninstallCallbackAnnotationPlugin.java	2009-11-27 16:53:45 UTC (rev 97114)
@@ -21,9 +21,9 @@
 */
 package org.jboss.kernel.plugins.annotations;
 
-import org.jboss.reflect.spi.MethodInfo;
 import org.jboss.beans.metadata.plugins.AbstractCallbackMetaData;
 import org.jboss.dependency.spi.CallbackItem;
+import org.jboss.reflect.spi.MethodInfo;
 
 /**
  * Method uninstall annotation plugin.

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/NullValueAnnotationPlugin.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/NullValueAnnotationPlugin.java	2009-11-27 16:11:31 UTC (rev 97113)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/NullValueAnnotationPlugin.java	2009-11-27 16:53:45 UTC (rev 97114)
@@ -21,8 +21,8 @@
 */
 package org.jboss.kernel.plugins.annotations;
 
+import org.jboss.beans.metadata.api.annotations.NullValue;
 import org.jboss.beans.metadata.plugins.AbstractValueMetaData;
-import org.jboss.beans.metadata.api.annotations.NullValue;
 import org.jboss.beans.metadata.spi.ValueMetaData;
 
 /**

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/SetValueAnnotationPlugin.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/SetValueAnnotationPlugin.java	2009-11-27 16:11:31 UTC (rev 97113)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/SetValueAnnotationPlugin.java	2009-11-27 16:53:45 UTC (rev 97114)
@@ -21,9 +21,9 @@
 */
 package org.jboss.kernel.plugins.annotations;
 
-import org.jboss.beans.metadata.plugins.AbstractSetMetaData;
 import org.jboss.beans.metadata.api.annotations.SetValue;
 import org.jboss.beans.metadata.api.annotations.Value;
+import org.jboss.beans.metadata.plugins.AbstractSetMetaData;
 import org.jboss.beans.metadata.spi.ValueMetaData;
 
 /**

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/StartLifecycleAnnotationPlugin.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/StartLifecycleAnnotationPlugin.java	2009-11-27 16:11:31 UTC (rev 97113)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/StartLifecycleAnnotationPlugin.java	2009-11-27 16:53:45 UTC (rev 97114)
@@ -22,11 +22,11 @@
 package org.jboss.kernel.plugins.annotations;
 
 import java.lang.annotation.Annotation;
-import java.util.Set;
+import java.util.Map;
 
+import org.jboss.beans.metadata.api.annotations.Start;
 import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
 import org.jboss.beans.metadata.plugins.AbstractLifecycleMetaData;
-import org.jboss.beans.metadata.api.annotations.Start;
 import org.jboss.beans.metadata.spi.BeanMetaData;
 
 /**
@@ -36,7 +36,7 @@
  */
 public class StartLifecycleAnnotationPlugin extends LifecycleParameterAnnotationPlugin<Start>
 {
-   public StartLifecycleAnnotationPlugin(Set<Annotation2ValueMetaDataAdapter<? extends Annotation>> adapters)
+   public StartLifecycleAnnotationPlugin(Map<Class<? extends Annotation>, Annotation2ValueMetaDataAdapter<? extends Annotation>> adapters)
    {
       super(Start.class, adapters);
    }

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/StopLifecycleAnnotationPlugin.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/StopLifecycleAnnotationPlugin.java	2009-11-27 16:11:31 UTC (rev 97113)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/StopLifecycleAnnotationPlugin.java	2009-11-27 16:53:45 UTC (rev 97114)
@@ -22,11 +22,11 @@
 package org.jboss.kernel.plugins.annotations;
 
 import java.lang.annotation.Annotation;
-import java.util.Set;
+import java.util.Map;
 
+import org.jboss.beans.metadata.api.annotations.Stop;
 import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
 import org.jboss.beans.metadata.plugins.AbstractLifecycleMetaData;
-import org.jboss.beans.metadata.api.annotations.Stop;
 import org.jboss.beans.metadata.spi.BeanMetaData;
 
 /**
@@ -36,7 +36,7 @@
  */
 public class StopLifecycleAnnotationPlugin extends LifecycleParameterAnnotationPlugin<Stop>
 {
-   public StopLifecycleAnnotationPlugin(Set<Annotation2ValueMetaDataAdapter<? extends Annotation>> adapters)
+   public StopLifecycleAnnotationPlugin(Map<Class<? extends Annotation>, Annotation2ValueMetaDataAdapter<? extends Annotation>> adapters)
    {
       super(Stop.class, adapters);
    }

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/SupplysAnnotationPlugin.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/SupplysAnnotationPlugin.java	2009-11-27 16:11:31 UTC (rev 97113)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/SupplysAnnotationPlugin.java	2009-11-27 16:53:45 UTC (rev 97114)
@@ -21,18 +21,18 @@
 */
 package org.jboss.kernel.plugins.annotations;
 
-import java.util.Set;
+import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
-import java.util.ArrayList;
+import java.util.Set;
 
+import org.jboss.beans.metadata.api.annotations.Supply;
+import org.jboss.beans.metadata.api.annotations.Supplys;
+import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
 import org.jboss.beans.metadata.plugins.AbstractSupplyMetaData;
-import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
-import org.jboss.beans.metadata.api.annotations.Supplys;
-import org.jboss.beans.metadata.api.annotations.Supply;
 import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.beans.metadata.spi.MetaDataVisitorNode;
 import org.jboss.beans.metadata.spi.SupplyMetaData;
-import org.jboss.beans.metadata.spi.MetaDataVisitorNode;
 import org.jboss.reflect.spi.ClassInfo;
 
 /**

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/ThisValueAnnotationPlugin.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/ThisValueAnnotationPlugin.java	2009-11-27 16:11:31 UTC (rev 97113)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/ThisValueAnnotationPlugin.java	2009-11-27 16:53:45 UTC (rev 97114)
@@ -21,8 +21,8 @@
 */
 package org.jboss.kernel.plugins.annotations;
 
+import org.jboss.beans.metadata.api.annotations.ThisValue;
 import org.jboss.beans.metadata.plugins.ThisValueMetaData;
-import org.jboss.beans.metadata.api.annotations.ThisValue;
 import org.jboss.beans.metadata.spi.ValueMetaData;
 
 /**

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/UninstallCallbackAnnotationPlugin.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/UninstallCallbackAnnotationPlugin.java	2009-11-27 16:11:31 UTC (rev 97113)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/UninstallCallbackAnnotationPlugin.java	2009-11-27 16:53:45 UTC (rev 97114)
@@ -25,10 +25,10 @@
 import java.util.List;
 import java.util.Set;
 
+import org.jboss.beans.metadata.api.annotations.Uninstall;
 import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
 import org.jboss.beans.metadata.plugins.AbstractCallbackMetaData;
 import org.jboss.beans.metadata.plugins.UninstallCallbackMetaData;
-import org.jboss.beans.metadata.api.annotations.Uninstall;
 import org.jboss.beans.metadata.spi.CallbackMetaData;
 import org.jboss.dependency.spi.CallbackItem;
 import org.jboss.dependency.spi.Cardinality;

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/UninstallMethodParameterAnnotationPlugin.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/UninstallMethodParameterAnnotationPlugin.java	2009-11-27 16:11:31 UTC (rev 97113)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/annotations/UninstallMethodParameterAnnotationPlugin.java	2009-11-27 16:53:45 UTC (rev 97114)
@@ -24,11 +24,11 @@
 import java.lang.annotation.Annotation;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Set;
+import java.util.Map;
 
+import org.jboss.beans.metadata.api.annotations.UninstallMethod;
 import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
 import org.jboss.beans.metadata.plugins.AbstractInstallMetaData;
-import org.jboss.beans.metadata.api.annotations.UninstallMethod;
 import org.jboss.beans.metadata.spi.BeanMetaData;
 import org.jboss.beans.metadata.spi.InstallMetaData;
 import org.jboss.dependency.spi.ControllerState;
@@ -41,7 +41,7 @@
  */
 public class UninstallMethodParameterAnnotationPlugin extends InstallationParameterAnnotationPlugin<UninstallMethod>
 {
-   public UninstallMethodParameterAnnotationPlugin(Set<Annotation2ValueMetaDataAdapter<? extends Annotation>> adapters)
+   public UninstallMethodParameterAnnotationPlugin(Map<Class<? extends Annotation>, Annotation2ValueMetaDataAdapter<? extends Annotation>> adapters)
    {
       super(UninstallMethod.class, adapters);
    }

Modified: projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/annotations/test/wb/WBInjectionTestCase.java
===================================================================
--- projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/annotations/test/wb/WBInjectionTestCase.java	2009-11-27 16:11:31 UTC (rev 97113)
+++ projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/annotations/test/wb/WBInjectionTestCase.java	2009-11-27 16:53:45 UTC (rev 97114)
@@ -22,10 +22,11 @@
 package org.jboss.test.kernel.annotations.test.wb;
 
 import java.lang.annotation.Annotation;
-import java.util.HashSet;
-import java.util.Set;
+import java.util.HashMap;
+import java.util.Map;
 
 import junit.framework.Test;
+
 import org.jboss.beans.info.spi.BeanAccessMode;
 import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
 import org.jboss.dependency.spi.ControllerState;
@@ -71,8 +72,8 @@
       adapter.addAnnotationPlugin(WBInjectAnnotationPlugin.INSTANCE);
       // parameter adapter
       Annotation2ValueMetaDataAdapter<? extends Annotation> paramAdapter = WBInjectAnnotationPlugin.INSTANCE;
-      Set<Annotation2ValueMetaDataAdapter<? extends Annotation>> adapters = new HashSet<Annotation2ValueMetaDataAdapter<? extends Annotation>>();
-      adapters.add(paramAdapter);
+      Map<Class<? extends Annotation>, Annotation2ValueMetaDataAdapter<? extends Annotation>> adapters = new HashMap<Class<? extends Annotation>, Annotation2ValueMetaDataAdapter<? extends Annotation>>();
+      adapters.put(paramAdapter.getAnnotation(), paramAdapter);
       // parameter injections
       adapter.addAnnotationPlugin(new ConstructorParameterAnnotationPlugin(adapters));
       adapter.addAnnotationPlugin(new StartLifecycleAnnotationPlugin(adapters));




More information about the jboss-cvs-commits mailing list