[jboss-cvs] JBossAS SVN: r96945 - in projects/kernel/trunk/kernel/src: main/java/org/jboss/beans/metadata/plugins/builder and 4 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Nov 25 07:49:11 EST 2009


Author: kabir.khan at jboss.com
Date: 2009-11-25 07:49:11 -0500 (Wed, 25 Nov 2009)
New Revision: 96945

Added:
   projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/QualifierType.java
Removed:
   projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/QualifierType.java
   projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/test/AbstractQualifiersTest.java
Modified:
   projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractBeanQualifierMetaData.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractInjectQualifierMetaData.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractInjectionValueMetaData.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/builder/BeanMetaDataBuilderImpl.java
   projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/builder/BeanMetaDataBuilder.java
   projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/deployment/xml/test/QualifierTestCase.java
   projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/test/BeanQualifiersTestCase.java
   projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/test/InjectionPointQualifiersTestCase.java
   projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/test/QualifiersTestSuite.java
   projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/test/QualifiersXmlTestCase.java
Log:
[JBKERNEL-63] Add qualifiers to builder, and move QualifierType out of the spi since that is now doable via the builder. Handle qualifier metadata classname differently so it show up when we call toString()

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractBeanQualifierMetaData.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractBeanQualifierMetaData.java	2009-11-25 10:57:59 UTC (rev 96944)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractBeanQualifierMetaData.java	2009-11-25 12:49:11 UTC (rev 96945)
@@ -24,7 +24,6 @@
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlType;
 
-import org.jboss.beans.metadata.spi.QualifierType;
 import org.jboss.kernel.plugins.dependency.QualifiersMdrUtil;
 
 /**
@@ -39,14 +38,11 @@
    
    protected QualifierType type = QualifierType.SUPPLIED;
 
-   @Override
-   public String getClassName()
+   public AbstractBeanQualifierMetaData()
    {
-      if (type == QualifierType.SUPPLIED)
-         return QualifiersMdrUtil.SUPPLIED_QUALIFIER_KEY;
-      return QualifiersMdrUtil.WANTED_QUALIFIER_KEY;
+      internalSetClassName(QualifiersMdrUtil.SUPPLIED_QUALIFIER_KEY);
    }
-
+   
    public QualifierType getType()
    {
       return type;
@@ -56,5 +52,9 @@
    public void setType(QualifierType type)
    {
       this.type = type;
+      if (type == QualifierType.SUPPLIED)
+         internalSetClassName(QualifiersMdrUtil.SUPPLIED_QUALIFIER_KEY);
+      else
+         internalSetClassName(QualifiersMdrUtil.WANTED_QUALIFIER_KEY);
    }
 }

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractInjectQualifierMetaData.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractInjectQualifierMetaData.java	2009-11-25 10:57:59 UTC (rev 96944)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractInjectQualifierMetaData.java	2009-11-25 12:49:11 UTC (rev 96945)
@@ -36,16 +36,20 @@
 {
    private static final long serialVersionUID = 1L;
    
-   @Override
-   public String getClassName()
+   public AbstractInjectQualifierMetaData()
    {
-      return QualifiersMdrUtil.WANTED_QUALIFIER_KEY;
+      internalSetClassName(QualifiersMdrUtil.WANTED_QUALIFIER_KEY);
    }
-
+   
    @Override
    @XmlAttribute(name="name")
    public void setClassName(String classname)
    {
       throw new IllegalStateException("Class name can not be set for qualifiers");
    }
+   
+   protected void internalSetClassName(String classname)
+   {
+      super.setClassName(classname);
+   }
 }

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractInjectionValueMetaData.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractInjectionValueMetaData.java	2009-11-25 10:57:59 UTC (rev 96944)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractInjectionValueMetaData.java	2009-11-25 12:49:11 UTC (rev 96945)
@@ -51,7 +51,7 @@
  *
  * @author <a href="ales.justin at gmail.com">Ales Justin</a>
  */
- at XmlType(name="injectionType", propOrder="injectionPointQualifiers")
+ at XmlType(name="injectionType", propOrder="qualifiers")
 public class AbstractInjectionValueMetaData extends AbstractDependencyValueMetaData
 {
    private static final long serialVersionUID = 3L;
@@ -65,12 +65,8 @@
    /** Used as the key to get the injected context when qualifiers are present */
    protected ClassAndQualifierKey classAndQualifierMatcher;
    
-//   protected Set<RelatedClassMetaData> injectionPointQualifierMetaData;
-   
-//   protected Set<Object> injectionPointQualifiers;
-  
    /** Qualifiers specified on the injection point. If not present the context's wanted qualifiers from the MDR metadata is used */
-   protected Set<RelatedClassMetaData> injectionPointQualifiers;
+   protected Set<RelatedClassMetaData> qualifiers;
 
    /**
     * Simplyifies things with AutowireType.BY_NAME
@@ -150,23 +146,22 @@
    }
    
    /**
-    * Get the injectionPointQualifiers
-    * @return the injectionPointQualifiers
+    * Get the qualifiers
+    * @return the qualifiers
     */
-   @XmlElement(name="qualifier", type=AbstractInjectQualifierMetaData.class)
-   public Set<RelatedClassMetaData> getInjectionPointQualifiers()
+   public Set<RelatedClassMetaData> getQualifiers()
    {
-      return injectionPointQualifiers;
+      return qualifiers;
    }
 
    /**
-    * Set the injectionPointQualifiers
-    * @param injectionPointQualifiers the injectionPointQualifiers to set
+    * Set the qualifiers
+    * @param qualifiers the qualifiers to set
     */
    @XmlElement(name="qualifier", type=AbstractInjectQualifierMetaData.class)
-   public void setInjectionPointQualifiers(Set<RelatedClassMetaData> injectionPointQualifiers)
+   public void setQualifiers(Set<RelatedClassMetaData> qualifiers)
    {
-      this.injectionPointQualifiers = injectionPointQualifiers;
+      this.qualifiers = qualifiers;
    }
 
    /**
@@ -379,7 +374,7 @@
 
    private DependencyItem createDependencyItem(Class<?> injectionClass, ControllerState whenRequired)
    {
-      boolean hasQualifiers = injectionPointQualifiers != null && injectionPointQualifiers.size() > 0;
+      boolean hasQualifiers = qualifiers != null && qualifiers.size() > 0;
       if (!hasQualifiers)
          hasQualifiers = QualifiersMdrUtil.hasWantedQualifiersInParentMdrOrBeanMetaData(context);
       
@@ -392,14 +387,14 @@
                search);
       else
       {
-         Set<Object> qualifiers = null;
-         if (injectionPointQualifiers != null && injectionPointQualifiers.size() > 0)
+         Set<Object> qualifierObjects = null;
+         if (qualifiers != null && qualifiers.size() > 0)
          {
-            qualifiers = new HashSet<Object>(injectionPointQualifiers.size());
-            for (RelatedClassMetaData rcmd : injectionPointQualifiers)
-               qualifiers.addAll(rcmd.getEnabled());
+            qualifierObjects = new HashSet<Object>(qualifiers.size());
+            for (RelatedClassMetaData rcmd : qualifiers)
+               qualifierObjects.addAll(rcmd.getEnabled());
          }
-         classAndQualifierMatcher = new ClassAndQualifierKey(dependentState, context, qualifiers, injectionClass);
+         classAndQualifierMatcher = new ClassAndQualifierKey(dependentState, context, qualifierObjects, injectionClass);
          return new SearchQualifiedClassDependencyItem(context.getName(), 
                classAndQualifierMatcher,
                whenRequired, 

Copied: projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/QualifierType.java (from rev 96942, projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/QualifierType.java)
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/QualifierType.java	                        (rev 0)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/QualifierType.java	2009-11-25 12:49:11 UTC (rev 96945)
@@ -0,0 +1,34 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.beans.metadata.plugins;
+
+import javax.xml.bind.annotation.XmlEnumValue;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public enum QualifierType {
+   @XmlEnumValue("Supplied") SUPPLIED, 
+   @XmlEnumValue("Wanted") WANTED
+}

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/builder/BeanMetaDataBuilderImpl.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/builder/BeanMetaDataBuilderImpl.java	2009-11-25 10:57:59 UTC (rev 96944)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/builder/BeanMetaDataBuilderImpl.java	2009-11-25 12:49:11 UTC (rev 96945)
@@ -24,6 +24,7 @@
 import java.lang.annotation.Annotation;
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
@@ -37,6 +38,7 @@
 import org.jboss.beans.metadata.plugins.AbstractAnnotationMetaData;
 import org.jboss.beans.metadata.plugins.AbstractArrayMetaData;
 import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
+import org.jboss.beans.metadata.plugins.AbstractBeanQualifierMetaData;
 import org.jboss.beans.metadata.plugins.AbstractCallbackMetaData;
 import org.jboss.beans.metadata.plugins.AbstractClassLoaderMetaData;
 import org.jboss.beans.metadata.plugins.AbstractCollectionMetaData;
@@ -45,10 +47,12 @@
 import org.jboss.beans.metadata.plugins.AbstractDependencyMetaData;
 import org.jboss.beans.metadata.plugins.AbstractDependencyValueMetaData;
 import org.jboss.beans.metadata.plugins.AbstractFeatureMetaData;
+import org.jboss.beans.metadata.plugins.AbstractInjectQualifierMetaData;
 import org.jboss.beans.metadata.plugins.AbstractInjectionValueMetaData;
 import org.jboss.beans.metadata.plugins.AbstractInstallMetaData;
 import org.jboss.beans.metadata.plugins.AbstractListMetaData;
 import org.jboss.beans.metadata.plugins.AbstractMapMetaData;
+import org.jboss.beans.metadata.plugins.AbstractParameterMetaData;
 import org.jboss.beans.metadata.plugins.AbstractPropertyMetaData;
 import org.jboss.beans.metadata.plugins.AbstractRelatedClassMetaData;
 import org.jboss.beans.metadata.plugins.AbstractSetMetaData;
@@ -56,9 +60,9 @@
 import org.jboss.beans.metadata.plugins.AbstractValueFactoryMetaData;
 import org.jboss.beans.metadata.plugins.AbstractValueMetaData;
 import org.jboss.beans.metadata.plugins.DirectAnnotationMetaData;
+import org.jboss.beans.metadata.plugins.QualifierType;
 import org.jboss.beans.metadata.plugins.StringValueMetaData;
 import org.jboss.beans.metadata.plugins.ThisValueMetaData;
-import org.jboss.beans.metadata.plugins.AbstractParameterMetaData;
 import org.jboss.beans.metadata.spi.AnnotationMetaData;
 import org.jboss.beans.metadata.spi.BeanMetaData;
 import org.jboss.beans.metadata.spi.BeanMetaDataFactory;
@@ -1098,7 +1102,7 @@
       return new AbstractInjectionValueMetaData(name);
    }
 
-   public ValueMetaData createContextualInject(ControllerState whenRequired, ControllerState dependentState, AutowireType autowire, InjectOption option, SearchInfo search)
+   public ValueMetaData createContextualInject(ControllerState whenRequired, ControllerState dependentState, AutowireType autowire, InjectOption option, SearchInfo search, Object...qualifiers)
    {
       AbstractInjectionValueMetaData result = createAbstractInjectionValueMetaData();
       if (whenRequired != null)
@@ -1111,6 +1115,18 @@
          result.setInjectionOption(option);
       if (search != null)
          result.setSearch(search);
+      if (qualifiers != null && qualifiers.length > 0)
+      {
+         HashSet<RelatedClassMetaData> qualifierSet = new HashSet<RelatedClassMetaData>();
+         
+         for (Object qualifier : qualifiers)
+         {
+            AbstractInjectQualifierMetaData qmd = new AbstractInjectQualifierMetaData();
+            qmd.setEnabled(Collections.singleton(qualifier));
+            qualifierSet.add(qmd);
+         }
+         result.setQualifiers(qualifierSet);
+      }
       return result;
    }
 
@@ -1181,4 +1197,32 @@
          map.setValue(valueType);
       return (Map) map;
    }
+
+   @Override
+   public BeanMetaDataBuilder addSuppliedQualifiers(Object... qualifiers)
+   {
+      return createQualifiers(QualifierType.SUPPLIED, qualifiers);
+   }
+
+   @Override
+   public BeanMetaDataBuilder addWantedQualifiers(Object... qualifiers)
+   {
+      return createQualifiers(QualifierType.WANTED, qualifiers);
+   }
+   
+   protected BeanMetaDataBuilder createQualifiers(QualifierType type, Object...qualifiers)
+   {
+      Set<RelatedClassMetaData> relatedClassMetaDatas = beanMetaData.getRelated();
+      if (relatedClassMetaDatas == null)
+      {
+         relatedClassMetaDatas = new HashSet<RelatedClassMetaData>();
+         beanMetaData.setRelated(relatedClassMetaDatas);
+      }
+      AbstractBeanQualifierMetaData metaData = new AbstractBeanQualifierMetaData();
+      metaData.setType(type);
+      metaData.setEnabled(new HashSet<Object>(Arrays.asList(qualifiers)));
+      relatedClassMetaDatas.add(metaData);
+      
+      return this;
+   }
 }

Deleted: projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/QualifierType.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/QualifierType.java	2009-11-25 10:57:59 UTC (rev 96944)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/QualifierType.java	2009-11-25 12:49:11 UTC (rev 96945)
@@ -1,34 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.beans.metadata.spi;
-
-import javax.xml.bind.annotation.XmlEnumValue;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public enum QualifierType {
-   @XmlEnumValue("Supplied") SUPPLIED, 
-   @XmlEnumValue("Wanted") WANTED
-}

Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/builder/BeanMetaDataBuilder.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/builder/BeanMetaDataBuilder.java	2009-11-25 10:57:59 UTC (rev 96944)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/builder/BeanMetaDataBuilder.java	2009-11-25 12:49:11 UTC (rev 96945)
@@ -1872,8 +1872,36 @@
     * @return new related class meta data
     */
    public abstract RelatedClassMetaData createRelated(String className, Object... enabled);
+   
+   /**
+    * Create qualifiers supplied by the bean. Beans using contextual injection by class
+    * that have qualifiers either at the injection point or 'wanted' qualifiers at bean
+    * level will use these qualifiers to narrow down the set of beans of the required type
+    * for injection. Note that these qualifiers are stored in the set of related classes so
+    * take care not to call {@link #setRelated(Set)} after calling this method.  
+    *
+    * @see BeanMetaData#getRelated()
+    * @see #createWantedQualifier(Object...)
+    * @param qualifiers the qualifiers we want this bean to supply
+    * @return this builder
+    */
+   public abstract BeanMetaDataBuilder addSuppliedQualifiers(Object...qualifiers);
 
    /**
+    * Create the default set of qualifiers we want this bean to use when doing contextual
+    * injection. Only used if there are no qualifiers at the injection point. The qualifiers
+    * are used to narrow down the set of beans of the required type for injection. Note that these 
+    * qualifiers are stored in the set of related classes so take care not to call 
+    * {@link #setRelated(Set)} after calling this method. 
+    * 
+    * @see BeanMetaData#getRelated()
+    * @see #createSuppliedQualifier(Object...)
+    * @param qualifiers the default qualifiers we want this bean to require
+    * @return this builder
+    */
+   public abstract BeanMetaDataBuilder addWantedQualifiers(Object...qualifiers);
+
+   /**
     * Create a null value
     * 
     * @return the null value
@@ -2065,6 +2093,22 @@
    }
 
    /**
+    * Create contextual injection, using the default
+    * whenRequired state of {@link ControllerState#CONFIGURED} and the default dependentState of
+    * {@link ControllerState#INSTANTIATED}. This does not need to specify the name of the bean, 
+    * but looks at the target property/parameter type for autowiring
+    *
+    * @see BeanMetaData#isAutowireCandidate()
+    * @param the qualifiers to use to narrow down beans of the matching type. These will override the ones specified for the 
+    * whole bean in {@link #addWantedQualifiers(Object...)} 
+    * @return the contextual injection
+    */
+   public ValueMetaData createContextualInject(Object...qualifiers)
+   {
+      return createContextualInject(null, null, qualifiers);
+   }
+
+   /**
     * Create contextual injection. This does not need to specify the name of the bean, 
     * but looks at the target property/parameter type for autowiring
     *
@@ -2083,6 +2127,22 @@
     * but looks at the target property/parameter type for autowiring
     *
     * @see BeanMetaData#isAutowireCandidate()
+    * @param whenRequired when the injection is required. If null {@link ControllerState#CONFIGURED} is used.
+    * @param dependentState the required state of the injected bean. If null {@link ControllerState#INSTALLED} is used.
+    * @param the qualifiers to use to narrow down beans of the matching type. These will override the ones specified for the 
+    * whole bean in {@link #addWantedQualifiers(Object...)} 
+    * @return the contextual injection
+    */
+   public ValueMetaData createContextualInject(ControllerState whenRequired, ControllerState dependentState, Object...qualifiers)
+   {
+      return createContextualInject(whenRequired, dependentState, null, null, qualifiers);
+   }
+
+   /**
+    * Create contextual injection. This does not need to specify the name of the bean, 
+    * but looks at the target property/parameter type for autowiring
+    *
+    * @see BeanMetaData#isAutowireCandidate()
     * @see BeanMetaData#getAutowireType()
     * @param whenRequired when the injection is required. If null {@link ControllerState#CONFIGURED} is used.
     * @param dependentState the required state of the injected bean. If null {@link ControllerState#INSTALLED} is used.
@@ -2092,23 +2152,44 @@
     */
    public ValueMetaData createContextualInject(ControllerState whenRequired, ControllerState dependentState, AutowireType autowire, InjectOption option)
    {
-      return createContextualInject(whenRequired, dependentState, autowire, option, null);
+      return createContextualInject(whenRequired, dependentState, autowire, option, null, null);
    }
 
    /**
     * Create contextual injection. This does not need to specify the name of the bean, 
     * but looks at the target property/parameter type for autowiring
     *
+    * @see BeanMetaData#isAutowireCandidate()
+    * @see BeanMetaData#getAutowireType()
     * @param whenRequired when the injection is required. If null {@link ControllerState#CONFIGURED} is used.
     * @param dependentState the required state of the injected bean. If null {@link ControllerState#INSTALLED} is used.
+    * @param autowire the autowire type. If null, the type is {@link AutowireType#BY_CLASS} 
+    * @param option the inject option
+    * @param the qualifiers to use to narrow down beans of the matching type. These will override the ones specified for the 
+    * whole bean in {@link #addWantedQualifiers(Object...)} 
+    * @return the contextual injection
+    */
+   public ValueMetaData createContextualInject(ControllerState whenRequired, ControllerState dependentState, AutowireType autowire, InjectOption option, Object...qualifiers)
+   {
+      return createContextualInject(whenRequired, dependentState, autowire, option, null, qualifiers);
+   }
+
+   /**
+    * Create contextual injection. This does not need to specify the name of the bean, 
+    * but looks at the target property/parameter type for autowiring
+    *
+    * @param whenRequired when the injection is required. If null {@link ControllerState#CONFIGURED} is used.
+    * @param dependentState the required state of the injected bean. If null {@link ControllerState#INSTALLED} is used.
     * @param autowire the autowire type
     * @param option the inject option
     * @param search the search info describing how to search for the injected bean if we have a hierarchy of 
-    * {@link org.jboss.dependency.spi.Controller}s 
+    * {@link org.jboss.dependency.spi.Controller}s
+    * @param the qualifiers to use to narrow down beans of the matching type. These will override the ones specified for the 
+    * whole bean in {@link #addWantedQualifiers(Object...)} 
     * @return the contextual injection
     */
-   public abstract ValueMetaData createContextualInject(ControllerState whenRequired, ControllerState dependentState, AutowireType autowire, InjectOption option, SearchInfo search);
-
+   public abstract ValueMetaData createContextualInject(ControllerState whenRequired, ControllerState dependentState, AutowireType autowire, InjectOption option, SearchInfo search, Object...qualifiers);
+   
    /**
     * Inject values from the context of the bean we are creating, using the default
     * whenRequired state of {@link ControllerState#CONFIGURED} and the default dependentState of

Modified: projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/deployment/xml/test/QualifierTestCase.java
===================================================================
--- projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/deployment/xml/test/QualifierTestCase.java	2009-11-25 10:57:59 UTC (rev 96944)
+++ projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/deployment/xml/test/QualifierTestCase.java	2009-11-25 12:49:11 UTC (rev 96945)
@@ -151,7 +151,7 @@
          {
             ValueMetaData valueMetaData = property.getValue();
             assertInstanceOf(valueMetaData, AbstractInjectionValueMetaData.class);
-            RelatedClassMetaData related = checkRelated(((AbstractInjectionValueMetaData)valueMetaData).getInjectionPointQualifiers());
+            RelatedClassMetaData related = checkRelated(((AbstractInjectionValueMetaData)valueMetaData).getQualifiers());
             assertEquals(QualifiersMdrUtil.WANTED_QUALIFIER_KEY, related.getClassName());
             Set<Object> enabled = related.getEnabled();
             assertNotNull(enabled);
@@ -172,7 +172,7 @@
       assertEquals(1, params.size());
       ValueMetaData valueMetaData = params.get(0).getValue();
       assertInstanceOf(valueMetaData, AbstractInjectionValueMetaData.class);
-      RelatedClassMetaData related = checkRelated(((AbstractInjectionValueMetaData)valueMetaData).getInjectionPointQualifiers());
+      RelatedClassMetaData related = checkRelated(((AbstractInjectionValueMetaData)valueMetaData).getQualifiers());
       assertEquals(QualifiersMdrUtil.WANTED_QUALIFIER_KEY, related.getClassName());
       Set<Object> enabled = related.getEnabled();
       assertNotNull(enabled);
@@ -190,7 +190,7 @@
       assertEquals(1, params.size());
       ValueMetaData valueMetaData = params.get(0).getValue();
       assertInstanceOf(valueMetaData, AbstractInjectionValueMetaData.class);
-      RelatedClassMetaData related = checkRelated(((AbstractInjectionValueMetaData)valueMetaData).getInjectionPointQualifiers());
+      RelatedClassMetaData related = checkRelated(((AbstractInjectionValueMetaData)valueMetaData).getQualifiers());
       assertEquals(QualifiersMdrUtil.WANTED_QUALIFIER_KEY, related.getClassName());
       Set<Object> enabled = related.getEnabled();
       assertNotNull(enabled);

Deleted: projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/test/AbstractQualifiersTest.java
===================================================================
--- projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/test/AbstractQualifiersTest.java	2009-11-25 10:57:59 UTC (rev 96944)
+++ projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/test/AbstractQualifiersTest.java	2009-11-25 12:49:11 UTC (rev 96945)
@@ -1,71 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors. 
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/ 
-package org.jboss.test.kernel.qualifiers.test;
-
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Set;
-
-import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
-import org.jboss.beans.metadata.plugins.AbstractRelatedClassMetaData;
-import org.jboss.beans.metadata.spi.RelatedClassMetaData;
-import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
-import org.jboss.kernel.plugins.dependency.QualifiersMdrUtil;
-import org.jboss.test.kernel.junit.MicrocontainerTest;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public class AbstractQualifiersTest extends MicrocontainerTest
-{
-   public AbstractQualifiersTest(String name)
-   {
-      super(name);
-   }
-
-   protected void addSuppliedQualifiers(BeanMetaDataBuilder builder, Object...qualifiers)
-   {
-      addQualifiers(builder, QualifiersMdrUtil.SUPPLIED_QUALIFIER_KEY, qualifiers);
-   }
-   
-   protected void addWantedQualifiers(BeanMetaDataBuilder builder, Object...qualifiers)
-   {
-      addQualifiers(builder, QualifiersMdrUtil.WANTED_QUALIFIER_KEY, qualifiers);      
-   }
-   
-   protected void addQualifiers(BeanMetaDataBuilder builder, String name, Object...qualifiers)
-   {
-      AbstractBeanMetaData bmd = (AbstractBeanMetaData)builder.getBeanMetaData();
-      Set<RelatedClassMetaData> relatedClassMetaDatas = bmd.getRelated();
-      if (relatedClassMetaDatas == null)
-      {
-         relatedClassMetaDatas = new HashSet<RelatedClassMetaData>();
-         bmd.setRelated(relatedClassMetaDatas);
-      }
-      AbstractRelatedClassMetaData metaData = new AbstractRelatedClassMetaData();
-      metaData.setClassName(name);
-      metaData.setEnabled(new HashSet<Object>(Arrays.asList(qualifiers)));
-      relatedClassMetaDatas.add(metaData);
-   }
-}

Modified: projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/test/BeanQualifiersTestCase.java
===================================================================
--- projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/test/BeanQualifiersTestCase.java	2009-11-25 10:57:59 UTC (rev 96944)
+++ projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/test/BeanQualifiersTestCase.java	2009-11-25 12:49:11 UTC (rev 96945)
@@ -32,6 +32,7 @@
 import org.jboss.kernel.spi.dependency.KernelControllerContext;
 import org.jboss.metadata.plugins.loader.memory.MemoryMetaDataLoader;
 import org.jboss.metadata.spi.scope.ScopeKey;
+import org.jboss.test.kernel.junit.MicrocontainerTest;
 import org.jboss.test.kernel.qualifiers.support.Bean;
 import org.jboss.test.kernel.qualifiers.support.TargetBean;
 
@@ -40,7 +41,7 @@
  * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
  * @version $Revision: 1.1 $
  */
-public class BeanQualifiersTestCase extends AbstractQualifiersTest
+public class BeanQualifiersTestCase extends MicrocontainerTest
 {
    public BeanQualifiersTestCase(String name)
    {
@@ -61,8 +62,8 @@
       KernelControllerContext bean1Context = deploy(bean1Builder.getBeanMetaData());
 
       BeanMetaDataBuilder bean2Builder = BeanMetaDataBuilder.createBuilder("bean2", Bean.class.getName());
-      addSuppliedQualifiers(bean2Builder, "other", "other2");
-      addWantedQualifiers(bean2Builder, "wanted1");
+      bean2Builder.addSuppliedQualifiers("other", "other2");
+      bean2Builder.addWantedQualifiers("wanted1");
       KernelControllerContext bean2Context = deploy(bean2Builder.getBeanMetaData());
 
       try
@@ -106,8 +107,8 @@
       KernelControllerContext bean1Context = deploy(bean1Builder.getBeanMetaData());
 
       BeanMetaDataBuilder bean2Builder = BeanMetaDataBuilder.createBuilder("bean2", Bean.class.getName());
-      addSuppliedQualifiers(bean2Builder, "other");
-      addWantedQualifiers(bean2Builder, "wanted2");
+      bean2Builder.addSuppliedQualifiers("other");
+      bean2Builder.addWantedQualifiers("wanted2");
       KernelControllerContext bean2Context = deploy(bean2Builder.getBeanMetaData());
 
       try
@@ -148,7 +149,7 @@
    public void testSimpleQualifier() throws Throwable
    {
       BeanMetaDataBuilder bean1Builder = BeanMetaDataBuilder.createBuilder("bean1", Bean.class.getName());
-      addSuppliedQualifiers(bean1Builder, "test");
+      bean1Builder.addSuppliedQualifiers("test");
       KernelControllerContext bean1Context = deploy(bean1Builder.getBeanMetaData());
 
       BeanMetaDataBuilder bean2Builder = BeanMetaDataBuilder.createBuilder("bean2", Bean.class.getName());
@@ -156,7 +157,7 @@
 
       BeanMetaDataBuilder targetBuilder = BeanMetaDataBuilder.createBuilder("target", TargetBean.class.getName());
       targetBuilder.setAutowireType(AutowireType.BY_CLASS);
-      addWantedQualifiers(targetBuilder, "test");
+      targetBuilder.addWantedQualifiers("test");
       KernelControllerContext targetContext = deploy(targetBuilder.getBeanMetaData());
       try
       {
@@ -177,16 +178,16 @@
    public void testAmbiguousQualifiers() throws Throwable
    {
       BeanMetaDataBuilder bean1Builder = BeanMetaDataBuilder.createBuilder("bean1", Bean.class.getName());
-      addSuppliedQualifiers(bean1Builder, "test");
+      bean1Builder.addSuppliedQualifiers("test");
       KernelControllerContext bean1Context = deploy(bean1Builder.getBeanMetaData());
 
       BeanMetaDataBuilder bean2Builder = BeanMetaDataBuilder.createBuilder("bean2", Bean.class.getName());
-      addSuppliedQualifiers(bean2Builder, "test");
+      bean2Builder.addSuppliedQualifiers("test");
       KernelControllerContext bean2Context = deploy(bean2Builder.getBeanMetaData());
 
       BeanMetaDataBuilder targetBuilder = BeanMetaDataBuilder.createBuilder("target", TargetBean.class.getName());
       targetBuilder.setAutowireType(AutowireType.BY_CLASS);
-      addWantedQualifiers(targetBuilder, "test");
+      targetBuilder.addWantedQualifiers("test");
       KernelControllerContext targetContext = deploy(targetBuilder.getBeanMetaData());
       try
       {
@@ -205,16 +206,16 @@
    public void testWantedQualifiersNotIncludingAllBeanQualifiers() throws Throwable
    {
       BeanMetaDataBuilder bean1Builder = BeanMetaDataBuilder.createBuilder("bean1", Bean.class.getName());
-      addSuppliedQualifiers(bean1Builder, "test", "other");
+      bean1Builder.addSuppliedQualifiers("test", "other");
       KernelControllerContext bean1Context = deploy(bean1Builder.getBeanMetaData());
 
       BeanMetaDataBuilder bean2Builder = BeanMetaDataBuilder.createBuilder("bean2", Bean.class.getName());
-      addSuppliedQualifiers(bean2Builder, "other");
+      bean2Builder.addSuppliedQualifiers("other");
       KernelControllerContext bean2Context = deploy(bean2Builder.getBeanMetaData());
 
       BeanMetaDataBuilder targetBuilder = BeanMetaDataBuilder.createBuilder("target", TargetBean.class.getName());
       targetBuilder.setAutowireType(AutowireType.BY_CLASS);
-      addWantedQualifiers(targetBuilder, "test");
+      targetBuilder.addWantedQualifiers("test");
       KernelControllerContext targetContext = deploy(targetBuilder.getBeanMetaData());
       try
       {
@@ -233,16 +234,16 @@
    public void testMoreWantedQualifiersThanBeanQualifiers() throws Throwable
    {
       BeanMetaDataBuilder bean1Builder = BeanMetaDataBuilder.createBuilder("bean1", Bean.class.getName());
-      addSuppliedQualifiers(bean1Builder, "test");
+      bean1Builder.addSuppliedQualifiers("test");
       KernelControllerContext bean1Context = deploy(bean1Builder.getBeanMetaData());
 
       BeanMetaDataBuilder bean2Builder = BeanMetaDataBuilder.createBuilder("bean2", Bean.class.getName());
-      addSuppliedQualifiers(bean2Builder, "other");
+      bean2Builder.addSuppliedQualifiers("other");
       KernelControllerContext bean2Context = deploy(bean2Builder.getBeanMetaData());
 
       BeanMetaDataBuilder targetBuilder = BeanMetaDataBuilder.createBuilder("target", TargetBean.class.getName());
       targetBuilder.setAutowireType(AutowireType.BY_CLASS);
-      addWantedQualifiers(targetBuilder, "test", "mock");
+      targetBuilder.addWantedQualifiers("test", "mock");
       KernelControllerContext targetContext = deploy(targetBuilder.getBeanMetaData());
       try
       {
@@ -263,16 +264,16 @@
    public void testMoreWantedQualifiersThanBeanQualifiersMostSelected() throws Throwable
    {
       BeanMetaDataBuilder bean1Builder = BeanMetaDataBuilder.createBuilder("bean1", Bean.class.getName());
-      addSuppliedQualifiers(bean1Builder, "test", "other");
+      bean1Builder.addSuppliedQualifiers("test", "other");
       KernelControllerContext bean1Context = deploy(bean1Builder.getBeanMetaData());
 
       BeanMetaDataBuilder bean2Builder = BeanMetaDataBuilder.createBuilder("bean2", Bean.class.getName());
-      addSuppliedQualifiers(bean2Builder, "test");
+      bean2Builder.addSuppliedQualifiers("test");
       KernelControllerContext bean2Context = deploy(bean2Builder.getBeanMetaData());
 
       BeanMetaDataBuilder targetBuilder = BeanMetaDataBuilder.createBuilder("target", TargetBean.class.getName());
       targetBuilder.setAutowireType(AutowireType.BY_CLASS);
-      addWantedQualifiers(targetBuilder, "test", "other", "mock");
+      targetBuilder.addWantedQualifiers("test", "other", "mock");
       KernelControllerContext targetContext = deploy(targetBuilder.getBeanMetaData());
       try
       {
@@ -293,16 +294,16 @@
    public void testMoreWantedQualifiersThanBeanQualifiersMostSelected2() throws Throwable
    {
       BeanMetaDataBuilder bean1Builder = BeanMetaDataBuilder.createBuilder("bean1", Bean.class.getName());
-      addSuppliedQualifiers(bean1Builder, "test");
+      bean1Builder.addSuppliedQualifiers("test");
       KernelControllerContext bean1Context = deploy(bean1Builder.getBeanMetaData());
 
       BeanMetaDataBuilder bean2Builder = BeanMetaDataBuilder.createBuilder("bean2", Bean.class.getName());
-      addSuppliedQualifiers(bean2Builder, "test", "other");
+      bean2Builder.addSuppliedQualifiers("test", "other");
       KernelControllerContext bean2Context = deploy(bean2Builder.getBeanMetaData());
 
       BeanMetaDataBuilder targetBuilder = BeanMetaDataBuilder.createBuilder("target", TargetBean.class.getName());
       targetBuilder.setAutowireType(AutowireType.BY_CLASS);
-      addWantedQualifiers(targetBuilder, "test", "other", "mock");
+      targetBuilder.addWantedQualifiers("test", "other", "mock");
       KernelControllerContext targetContext = deploy(targetBuilder.getBeanMetaData());
       try
       {
@@ -323,16 +324,16 @@
    public void testMoreWantedQualifiersThanBeanQualifiersAmbiguity() throws Throwable
    {
       BeanMetaDataBuilder bean1Builder = BeanMetaDataBuilder.createBuilder("bean1", Bean.class.getName());
-      addSuppliedQualifiers(bean1Builder, "test");
+      bean1Builder.addSuppliedQualifiers("test");
       KernelControllerContext bean1Context = deploy(bean1Builder.getBeanMetaData());
 
       BeanMetaDataBuilder bean2Builder = BeanMetaDataBuilder.createBuilder("bean2", Bean.class.getName());
-      addSuppliedQualifiers(bean2Builder, "other");
+      bean2Builder.addSuppliedQualifiers("other");
       KernelControllerContext bean2Context = deploy(bean2Builder.getBeanMetaData());
 
       BeanMetaDataBuilder targetBuilder = BeanMetaDataBuilder.createBuilder("target", TargetBean.class.getName());
       targetBuilder.setAutowireType(AutowireType.BY_CLASS);
-      addWantedQualifiers(targetBuilder, "test", "other");
+      bean1Builder.addWantedQualifiers("test", "other");
       KernelControllerContext targetContext = deploy(targetBuilder.getBeanMetaData());
       try
       {
@@ -359,7 +360,7 @@
 
       BeanMetaDataBuilder targetBuilder = BeanMetaDataBuilder.createBuilder("target", TargetBean.class.getName());
       targetBuilder.setAutowireType(AutowireType.BY_CLASS);
-      addWantedQualifiers(targetBuilder, "test");
+      targetBuilder.addWantedQualifiers("test");
       KernelControllerContext targetContext = deploy(targetBuilder.getBeanMetaData());
       try
       {
@@ -383,16 +384,16 @@
       getMetaDataRepository().getMetaDataRepository().addMetaDataRetrieval(loader);
 
       BeanMetaDataBuilder bean1Builder = BeanMetaDataBuilder.createBuilder("bean1", Bean.class.getName());
-      addSuppliedQualifiers(bean1Builder, "other");
+      bean1Builder.addSuppliedQualifiers("other");
       KernelControllerContext bean1Context = deploy(bean1Builder.getBeanMetaData());
 
       BeanMetaDataBuilder bean2Builder = BeanMetaDataBuilder.createBuilder("bean2", Bean.class.getName());
-      addSuppliedQualifiers(bean2Builder, "else");
+      bean2Builder.addSuppliedQualifiers("else");
       KernelControllerContext bean2Context = deploy(bean2Builder.getBeanMetaData());
 
       BeanMetaDataBuilder targetBuilder = BeanMetaDataBuilder.createBuilder("target", TargetBean.class.getName());
       targetBuilder.setAutowireType(AutowireType.BY_CLASS);
-      addWantedQualifiers(targetBuilder, "test", "other");
+      targetBuilder.addWantedQualifiers("test", "other");
       KernelControllerContext targetContext = deploy(targetBuilder.getBeanMetaData());
       try
       {
@@ -418,7 +419,7 @@
       getMetaDataRepository().getMetaDataRepository().addMetaDataRetrieval(loader);
 
       BeanMetaDataBuilder bean1Builder = BeanMetaDataBuilder.createBuilder("bean1", Bean.class.getName());
-      addSuppliedQualifiers(bean1Builder, "test");
+      bean1Builder.addSuppliedQualifiers("test");
       KernelControllerContext bean1Context = deploy(bean1Builder.getBeanMetaData());
 
       BeanMetaDataBuilder targetBuilder = BeanMetaDataBuilder.createBuilder("target", TargetBean.class.getName());
@@ -446,16 +447,16 @@
       getMetaDataRepository().getMetaDataRepository().addMetaDataRetrieval(loader);
 
       BeanMetaDataBuilder bean1Builder = BeanMetaDataBuilder.createBuilder("bean1", Bean.class.getName());
-      addSuppliedQualifiers(bean1Builder, "other");
+      bean1Builder.addSuppliedQualifiers("other");
       KernelControllerContext bean1Context = deploy(bean1Builder.getBeanMetaData());
 
       BeanMetaDataBuilder bean2Builder = BeanMetaDataBuilder.createBuilder("bean2", Bean.class.getName());
-      addSuppliedQualifiers(bean2Builder, "else");
+      bean2Builder.addSuppliedQualifiers("else");
       KernelControllerContext bean2Context = deploy(bean2Builder.getBeanMetaData());
 
       BeanMetaDataBuilder targetBuilder = BeanMetaDataBuilder.createBuilder("target", TargetBean.class.getName());
       targetBuilder.setAutowireType(AutowireType.BY_CLASS);
-      addWantedQualifiers(targetBuilder, "other");
+      targetBuilder.addWantedQualifiers("other");
       KernelControllerContext targetContext = deploy(targetBuilder.getBeanMetaData());
       try
       {

Modified: projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/test/InjectionPointQualifiersTestCase.java
===================================================================
--- projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/test/InjectionPointQualifiersTestCase.java	2009-11-25 10:57:59 UTC (rev 96944)
+++ projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/test/InjectionPointQualifiersTestCase.java	2009-11-25 12:49:11 UTC (rev 96945)
@@ -21,18 +21,12 @@
 */ 
 package org.jboss.test.kernel.qualifiers.test;
 
-import java.util.Collections;
-import java.util.HashSet;
-
 import junit.framework.Test;
 
-import org.jboss.beans.metadata.api.model.AutowireType;
-import org.jboss.beans.metadata.plugins.AbstractInjectQualifierMetaData;
-import org.jboss.beans.metadata.plugins.AbstractInjectionValueMetaData;
 import org.jboss.beans.metadata.spi.BeanMetaData;
-import org.jboss.beans.metadata.spi.RelatedClassMetaData;
 import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
 import org.jboss.kernel.spi.dependency.KernelControllerContext;
+import org.jboss.test.kernel.junit.MicrocontainerTest;
 import org.jboss.test.kernel.qualifiers.support.Bean;
 import org.jboss.test.kernel.qualifiers.support.Target;
 import org.jboss.test.kernel.qualifiers.support.TargetConstructorBean;
@@ -44,7 +38,7 @@
  * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
  * @version $Revision: 1.1 $
  */
-public class InjectionPointQualifiersTestCase extends AbstractQualifiersTest
+public class InjectionPointQualifiersTestCase extends MicrocontainerTest
 {
    public InjectionPointQualifiersTestCase(String name)
    {
@@ -74,7 +68,7 @@
    private <T extends Target> void testSimpleQualifiers(Class<T> targetClass, TargetType type) throws Throwable
    {
       BeanMetaDataBuilder bean1Builder = BeanMetaDataBuilder.createBuilder("bean1", Bean.class.getName());
-      addSuppliedQualifiers(bean1Builder, "test");
+      bean1Builder.addSuppliedQualifiers(bean1Builder, "test");
       KernelControllerContext bean1Context = deploy(bean1Builder.getBeanMetaData());
 
       BeanMetaDataBuilder bean2Builder = BeanMetaDataBuilder.createBuilder("bean2", Bean.class.getName());
@@ -115,15 +109,15 @@
    private <T extends Target> void testNeedsAllQualifiers(Class<T> targetClass, TargetType type) throws Throwable
    {
       BeanMetaDataBuilder bean1Builder = BeanMetaDataBuilder.createBuilder("bean1", Bean.class.getName());
-      addSuppliedQualifiers(bean1Builder, "test1", "test2");
+      bean1Builder.addSuppliedQualifiers(bean1Builder, "test1", "test2");
       KernelControllerContext bean1Context = deploy(bean1Builder.getBeanMetaData());
 
       BeanMetaDataBuilder bean2Builder = BeanMetaDataBuilder.createBuilder("bean2", Bean.class.getName());
-      addSuppliedQualifiers(bean2Builder, "test1", "test3", "test2");
+      bean2Builder.addSuppliedQualifiers(bean2Builder, "test1", "test3", "test2");
       KernelControllerContext bean2Context = deploy(bean2Builder.getBeanMetaData());
 
       BeanMetaDataBuilder bean3Builder = BeanMetaDataBuilder.createBuilder("bean3", Bean.class.getName());
-      addSuppliedQualifiers(bean3Builder, "test2", "test3");
+      bean3Builder.addSuppliedQualifiers(bean3Builder, "test2", "test3");
       KernelControllerContext bean3Context = deploy(bean3Builder.getBeanMetaData());
 
       KernelControllerContext targetContext = deploy(createTargetMetaData(type, "test1", "test2", "test3"));
@@ -163,11 +157,11 @@
    private <T extends Target> void testNoContextHasAllQualifiers(Class<T> targetClass, TargetType type) throws Throwable
    {
       BeanMetaDataBuilder bean1Builder = BeanMetaDataBuilder.createBuilder("bean1", Bean.class.getName());
-      addSuppliedQualifiers(bean1Builder, "test");
+      bean1Builder.addSuppliedQualifiers(bean1Builder, "test");
       KernelControllerContext bean1Context = deploy(bean1Builder.getBeanMetaData());
 
       BeanMetaDataBuilder bean2Builder = BeanMetaDataBuilder.createBuilder("bean2", Bean.class.getName());
-      addSuppliedQualifiers(bean2Builder, "other");
+      bean2Builder.addSuppliedQualifiers(bean2Builder, "other");
       KernelControllerContext bean2Context = deploy(bean2Builder.getBeanMetaData());
 
       KernelControllerContext targetContext = deploy(createTargetMetaData(type, "test", "other"));
@@ -203,11 +197,11 @@
    private <T extends Target> void testTwoContextsHaveAllRequiredQualifiers(Class<T> targetClass, TargetType type) throws Throwable
    {
       BeanMetaDataBuilder bean1Builder = BeanMetaDataBuilder.createBuilder("bean1", Bean.class.getName());
-      addSuppliedQualifiers(bean1Builder, "test1", "test2");
+      bean1Builder.addSuppliedQualifiers(bean1Builder, "test1", "test2");
       KernelControllerContext bean1Context = deploy(bean1Builder.getBeanMetaData());
 
       BeanMetaDataBuilder bean2Builder = BeanMetaDataBuilder.createBuilder("bean2", Bean.class.getName());
-      addSuppliedQualifiers(bean2Builder, "test1", "test2");
+      bean2Builder.addSuppliedQualifiers(bean2Builder, "test1", "test2");
       KernelControllerContext bean2Context = deploy(bean2Builder.getBeanMetaData());
 
       KernelControllerContext targetContext = deploy(createTargetMetaData(type, "test1", "test2"));
@@ -243,11 +237,11 @@
    private <T extends Target> void testTwoContextsHaveMoreThanRequiredQualifiers(Class<T> targetClass, TargetType type) throws Throwable
    {
       BeanMetaDataBuilder bean1Builder = BeanMetaDataBuilder.createBuilder("bean1", Bean.class.getName());
-      addSuppliedQualifiers(bean1Builder, "test1", "test2", "extra1");
+      bean1Builder.addSuppliedQualifiers(bean1Builder, "test1", "test2", "extra1");
       KernelControllerContext bean1Context = deploy(bean1Builder.getBeanMetaData());
 
       BeanMetaDataBuilder bean2Builder = BeanMetaDataBuilder.createBuilder("bean2", Bean.class.getName());
-      addSuppliedQualifiers(bean2Builder, "test1", "test2", "extra2");
+      bean2Builder.addSuppliedQualifiers(bean2Builder, "test1", "test2", "extra2");
       KernelControllerContext bean2Context = deploy(bean2Builder.getBeanMetaData());
 
       KernelControllerContext targetContext = deploy(createTargetMetaData(type, "test1", "test2"));
@@ -283,11 +277,11 @@
    private <T extends Target> void testBeanQualifiersIgnoredWhenQualifiersPresent(Class<T> targetClass, TargetType type) throws Throwable
    {
       BeanMetaDataBuilder bean1Builder = BeanMetaDataBuilder.createBuilder("bean1", Bean.class.getName());
-      addSuppliedQualifiers(bean1Builder, "test");
+      bean1Builder.addSuppliedQualifiers(bean1Builder, "test");
       KernelControllerContext bean1Context = deploy(bean1Builder.getBeanMetaData());
 
       BeanMetaDataBuilder bean2Builder = BeanMetaDataBuilder.createBuilder("bean2", Bean.class.getName());
-      addSuppliedQualifiers(bean2Builder, "other");
+      bean2Builder.addSuppliedQualifiers(bean2Builder, "other");
       KernelControllerContext bean2Context = deploy(bean2Builder.getBeanMetaData());
 
       KernelControllerContext targetContext = deploy(addWantedQualifiers(createTargetMetaData(type, "test"), "ignored"));
@@ -325,11 +319,11 @@
    private <T extends Target> void testBeanQualifiersIgnoredWhenQualifiersPresent2(Class<T> targetClass, TargetType type) throws Throwable
    {
       BeanMetaDataBuilder bean1Builder = BeanMetaDataBuilder.createBuilder("bean1", Bean.class.getName());
-      addSuppliedQualifiers(bean1Builder, "test");
+      bean1Builder.addSuppliedQualifiers(bean1Builder, "test");
       KernelControllerContext bean1Context = deploy(bean1Builder.getBeanMetaData());
 
       BeanMetaDataBuilder bean2Builder = BeanMetaDataBuilder.createBuilder("bean2", Bean.class.getName());
-      addSuppliedQualifiers(bean2Builder, "other");
+      bean2Builder.addSuppliedQualifiers(bean2Builder, "other");
       KernelControllerContext bean2Context = deploy(bean2Builder.getBeanMetaData());
 
       KernelControllerContext targetContext = deploy(addWantedQualifiers(createTargetMetaData(type, "injectionpoint"), "test"));
@@ -350,41 +344,28 @@
    private BeanMetaData addWantedQualifiers(BeanMetaData bmd, Object...qualifiers)
    {
       BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder(bmd);
-      addWantedQualifiers(builder, qualifiers);
+      builder.addWantedQualifiers(builder, qualifiers);
       return builder.getBeanMetaData();
    }
 
    private BeanMetaData createTargetMetaData(TargetType type, Object...qualifiers)
    {
-      AbstractInjectionValueMetaData inject = new AbstractInjectionValueMetaData();
-      HashSet<RelatedClassMetaData> qualifierSet = new HashSet<RelatedClassMetaData>();
-      
-      for (Object qualifier : qualifiers)
-      {
-         AbstractInjectQualifierMetaData qmd = new AbstractInjectQualifierMetaData();
-         qmd.setEnabled(Collections.singleton(qualifier));
-         qualifierSet.add(qmd);
-      }
-      inject.setInjectionPointQualifiers(qualifierSet);
-      
       BeanMetaDataBuilder targetBuilder = null;
       if (type == TargetType.PROPERTY)
       {
          targetBuilder = BeanMetaDataBuilder.createBuilder("target", TargetPropertyBean.class.getName());
-         targetBuilder.addPropertyMetaData("bean", inject);
-         
+         targetBuilder.addPropertyMetaData("bean", targetBuilder.createContextualInject(qualifiers));
       }
       else if (type == TargetType.CONSTRUCTOR)
       {
          targetBuilder = BeanMetaDataBuilder.createBuilder("target", TargetConstructorBean.class.getName());
-         targetBuilder.addConstructorParameter(Bean.class.getName(), inject);
+         targetBuilder.addConstructorParameter(Bean.class.getName(), targetBuilder.createContextualInject(qualifiers));
       }
       else
       {
          targetBuilder = BeanMetaDataBuilder.createBuilder("target", TargetMethodBean.class.getName());
-         targetBuilder.addInstall("installBean", Bean.class.getName(), inject);
+         targetBuilder.addInstall("installBean", Bean.class.getName(), targetBuilder.createContextualInject(qualifiers));
       }
-      targetBuilder.setAutowireType(AutowireType.BY_CLASS);
 
       return targetBuilder.getBeanMetaData();
    }

Modified: projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/test/QualifiersTestSuite.java
===================================================================
--- projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/test/QualifiersTestSuite.java	2009-11-25 10:57:59 UTC (rev 96944)
+++ projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/test/QualifiersTestSuite.java	2009-11-25 12:49:11 UTC (rev 96945)
@@ -41,6 +41,7 @@
 
       suite.addTest(BeanQualifiersTestCase.suite());
       suite.addTest(InjectionPointQualifiersTestCase.suite());
+      suite.addTest(QualifiersXmlTestCase.suite());
 
       return suite;
    }

Modified: projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/test/QualifiersXmlTestCase.java
===================================================================
--- projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/test/QualifiersXmlTestCase.java	2009-11-25 10:57:59 UTC (rev 96944)
+++ projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/test/QualifiersXmlTestCase.java	2009-11-25 12:49:11 UTC (rev 96945)
@@ -23,6 +23,7 @@
 
 import junit.framework.Test;
 
+import org.jboss.test.kernel.junit.MicrocontainerTest;
 import org.jboss.test.kernel.qualifiers.support.Bean;
 import org.jboss.test.kernel.qualifiers.support.TargetBean;
 import org.jboss.test.kernel.qualifiers.support.TargetConstructorBean;
@@ -34,7 +35,7 @@
  * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
  * @version $Revision: 1.1 $
  */
-public class QualifiersXmlTestCase extends AbstractQualifiersTest
+public class QualifiersXmlTestCase extends MicrocontainerTest
 {
    public QualifiersXmlTestCase(String name)
    {




More information about the jboss-cvs-commits mailing list