[jboss-cvs] JBossAS SVN: r96942 - in projects/kernel/trunk/kernel: src/main/java/org/jboss/beans/metadata/plugins and 11 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Nov 25 05:36:04 EST 2009
Author: kabir.khan at jboss.com
Date: 2009-11-25 05:36:03 -0500 (Wed, 25 Nov 2009)
New Revision: 96942
Added:
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/spi/QualifierType.java
projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/ClassAndQualifierKey.java
projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/QualifiedClassDependencyItem.java
projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/QualifiersMdrUtil.java
projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/SearchQualifiedClassDependencyItem.java
projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/deployment/xml/test/QualifierCloneTestCase.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/
projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/support/
projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/support/Bean.java
projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/support/Target.java
projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/support/TargetBean.java
projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/support/TargetConstructorBean.java
projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/support/TargetMethodBean.java
projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/support/TargetPropertyBean.java
projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/test/
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/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
projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/deployment/xml/test/QualifierBeanWithEnabled.xml
projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/deployment/xml/test/QualifierBeanWithEnableds.xml
projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/deployment/xml/test/QualifierBeanWithNameFails.xml
projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/deployment/xml/test/QualifierBeanWithSuppliedType.xml
projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/deployment/xml/test/QualifierBeanWithWantedType.xml
projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/deployment/xml/test/QualifierBeanWithWrongTypeFails.xml
projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/deployment/xml/test/QualifierConstructorParameterInjectWithEnabled.xml
projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/deployment/xml/test/QualifierMethodParameterInjectWithEnabled.xml
projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/deployment/xml/test/QualifierPropertyInjectWithEnableds.xml
projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/deployment/xml/test/QualifierPropertyInjectWithNameFail.xml
projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/qualifiers/
projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/qualifiers/test/
projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/qualifiers/test/QualifiersXmlTestCase#testCompositeBeanQualifiers.xml
projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/qualifiers/test/QualifiersXmlTestCase#testCompositeConstructorQualifiers.xml
projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/qualifiers/test/QualifiersXmlTestCase#testCompositeMethodQualifiers.xml
projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/qualifiers/test/QualifiersXmlTestCase#testCompositePropertyQualifiers.xml
projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/qualifiers/test/QualifiersXmlTestCase#testPropertyAndCompositeBeanQualifiers.xml
projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/qualifiers/test/QualifiersXmlTestCase#testPropertyAndSimpleBeanQualifiers.xml
projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/qualifiers/test/QualifiersXmlTestCase#testSimpleBeanQualifiers.xml
projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/qualifiers/test/QualifiersXmlTestCase#testSimpleConstructorQualifiers.xml
projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/qualifiers/test/QualifiersXmlTestCase#testSimpleMethodQualifiers.xml
projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/qualifiers/test/QualifiersXmlTestCase#testSimplePropertyQualifiers.xml
Modified:
projects/kernel/trunk/kernel/pom.xml
projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractBeanMetaData.java
projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractInjectionValueMetaData.java
projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/AbstractKernelController.java
projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/InstantiateAction.java
projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/PreInstallAction.java
projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/KernelTestSuite.java
projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/deployment/xml/test/XMLTestSuite.java
Log:
[JBKERNEL-63] Initial qualifiers support
Modified: projects/kernel/trunk/kernel/pom.xml
===================================================================
--- projects/kernel/trunk/kernel/pom.xml 2009-11-25 10:21:35 UTC (rev 96941)
+++ projects/kernel/trunk/kernel/pom.xml 2009-11-25 10:36:03 UTC (rev 96942)
@@ -124,6 +124,10 @@
<artifactId>jbossxb</artifactId>
</dependency>
<dependency>
+ <groupId>javax.inject</groupId>
+ <artifactId>javax.inject</artifactId>
+ </dependency>
+ <dependency>
<groupId>org.jboss.test</groupId>
<artifactId>jboss-test</artifactId>
<optional>true</optional>
Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractBeanMetaData.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractBeanMetaData.java 2009-11-25 10:21:35 UTC (rev 96941)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractBeanMetaData.java 2009-11-25 10:36:03 UTC (rev 96942)
@@ -21,22 +21,25 @@
*/
package org.jboss.beans.metadata.plugins;
+import static org.jboss.beans.metadata.plugins.CloneUtil.cloneList;
+import static org.jboss.beans.metadata.plugins.CloneUtil.cloneObject;
+import static org.jboss.beans.metadata.plugins.CloneUtil.cloneSet;
+
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
+
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElements;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
import javax.xml.bind.annotation.XmlType;
import org.jboss.beans.info.spi.BeanAccessMode;
import org.jboss.beans.metadata.api.model.AutowireType;
-import static org.jboss.beans.metadata.plugins.CloneUtil.cloneList;
-import static org.jboss.beans.metadata.plugins.CloneUtil.cloneObject;
-import static org.jboss.beans.metadata.plugins.CloneUtil.cloneSet;
import org.jboss.beans.metadata.spi.AliasMetaData;
import org.jboss.beans.metadata.spi.BeanMetaData;
import org.jboss.beans.metadata.spi.BeanMetaDataFactory;
@@ -50,8 +53,8 @@
import org.jboss.beans.metadata.spi.MetaDataVisitor;
import org.jboss.beans.metadata.spi.MetaDataVisitorNode;
import org.jboss.beans.metadata.spi.PropertyMetaData;
+import org.jboss.beans.metadata.spi.RelatedClassMetaData;
import org.jboss.beans.metadata.spi.SupplyMetaData;
-import org.jboss.beans.metadata.spi.RelatedClassMetaData;
import org.jboss.dependency.plugins.AbstractDependencyItem;
import org.jboss.dependency.spi.Controller;
import org.jboss.dependency.spi.ControllerContext;
@@ -359,7 +362,9 @@
return related;
}
- @XmlElement(name="related-class", type=AbstractRelatedClassMetaData.class)
+ @XmlElements({
+ @XmlElement(name="related-class", type=AbstractRelatedClassMetaData.class),
+ @XmlElement(name="qualifier", type=AbstractBeanQualifierMetaData.class)})
public void setRelated(Set<RelatedClassMetaData> related)
{
this.related = related;
Added: 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 (rev 0)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractBeanQualifierMetaData.java 2009-11-25 10:36:03 UTC (rev 96942)
@@ -0,0 +1,60 @@
+/*
+* 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.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+import org.jboss.beans.metadata.spi.QualifierType;
+import org.jboss.kernel.plugins.dependency.QualifiersMdrUtil;
+
+/**
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="qualifierType")
+public class AbstractBeanQualifierMetaData extends AbstractInjectQualifierMetaData
+{
+ private static final long serialVersionUID = 1L;
+
+ protected QualifierType type = QualifierType.SUPPLIED;
+
+ @Override
+ public String getClassName()
+ {
+ if (type == QualifierType.SUPPLIED)
+ return QualifiersMdrUtil.SUPPLIED_QUALIFIER_KEY;
+ return QualifiersMdrUtil.WANTED_QUALIFIER_KEY;
+ }
+
+ public QualifierType getType()
+ {
+ return type;
+ }
+
+ @XmlAttribute(name="type")
+ public void setType(QualifierType type)
+ {
+ this.type = type;
+ }
+}
Added: 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 (rev 0)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractInjectQualifierMetaData.java 2009-11-25 10:36:03 UTC (rev 96942)
@@ -0,0 +1,51 @@
+/*
+* 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.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+import org.jboss.kernel.plugins.dependency.QualifiersMdrUtil;
+
+/**
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+ at XmlType(name="qualifierType")
+public class AbstractInjectQualifierMetaData extends AbstractRelatedClassMetaData
+{
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public String getClassName()
+ {
+ return QualifiersMdrUtil.WANTED_QUALIFIER_KEY;
+ }
+
+ @Override
+ @XmlAttribute(name="name")
+ public void setClassName(String classname)
+ {
+ throw new IllegalStateException("Class name can not be set for qualifiers");
+ }
+}
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:21:35 UTC (rev 96941)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractInjectionValueMetaData.java 2009-11-25 10:36:03 UTC (rev 96942)
@@ -21,7 +21,11 @@
*/
package org.jboss.beans.metadata.plugins;
+import java.util.HashSet;
+import java.util.Set;
+
import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlTransient;
import javax.xml.bind.annotation.XmlType;
@@ -30,11 +34,15 @@
import org.jboss.beans.metadata.api.model.InjectOption;
import org.jboss.beans.metadata.spi.MetaDataVisitor;
import org.jboss.beans.metadata.spi.MetaDataVisitorNode;
+import org.jboss.beans.metadata.spi.RelatedClassMetaData;
import org.jboss.dependency.plugins.AttributeCallbackItem;
import org.jboss.dependency.spi.ControllerContext;
import org.jboss.dependency.spi.ControllerState;
import org.jboss.dependency.spi.DependencyItem;
+import org.jboss.kernel.plugins.dependency.ClassAndQualifierKey;
+import org.jboss.kernel.plugins.dependency.QualifiersMdrUtil;
import org.jboss.kernel.plugins.dependency.SearchClassContextDependencyItem;
+import org.jboss.kernel.plugins.dependency.SearchQualifiedClassDependencyItem;
import org.jboss.reflect.spi.TypeInfo;
import org.jboss.util.JBossStringBuilder;
@@ -43,7 +51,7 @@
*
* @author <a href="ales.justin at gmail.com">Ales Justin</a>
*/
- at XmlType(name="injectionType")
+ at XmlType(name="injectionType", propOrder="injectionPointQualifiers")
public class AbstractInjectionValueMetaData extends AbstractDependencyValueMetaData
{
private static final long serialVersionUID = 3L;
@@ -53,6 +61,16 @@
protected InjectOption injectionOption = InjectOption.STRICT;
protected FromContext fromContext;
+
+ /** 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;
/**
* Simplyifies things with AutowireType.BY_NAME
@@ -130,8 +148,28 @@
{
this.propertyMetaData = propertyMetaData;
}
+
+ /**
+ * Get the injectionPointQualifiers
+ * @return the injectionPointQualifiers
+ */
+ @XmlElement(name="qualifier", type=AbstractInjectQualifierMetaData.class)
+ public Set<RelatedClassMetaData> getInjectionPointQualifiers()
+ {
+ return injectionPointQualifiers;
+ }
/**
+ * Set the injectionPointQualifiers
+ * @param injectionPointQualifiers the injectionPointQualifiers to set
+ */
+ @XmlElement(name="qualifier", type=AbstractInjectQualifierMetaData.class)
+ public void setInjectionPointQualifiers(Set<RelatedClassMetaData> injectionPointQualifiers)
+ {
+ this.injectionPointQualifiers = injectionPointQualifiers;
+ }
+
+ /**
* Add install/callback item.
*
* @param name the callback name
@@ -180,7 +218,8 @@
// by class type
if (getUnderlyingValue() == null)
{
- ControllerContext lookup = getControllerContext(info.getType(), ControllerState.INSTALLED);
+ Object key = classAndQualifierMatcher == null ? info.getType() : classAndQualifierMatcher;
+ ControllerContext lookup = getControllerContext(key, ControllerState.INSTALLED);
if (lookup == null)
{
if (InjectOption.STRICT.equals(injectionOption))
@@ -207,7 +246,8 @@
{
if (getUnderlyingValue() == null)
{
- ControllerContext lookup = getControllerContext(info.getType(), ControllerState.INSTALLED);
+ Object key = classAndQualifierMatcher == null ? info.getType() : classAndQualifierMatcher;
+ ControllerContext lookup = getControllerContext(key, ControllerState.INSTALLED);
if (lookup != null)
{
ungetTarget(context, lookup);
@@ -307,12 +347,7 @@
{
whenRequired = visitor.getContextState();
}
- DependencyItem item = new SearchClassContextDependencyItem(
- context.getName(),
- injectionClass,
- whenRequired,
- dependentState,
- search);
+ DependencyItem item = createDependencyItem(injectionClass, whenRequired);
visitor.addDependency(item);
}
else
@@ -342,6 +377,37 @@
super.describeVisit(visitor);
}
+ private DependencyItem createDependencyItem(Class<?> injectionClass, ControllerState whenRequired)
+ {
+ boolean hasQualifiers = injectionPointQualifiers != null && injectionPointQualifiers.size() > 0;
+ if (!hasQualifiers)
+ hasQualifiers = QualifiersMdrUtil.hasWantedQualifiersInParentMdrOrBeanMetaData(context);
+
+ if (!hasQualifiers)
+ return new SearchClassContextDependencyItem(
+ context.getName(),
+ injectionClass,
+ whenRequired,
+ dependentState,
+ search);
+ else
+ {
+ Set<Object> qualifiers = null;
+ if (injectionPointQualifiers != null && injectionPointQualifiers.size() > 0)
+ {
+ qualifiers = new HashSet<Object>(injectionPointQualifiers.size());
+ for (RelatedClassMetaData rcmd : injectionPointQualifiers)
+ qualifiers.addAll(rcmd.getEnabled());
+ }
+ classAndQualifierMatcher = new ClassAndQualifierKey(dependentState, context, qualifiers, injectionClass);
+ return new SearchQualifiedClassDependencyItem(context.getName(),
+ classAndQualifierMatcher,
+ whenRequired,
+ dependentState,
+ search);
+ }
+ }
+
public void toString(JBossStringBuilder buffer)
{
super.toString(buffer);
Added: 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 (rev 0)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/QualifierType.java 2009-11-25 10:36:03 UTC (rev 96942)
@@ -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.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/kernel/plugins/dependency/AbstractKernelController.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/AbstractKernelController.java 2009-11-25 10:21:35 UTC (rev 96941)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/AbstractKernelController.java 2009-11-25 10:36:03 UTC (rev 96942)
@@ -107,7 +107,9 @@
public KernelRegistryEntry getEntry(Object name)
{
List<KernelControllerContext> list;
- if (name instanceof Matcher)
+ if (name instanceof ClassAndQualifierKey)
+ return ((ClassAndQualifierKey)name).search(this);
+ else if (name instanceof Matcher)
list = matchSupplies((Matcher)name);
else
list = suppliers.get(name);
Added: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/ClassAndQualifierKey.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/ClassAndQualifierKey.java (rev 0)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/ClassAndQualifierKey.java 2009-11-25 10:36:03 UTC (rev 96942)
@@ -0,0 +1,220 @@
+/*
+* 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.kernel.plugins.dependency;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Set;
+
+import org.jboss.dependency.spi.ControllerContext;
+import org.jboss.dependency.spi.ControllerState;
+import org.jboss.kernel.spi.dependency.KernelController;
+import org.jboss.kernel.spi.dependency.KernelControllerContext;
+import org.jboss.util.JBossObject;
+import org.jboss.util.JBossStringBuilder;
+
+/**
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class ClassAndQualifierKey extends JBossObject
+{
+ /** The type of class we are looking for */
+ private final Class<?> type;
+
+ /** The state of the dependency */
+ private final ControllerState dependentState;
+
+ /** The context containing the wanted qualifiers */
+ private final KernelControllerContext context;
+
+ private final Set<Object> injectionPointQualifiers;
+
+ public ClassAndQualifierKey(ControllerState dependentState, KernelControllerContext context, Set<Object> injectionPointQualifiers, Class<?> type)
+ {
+ this.dependentState = dependentState == null ? ControllerState.INSTALLED : dependentState;
+ this.context = context;
+ this.injectionPointQualifiers = injectionPointQualifiers != null && injectionPointQualifiers.size() > 0 ? injectionPointQualifiers : null;
+ this.type = type;
+ }
+
+ /**
+ * Look for a context in the controller.
+ */
+ public KernelControllerContext search(KernelController controller)
+ {
+ Set<ControllerContext> contexts = controller.getContexts(type, dependentState);
+
+ if (contexts == null || contexts.size() == 0)
+ return null;
+
+ List<ControllerContext> found;
+ if (injectionPointQualifiers != null)
+ found = getContextsWithAllQualifiers(injectionPointQualifiers, contexts);
+ else
+ {
+ Set<Object> qualifiers = QualifiersMdrUtil.mergeWantedQualifiersFromMdr(context);
+ if (qualifiers == null || qualifiers.size() == 0)
+ return getFirstContext(contexts);
+
+ found = getContextsWithMostQualifiers(qualifiers, contexts);
+ }
+ return getFirstContext(found);
+ }
+
+ private KernelControllerContext getFirstContext(Collection<? extends ControllerContext> contexts)
+ {
+ if (contexts.size() == 0)
+ return null;
+
+ KernelControllerContext found = null;
+ if (contexts.size() > 0)
+ {
+ for (ControllerContext context : contexts)
+ {
+ if (context instanceof KernelControllerContext)
+ {
+ if (found != null)
+ {
+ log.warn("Multiple beans match qualifiers and class [enable trace log for details]: " + type);
+ if (log.isTraceEnabled())
+ {
+ log.trace(this + ". Matching contexts: " + contexts);
+ }
+ return null;
+ }
+ found = (KernelControllerContext)context;
+ }
+ }
+ }
+
+ return found;
+ }
+
+ private List<ControllerContext> getContextsWithAllQualifiers(Set<Object> qualifiers, Set<ControllerContext> contexts)
+ {
+ List<ControllerContext> found = new ArrayList<ControllerContext>();
+
+ for (ControllerContext context : contexts)
+ {
+ Set<Object> suppliedQualifiers = QualifiersMdrUtil.mergeSuppliedQualifiersFromMdr(context);
+ if (suppliedQualifiers == null || suppliedQualifiers.size() == 0)
+ continue;
+
+ boolean hasAllQualifiers = true;
+ for (Object wanted : qualifiers)
+ {
+ boolean matched = false;
+ for (Object supplied : suppliedQualifiers)
+ {
+ if (equals(supplied, wanted))
+ {
+ matched = true;
+ break;
+ }
+ }
+ if (!matched)
+ {
+ hasAllQualifiers = false;
+ break;
+ }
+ }
+
+ if (hasAllQualifiers)
+ found.add(context);
+ }
+ return found;
+ }
+
+ private List<ControllerContext> getContextsWithMostQualifiers(Set<Object> qualifiers, Set<ControllerContext> contexts)
+ {
+ int max = 0;
+ List<ControllerContext> found = new ArrayList<ControllerContext>();
+
+ for (ControllerContext context : contexts)
+ {
+ Set<Object> suppliedQualifiers = QualifiersMdrUtil.mergeSuppliedQualifiersFromMdr(context);
+ if (suppliedQualifiers == null || suppliedQualifiers.size() == 0)
+ continue;
+
+
+ int matches = 0;
+ boolean allTargetQualifiersMatched = true;
+ for (Object supplied : suppliedQualifiers)
+ {
+ boolean matched = false;
+ for (Object wanted : qualifiers)
+ {
+ if (equals(supplied, wanted))
+ {
+ matched = true;
+ break;
+ }
+ }
+ if (matched)
+ matches++;
+ else
+ {
+ allTargetQualifiersMatched = false;
+ break;
+ }
+ }
+
+ if (allTargetQualifiersMatched)
+ {
+ if (matches > max)
+ {
+ found.clear();
+ found.add(context);
+ max = matches;
+ }
+ else if (matches == max)
+ {
+ found.add(context);
+ }
+ }
+ }
+ return found;
+ }
+
+
+ @Override
+ protected void toString(JBossStringBuilder buffer)
+ {
+ buffer.append("class=");
+ buffer.append(type);
+ buffer.append(" qualifiers=");
+ buffer.append(QualifiersMdrUtil.mergeWantedQualifiersFromMdr(context));
+ }
+
+ @Override
+ public void toShortString(JBossStringBuilder buffer)
+ {
+ toString(buffer);
+ }
+
+
+
+
+}
Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/InstantiateAction.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/InstantiateAction.java 2009-11-25 10:21:35 UTC (rev 96941)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/InstantiateAction.java 2009-11-25 10:36:03 UTC (rev 96942)
@@ -91,6 +91,8 @@
// re-register
repository.addMetaData(context);
+ QualifiersMdrUtil.addQualifiersToMdr(context);
+
// handle custom annotations
applyAnnotations(context);
}
Modified: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/PreInstallAction.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/PreInstallAction.java 2009-11-25 10:21:35 UTC (rev 96941)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/PreInstallAction.java 2009-11-25 10:36:03 UTC (rev 96942)
@@ -107,6 +107,7 @@
removeMetaData(context);
throw t;
}
+ QualifiersMdrUtil.addQualifiersToMdr(context);
}
}
@@ -183,6 +184,7 @@
protected void uninstallActionInternal(KernelControllerContext context)
{
+ QualifiersMdrUtil.removeQualifiersFromMdr(context);
try
{
removeScoping(context);
Added: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/QualifiedClassDependencyItem.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/QualifiedClassDependencyItem.java (rev 0)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/QualifiedClassDependencyItem.java 2009-11-25 10:36:03 UTC (rev 96942)
@@ -0,0 +1,72 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt 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.kernel.plugins.dependency;
+
+import org.jboss.dependency.plugins.AbstractDependencyItem;
+import org.jboss.dependency.spi.ControllerState;
+import org.jboss.dependency.spi.Controller;
+import org.jboss.util.JBossStringBuilder;
+
+/**
+ * A qualified class dependant dependencyItem.
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ */
+public abstract class QualifiedClassDependencyItem extends AbstractDependencyItem
+{
+ public QualifiedClassDependencyItem(Object name, ClassAndQualifierKey classAndQualifierMatcher, ControllerState whenRequired, ControllerState dependentState)
+ {
+ super(name, classAndQualifierMatcher, whenRequired, dependentState);
+ }
+
+ @SuppressWarnings("unchecked")
+ protected Class<?> getDemandClass()
+ {
+ return (Class)getIDependOn();
+ }
+
+ /**
+ * Clear the class reference.
+ *
+ * @param controller the controller
+ */
+ public void clear(Controller controller)
+ {
+ setIDependOn(null);
+ }
+
+ public void toString(JBossStringBuilder buffer)
+ {
+ super.toString(buffer);
+ buffer.append(" demandClassQualifier=").append(getIDependOn());
+ }
+
+ public void toShortString(JBossStringBuilder buffer)
+ {
+ buffer.append(getName()).append(" demandClassQualifier ").append(getIDependOn());
+ }
+
+ public String toHumanReadableString()
+ {
+ return getIDependOn() + " (NOTE: using autowiring to resolve this dependency)";
+ }
+}
Added: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/QualifiersMdrUtil.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/QualifiersMdrUtil.java (rev 0)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/QualifiersMdrUtil.java 2009-11-25 10:36:03 UTC (rev 96942)
@@ -0,0 +1,266 @@
+/*
+* 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.kernel.plugins.dependency;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.jboss.beans.metadata.spi.RelatedClassMetaData;
+import org.jboss.dependency.spi.ControllerContext;
+import org.jboss.kernel.spi.dependency.KernelControllerContext;
+import org.jboss.logging.Logger;
+import org.jboss.metadata.spi.MetaData;
+import org.jboss.metadata.spi.MutableMetaData;
+import org.jboss.metadata.spi.repository.MetaDataRepository;
+import org.jboss.metadata.spi.repository.MutableMetaDataRepository;
+import org.jboss.metadata.spi.retrieval.MetaDataItem;
+import org.jboss.metadata.spi.retrieval.MetaDataRetrieval;
+import org.jboss.metadata.spi.scope.ScopeKey;
+import org.jboss.util.collection.ConcurrentSet;
+
+/**
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class QualifiersMdrUtil
+{
+ private final static Logger log = Logger.getLogger(QualifiersMdrUtil.class);
+
+ /** The key under which we will store a contexts supplied qualifier metadata */
+ public final static String SUPPLIED_QUALIFIER_KEY = QualifiersMdrUtil.class.getSimpleName() + "#SUPPLIED_QUALIFIERS";
+
+ /** The key under which we will store a contexts wanted qualifier metadata */
+ public final static String WANTED_QUALIFIER_KEY = QualifiersMdrUtil.class.getSimpleName() + "#WANTED_QUALIFIERS";
+
+ /**
+ * Get the wanted qualifiers defined from the bean's metadata or in the Mdr.
+ * This method is used when creating dependency items, which is before the Mdr
+ * has been set up for a context.
+ *
+ * @return a set of related class metadata, where RelatedClassMetaData.getEnabled() contains the qualifiers
+ */
+ public static boolean hasWantedQualifiersInParentMdrOrBeanMetaData(KernelControllerContext context)
+ {
+ Set<RelatedClassMetaData> md = getQualifiersMetaData(context, WANTED_QUALIFIER_KEY);
+ if (md != null && md.size() > 0)
+ return true;
+
+ MetaDataRepository repository = context.getKernel().getMetaDataRepository().getMetaDataRepository();
+ ScopeKey key = context.getScopeInfo().getScope();
+ while (key != null)
+ {
+ MetaData metaData = repository.getMetaData(key);
+ if (metaData != null)
+ {
+ if (metaData.getMetaData(WANTED_QUALIFIER_KEY) != null)
+ return true;
+ }
+ key = key.getParent();
+ }
+
+ return false;
+ }
+
+ /**
+ * Adds the qualifiers for a context's bean metadata to the context's MDR metadata.
+ *
+ * @param context the context
+ */
+ public static void addQualifiersToMdr(KernelControllerContext context)
+ {
+ Set<RelatedClassMetaData> qualifiers = context.getBeanMetaData().getRelated();
+
+ if (qualifiers != null && qualifiers.size() > 0)
+ {
+ MetaDataRetrieval retrieval = context.getKernel().getMetaDataRepository().getMetaDataRepository().getMetaDataRetrieval(context.getScopeInfo().getMutableScope());
+ if (retrieval instanceof MutableMetaData == false)
+ {
+ log.warn("Can not add qualifier to non mutable metadata" + context + ":" + retrieval);
+ return;
+ }
+
+ Set<Object> suppliedSet = null;
+ Set<Object> wantedSet = null;
+ for (RelatedClassMetaData rcmd : qualifiers)
+ {
+ if (rcmd.getClassName().equals(SUPPLIED_QUALIFIER_KEY))
+ {
+ if (suppliedSet == null)
+ suppliedSet = getQualifiersSet(retrieval, SUPPLIED_QUALIFIER_KEY, true);
+ for (Object qualifier : rcmd.getEnabled())
+ suppliedSet.add(qualifier);
+ }
+ else if (rcmd.getClassName().equals(WANTED_QUALIFIER_KEY))
+ {
+ if (wantedSet == null)
+ wantedSet = getQualifiersSet(retrieval, WANTED_QUALIFIER_KEY, true);
+ for (Object qualifier : rcmd.getEnabled())
+ wantedSet.add(qualifier);
+ }
+ }
+ }
+ }
+
+ /**
+ * Removes the qualifiers for a context's bean metadata from the context's MDR metadata.
+ *
+ * @param context the context
+ */
+ public static void removeQualifiersFromMdr(KernelControllerContext context)
+ {
+ Set<RelatedClassMetaData> qualifiers = context.getBeanMetaData().getRelated();
+
+ if (qualifiers != null && qualifiers.size() > 0)
+ {
+ MetaDataRetrieval retrieval = context.getKernel().getMetaDataRepository().getMetaDataRepository().getMetaDataRetrieval(context.getScopeInfo().getMutableScope());
+ if (retrieval instanceof MutableMetaData == false)
+ {
+ log.warn("Can not remove qualifier from non mutable metadata" + context + ":" + retrieval);
+ return;
+ }
+
+ Set<Object> suppliedSet = getQualifiersSet(retrieval, SUPPLIED_QUALIFIER_KEY, false);
+ Set<Object> wantedSet = getQualifiersSet(retrieval, WANTED_QUALIFIER_KEY, false);
+ for (RelatedClassMetaData rcmd : qualifiers)
+ {
+ Set<Object> targetSet = null;
+ if (rcmd.getClassName().equals(SUPPLIED_QUALIFIER_KEY) && suppliedSet != null)
+ targetSet = suppliedSet;
+ else if (rcmd.getClassName().equals(WANTED_QUALIFIER_KEY) && wantedSet != null)
+ targetSet = wantedSet;
+
+ if (targetSet != null)
+ {
+ for (Object qualifier : rcmd.getEnabled())
+ targetSet.remove(qualifier);
+ }
+ }
+ if (suppliedSet != null && suppliedSet.size() == 0)
+ ((MutableMetaData)retrieval).removeMetaData(SUPPLIED_QUALIFIER_KEY, Set.class);
+ if (wantedSet != null && wantedSet.size() == 0)
+ ((MutableMetaData)retrieval).removeMetaData(WANTED_QUALIFIER_KEY, Set.class);
+ }
+ }
+
+ /**
+ * Gets all the supplied qualifiers for the context from the MDR. The returned set combines the qualifiers
+ * found at all scope levels
+ *
+ * @param context the context
+ * @return the found qualifiers
+ */
+ public static Set<Object> mergeSuppliedQualifiersFromMdr(ControllerContext context)
+ {
+ return mergeQualifiersFromMdr(context, SUPPLIED_QUALIFIER_KEY);
+ }
+
+ /**
+ * Gets all the wanted qualifiers for the context from the MDR. The returned set combines the qualifiers
+ * found at all scope levels
+ *
+ * @param context the context
+ * @return the found qualifiers
+ */
+ public static Set<Object> mergeWantedQualifiersFromMdr(ControllerContext context)
+ {
+ return mergeQualifiersFromMdr(context, WANTED_QUALIFIER_KEY);
+ }
+
+
+ private static Set<RelatedClassMetaData> getQualifiersMetaData(KernelControllerContext context, String key)
+ {
+ Set<RelatedClassMetaData> related = context.getBeanMetaData().getRelated();
+ if (related == null)
+ return null;
+ if (related.size() == 0)
+ return null;
+
+ Set<RelatedClassMetaData> qualifiers = null;
+ for (RelatedClassMetaData rcmd : related)
+ {
+ if (rcmd.getClassName().equals(key))
+ {
+ if (qualifiers == null)
+ qualifiers = new HashSet<RelatedClassMetaData>();
+ qualifiers.add(rcmd);
+ }
+ }
+
+ return qualifiers;
+ }
+
+ private static Set<Object> getQualifiersSet(MetaDataRetrieval retrieval, String key, boolean create)
+ {
+ MetaDataItem<?> item = retrieval.retrieveMetaData(key);
+ //TODO - The following is not threadsafe
+ Set<Object> set = null;
+ if (item == null)
+ {
+ if (create)
+ {
+ set = new ConcurrentSet<Object>();
+ ((MutableMetaData)retrieval).addMetaData(key, set, Set.class);
+ }
+ else
+ {
+ return null;
+ }
+ }
+ else
+ {
+ set = (Set<Object>)item.getValue();
+ }
+ return set;
+ }
+
+ private static Set<Object> mergeQualifiersFromMdr(ControllerContext context, String key)
+ {
+ if (context instanceof KernelControllerContext == false)
+ return null;
+
+ MutableMetaDataRepository repository = ((KernelControllerContext)context).getKernel().getMetaDataRepository().getMetaDataRepository();
+ ScopeKey scope = context.getScopeInfo().getScope();
+
+ Set<Object> set = null;
+ while (scope != null)
+ {
+ MetaData metaData = repository.getMetaData(scope);
+ if (metaData != null)
+ {
+ Set<Object> entry = metaData.getMetaData(key, Set.class);
+ if (entry != null)
+ {
+ if (set == null)
+ set = entry;
+ else
+ {
+ set = new HashSet<Object>(set);
+ set.addAll(entry);
+ }
+ }
+ }
+ scope = scope.getParent();
+ }
+ return set;
+ }
+}
Added: projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/SearchQualifiedClassDependencyItem.java
===================================================================
--- projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/SearchQualifiedClassDependencyItem.java (rev 0)
+++ projects/kernel/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/SearchQualifiedClassDependencyItem.java 2009-11-25 10:36:03 UTC (rev 96942)
@@ -0,0 +1,57 @@
+/*
+* 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.kernel.plugins.dependency;
+
+import org.jboss.dependency.spi.Controller;
+import org.jboss.dependency.spi.ControllerContext;
+import org.jboss.dependency.spi.ControllerState;
+import org.jboss.dependency.spi.graph.LookupStrategy;
+import org.jboss.dependency.spi.graph.SearchInfo;
+
+/**
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class SearchQualifiedClassDependencyItem extends QualifiedClassDependencyItem
+{
+ private SearchInfo search;
+
+ public SearchQualifiedClassDependencyItem(Object name, ClassAndQualifierKey classAndQualifierMatcher,
+ ControllerState whenRequired, ControllerState dependentState, SearchInfo search)
+ {
+ super(name, classAndQualifierMatcher, whenRequired, dependentState);
+ this.search = search;
+ }
+
+ /**
+ * Get controller context.
+ *
+ * @param controller the controller
+ * @return controller context
+ */
+ protected ControllerContext getControllerContext(Controller controller)
+ {
+ LookupStrategy strategy = search.getStrategy();
+ return strategy.getContext(controller, getIDependOn(), ControllerState.INSTALLED);
+ }
+}
Modified: projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/KernelTestSuite.java
===================================================================
--- projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/KernelTestSuite.java 2009-11-25 10:21:35 UTC (rev 96941)
+++ projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/KernelTestSuite.java 2009-11-25 10:36:03 UTC (rev 96942)
@@ -25,19 +25,19 @@
import junit.framework.TestSuite;
import junit.textui.TestRunner;
+import org.jboss.test.kernel.annotations.test.AnnotationsTestSuite;
import org.jboss.test.kernel.bootstrap.test.BootstrapTestSuite;
import org.jboss.test.kernel.config.test.ConfigTestSuite;
import org.jboss.test.kernel.controller.test.ControllerTestSuite;
import org.jboss.test.kernel.dependency.test.DependencyTestSuite;
+import org.jboss.test.kernel.deployment.props.test.PropsTestSuite;
import org.jboss.test.kernel.deployment.test.DeploymentTestSuite;
import org.jboss.test.kernel.deployment.xml.test.XMLTestSuite;
-import org.jboss.test.kernel.deployment.props.test.PropsTestSuite;
import org.jboss.test.kernel.event.test.EventTestSuite;
-import org.jboss.test.kernel.registry.test.RegistryTestSuite;
import org.jboss.test.kernel.inject.test.ContextualInjectionTestSuite;
+import org.jboss.test.kernel.lazy.test.LazyTestSuite;
import org.jboss.test.kernel.metadata.test.MetaDataTestSuite;
-import org.jboss.test.kernel.annotations.test.AnnotationsTestSuite;
-import org.jboss.test.kernel.lazy.test.LazyTestSuite;
+import org.jboss.test.kernel.registry.test.RegistryTestSuite;
/**
* Kernel Test Suite.
Added: projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/deployment/xml/test/QualifierCloneTestCase.java
===================================================================
--- projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/deployment/xml/test/QualifierCloneTestCase.java (rev 0)
+++ projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/deployment/xml/test/QualifierCloneTestCase.java 2009-11-25 10:36:03 UTC (rev 96942)
@@ -0,0 +1,44 @@
+/*
+* 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.deployment.xml.test;
+
+import junit.framework.Test;
+
+/**
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class QualifierCloneTestCase extends QualifierTestCase
+{
+
+ public QualifierCloneTestCase(String name)
+ {
+ super(name, true);
+ }
+
+
+ public static Test suite()
+ {
+ return suite(QualifierCloneTestCase.class);
+ }
+}
Added: 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 (rev 0)
+++ projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/deployment/xml/test/QualifierTestCase.java 2009-11-25 10:36:03 UTC (rev 96942)
@@ -0,0 +1,212 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt 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.deployment.xml.test;
+
+import java.util.List;
+import java.util.Set;
+
+import junit.framework.Test;
+import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
+import org.jboss.beans.metadata.plugins.AbstractInjectionValueMetaData;
+import org.jboss.beans.metadata.spi.ConstructorMetaData;
+import org.jboss.beans.metadata.spi.InstallMetaData;
+import org.jboss.beans.metadata.spi.ParameterMetaData;
+import org.jboss.beans.metadata.spi.PropertyMetaData;
+import org.jboss.beans.metadata.spi.RelatedClassMetaData;
+import org.jboss.beans.metadata.spi.ValueMetaData;
+import org.jboss.kernel.plugins.dependency.QualifiersMdrUtil;
+
+/**
+ * QualifierTestCase.
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ */
+public class QualifierTestCase extends AbstractXMLTest
+{
+
+ public static Test suite()
+ {
+ return suite(QualifierTestCase.class);
+ }
+
+ public QualifierTestCase(String name)
+ {
+ super(name);
+ }
+
+ protected QualifierTestCase(String name, boolean useClone)
+ {
+ super(name, useClone);
+ }
+
+ protected RelatedClassMetaData getRelated(String name) throws Exception
+ {
+ AbstractBeanMetaData bean = unmarshalBean(name);
+ return checkRelated(bean.getRelated());
+ }
+
+ protected RelatedClassMetaData checkRelated(Set<RelatedClassMetaData> related)
+ {
+ assertNotNull(related);
+ assertEquals(1, related.size());
+ RelatedClassMetaData rcmd = related.iterator().next();
+ assertNotNull(rcmd);
+ return rcmd;
+ }
+
+ public void testBeanQualifierWithEnabled() throws Exception
+ {
+ RelatedClassMetaData related = getRelated("QualifierBeanWithEnabled.xml");
+ assertEquals(QualifiersMdrUtil.SUPPLIED_QUALIFIER_KEY, related.getClassName());
+ Set<Object> enabled = related.getEnabled();
+ assertNotNull(enabled);
+ assertEquals(1, enabled.size());
+ assertEquals("aop", enabled.iterator().next());
+ }
+
+ public void testBeanQualifierWithEnableds() throws Exception
+ {
+ RelatedClassMetaData related = getRelated("QualifierBeanWithEnableds.xml");
+ assertEquals(QualifiersMdrUtil.SUPPLIED_QUALIFIER_KEY, related.getClassName());
+ Set<Object> enabled = related.getEnabled();
+ assertNotNull(enabled);
+ assertEquals(2, enabled.size());
+ assertTrue(enabled.contains("123"));
+ assertTrue(enabled.contains("abc"));
+
+ System.out.println(enabled);
+ }
+
+ public void testBeanQualifierWithClassNameFails() throws Exception
+ {
+ try
+ {
+ getRelated("QualifierBeanWithNameFails.xml");
+ fail("Should not have accepted the 'name' attribute");
+ }
+ catch(Exception expected)
+ {
+ }
+ }
+
+ public void testBeanQualifierWithWantedType() throws Exception
+ {
+ RelatedClassMetaData related = getRelated("QualifierBeanWithWantedType.xml");
+ assertEquals(QualifiersMdrUtil.WANTED_QUALIFIER_KEY, related.getClassName());
+ Set<Object> enabled = related.getEnabled();
+ assertNotNull(enabled);
+ assertEquals(1, enabled.size());
+ assertEquals("aop", enabled.iterator().next());
+ }
+
+ public void testBeanQualifierWithSuppliedType() throws Exception
+ {
+ RelatedClassMetaData related = getRelated("QualifierBeanWithSuppliedType.xml");
+ assertEquals(QualifiersMdrUtil.SUPPLIED_QUALIFIER_KEY, related.getClassName());
+ Set<Object> enabled = related.getEnabled();
+ assertNotNull(enabled);
+ assertEquals(1, enabled.size());
+ assertEquals("aop", enabled.iterator().next());
+ }
+
+ public void testBeanQualifierWithWrongTypeFails() throws Exception
+ {
+ try
+ {
+ getRelated("QualifierBeanWithWrongTypeFails.xml");
+ fail("Should not have accepted the 'name' attribute");
+ }
+ catch(Exception expected)
+ {
+ }
+ }
+
+ public void testInjectPropertyQualifierWithEnableds() throws Exception
+ {
+ AbstractBeanMetaData bean = unmarshalBean("QualifierPropertyInjectWithEnableds.xml");
+ boolean found = false;
+ for (PropertyMetaData property : bean.getProperties())
+ {
+ found = true;
+ if (property.getName().equals("test"))
+ {
+ ValueMetaData valueMetaData = property.getValue();
+ assertInstanceOf(valueMetaData, AbstractInjectionValueMetaData.class);
+ RelatedClassMetaData related = checkRelated(((AbstractInjectionValueMetaData)valueMetaData).getInjectionPointQualifiers());
+ assertEquals(QualifiersMdrUtil.WANTED_QUALIFIER_KEY, related.getClassName());
+ Set<Object> enabled = related.getEnabled();
+ assertNotNull(enabled);
+ assertEquals(2, enabled.size());
+ }
+ }
+ assertTrue(found);
+ }
+
+ public void testInjectConstructorParameterWithEnabled() throws Exception
+ {
+ AbstractBeanMetaData bean = unmarshalBean("QualifierConstructorParameterInjectWithEnabled.xml");
+
+ ConstructorMetaData cmd = bean.getConstructor();
+ assertNotNull(cmd);
+ List<ParameterMetaData> params = cmd.getParameters();
+ assertNotNull(params);
+ assertEquals(1, params.size());
+ ValueMetaData valueMetaData = params.get(0).getValue();
+ assertInstanceOf(valueMetaData, AbstractInjectionValueMetaData.class);
+ RelatedClassMetaData related = checkRelated(((AbstractInjectionValueMetaData)valueMetaData).getInjectionPointQualifiers());
+ assertEquals(QualifiersMdrUtil.WANTED_QUALIFIER_KEY, related.getClassName());
+ Set<Object> enabled = related.getEnabled();
+ assertNotNull(enabled);
+ assertEquals(1, enabled.size());
+ assertEquals("aop", enabled.iterator().next());
+ }
+
+ public void testInjectMethodParameterWithEnabled() throws Exception
+ {
+ AbstractBeanMetaData bean = unmarshalBean("QualifierMethodParameterInjectWithEnabled.xml");
+ List<InstallMetaData> installs = bean.getInstalls();
+ assertEquals(1, installs.size());
+ List<ParameterMetaData> params = installs.get(0).getParameters();
+ assertNotNull(params);
+ assertEquals(1, params.size());
+ ValueMetaData valueMetaData = params.get(0).getValue();
+ assertInstanceOf(valueMetaData, AbstractInjectionValueMetaData.class);
+ RelatedClassMetaData related = checkRelated(((AbstractInjectionValueMetaData)valueMetaData).getInjectionPointQualifiers());
+ assertEquals(QualifiersMdrUtil.WANTED_QUALIFIER_KEY, related.getClassName());
+ Set<Object> enabled = related.getEnabled();
+ assertNotNull(enabled);
+ assertEquals(1, enabled.size());
+ assertEquals("aop", enabled.iterator().next());
+ }
+
+ public void testInjectPropertyQualifierWithClassNameFails() throws Exception
+ {
+ try
+ {
+ unmarshalBean("QualifierPropertyInjectWithNameFail.xml");
+ fail("Should not have accepted the 'name' attribute");
+ }
+ catch(Exception expected)
+ {
+ }
+ }
+}
\ No newline at end of file
Modified: projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/deployment/xml/test/XMLTestSuite.java
===================================================================
--- projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/deployment/xml/test/XMLTestSuite.java 2009-11-25 10:21:35 UTC (rev 96941)
+++ projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/deployment/xml/test/XMLTestSuite.java 2009-11-25 10:36:03 UTC (rev 96942)
@@ -51,6 +51,7 @@
suite.addTest(ParameterTestCase.suite());
suite.addTest(PropertyTestCase.suite());
suite.addTest(RelatedClassTestCase.suite());
+ suite.addTest(QualifierTestCase.suite());
suite.addTest(LifecycleTestCase.suite());
suite.addTest(DependencyTestCase.suite());
suite.addTest(DemandTestCase.suite());
@@ -106,6 +107,7 @@
suite.addTest(ParameterCloneTestCase.suite());
suite.addTest(PropertyCloneTestCase.suite());
suite.addTest(RelatedClassCloneTestCase.suite());
+ suite.addTest(QualifierCloneTestCase.suite());
suite.addTest(LifecycleCloneTestCase.suite());
suite.addTest(DependencyCloneTestCase.suite());
suite.addTest(DemandCloneTestCase.suite());
Added: projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/support/Bean.java
===================================================================
--- projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/support/Bean.java (rev 0)
+++ projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/support/Bean.java 2009-11-25 10:36:03 UTC (rev 96942)
@@ -0,0 +1,32 @@
+/*
+* 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.support;
+
+/**
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class Bean
+{
+
+}
Added: projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/support/Target.java
===================================================================
--- projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/support/Target.java (rev 0)
+++ projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/support/Target.java 2009-11-25 10:36:03 UTC (rev 96942)
@@ -0,0 +1,32 @@
+/*
+* 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.support;
+
+/**
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public interface Target
+{
+ Bean getBean();
+}
Added: projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/support/TargetBean.java
===================================================================
--- projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/support/TargetBean.java (rev 0)
+++ projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/support/TargetBean.java 2009-11-25 10:36:03 UTC (rev 96942)
@@ -0,0 +1,46 @@
+/*
+* 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.support;
+
+import org.jboss.beans.metadata.api.annotations.Inject;
+
+
+/**
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class TargetBean
+{
+ Bean bean;
+
+ public Bean getBean()
+ {
+ return bean;
+ }
+
+ @Inject
+ public void setBean(Bean bean)
+ {
+ this.bean = bean;
+ }
+}
Added: projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/support/TargetConstructorBean.java
===================================================================
--- projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/support/TargetConstructorBean.java (rev 0)
+++ projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/support/TargetConstructorBean.java 2009-11-25 10:36:03 UTC (rev 96942)
@@ -0,0 +1,42 @@
+/*
+* 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.support;
+
+/**
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class TargetConstructorBean implements Target
+{
+ Bean bean;
+
+ public TargetConstructorBean(Bean bean)
+ {
+ this.bean = bean;
+ }
+
+ public Bean getBean()
+ {
+ return bean;
+ }
+}
Added: projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/support/TargetMethodBean.java
===================================================================
--- projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/support/TargetMethodBean.java (rev 0)
+++ projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/support/TargetMethodBean.java 2009-11-25 10:36:03 UTC (rev 96942)
@@ -0,0 +1,42 @@
+/*
+* 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.support;
+
+/**
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class TargetMethodBean implements Target
+{
+ Bean bean;
+
+ public void installBean(Bean bean)
+ {
+ this.bean = bean;
+ }
+
+ public Bean getBean()
+ {
+ return bean;
+ }
+}
Added: projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/support/TargetPropertyBean.java
===================================================================
--- projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/support/TargetPropertyBean.java (rev 0)
+++ projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/support/TargetPropertyBean.java 2009-11-25 10:36:03 UTC (rev 96942)
@@ -0,0 +1,42 @@
+/*
+* 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.support;
+
+/**
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class TargetPropertyBean implements Target
+{
+ Bean bean;
+
+ public Bean getBean()
+ {
+ return bean;
+ }
+
+ public void setBean(Bean bean)
+ {
+ this.bean = bean;
+ }
+}
Added: 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 (rev 0)
+++ projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/test/AbstractQualifiersTest.java 2009-11-25 10:36:03 UTC (rev 96942)
@@ -0,0 +1,71 @@
+/*
+* 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);
+ }
+}
Added: 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 (rev 0)
+++ projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/test/BeanQualifiersTestCase.java 2009-11-25 10:36:03 UTC (rev 96942)
@@ -0,0 +1,476 @@
+/*
+* 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.Collections;
+import java.util.Set;
+
+import junit.framework.Test;
+
+import org.jboss.beans.metadata.api.model.AutowireType;
+import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
+import org.jboss.kernel.plugins.dependency.QualifiersMdrUtil;
+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.qualifiers.support.Bean;
+import org.jboss.test.kernel.qualifiers.support.TargetBean;
+
+/**
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class BeanQualifiersTestCase extends AbstractQualifiersTest
+{
+ public BeanQualifiersTestCase(String name)
+ {
+ super(name);
+ }
+
+ public static Test suite()
+ {
+ return suite(BeanQualifiersTestCase.class);
+ }
+
+ public void testContextsMDRHasQualifiers() throws Throwable
+ {
+ MemoryMetaDataLoader loader = new MemoryMetaDataLoader(ScopeKey.DEFAULT_SCOPE);
+ getMetaDataRepository().getMetaDataRepository().addMetaDataRetrieval(loader);
+
+ BeanMetaDataBuilder bean1Builder = BeanMetaDataBuilder.createBuilder("bean1", Bean.class.getName());
+ KernelControllerContext bean1Context = deploy(bean1Builder.getBeanMetaData());
+
+ BeanMetaDataBuilder bean2Builder = BeanMetaDataBuilder.createBuilder("bean2", Bean.class.getName());
+ addSuppliedQualifiers(bean2Builder, "other", "other2");
+ addWantedQualifiers(bean2Builder, "wanted1");
+ KernelControllerContext bean2Context = deploy(bean2Builder.getBeanMetaData());
+
+ try
+ {
+ assertBean("bean1", Bean.class);
+ assertBean("bean2", Bean.class);
+
+ Set<Object> set = QualifiersMdrUtil.mergeSuppliedQualifiersFromMdr(bean1Context);
+ assertNull(set);
+
+ set = QualifiersMdrUtil.mergeSuppliedQualifiersFromMdr(bean2Context);
+ assertNotNull(set);
+ assertTrue(set.contains("other"));
+ assertTrue(set.contains("other2"));
+ assertEquals(2, set.size());
+
+ set = QualifiersMdrUtil.mergeWantedQualifiersFromMdr(bean1Context);
+ assertNull(set);
+
+ set = QualifiersMdrUtil.mergeWantedQualifiersFromMdr(bean2Context);
+ assertNotNull(set);
+ assertTrue(set.contains("wanted1"));
+ assertEquals(1, set.size());
+ }
+ finally
+ {
+ undeploy(bean1Context);
+ undeploy(bean2Context);
+ getMetaDataRepository().getMetaDataRepository().removeMetaDataRetrieval(ScopeKey.DEFAULT_SCOPE);
+ }
+ }
+
+ public void testContextsMDRHasQualifiersFromAllLevels() throws Throwable
+ {
+ MemoryMetaDataLoader loader = new MemoryMetaDataLoader(ScopeKey.DEFAULT_SCOPE);
+ loader.addMetaData(QualifiersMdrUtil.SUPPLIED_QUALIFIER_KEY, Collections.singleton("test"), Set.class);
+ loader.addMetaData(QualifiersMdrUtil.WANTED_QUALIFIER_KEY, Collections.singleton("wanted1"), Set.class);
+ getMetaDataRepository().getMetaDataRepository().addMetaDataRetrieval(loader);
+
+ BeanMetaDataBuilder bean1Builder = BeanMetaDataBuilder.createBuilder("bean1", Bean.class.getName());
+ KernelControllerContext bean1Context = deploy(bean1Builder.getBeanMetaData());
+
+ BeanMetaDataBuilder bean2Builder = BeanMetaDataBuilder.createBuilder("bean2", Bean.class.getName());
+ addSuppliedQualifiers(bean2Builder, "other");
+ addWantedQualifiers(bean2Builder, "wanted2");
+ KernelControllerContext bean2Context = deploy(bean2Builder.getBeanMetaData());
+
+ try
+ {
+ assertBean("bean1", Bean.class);
+ assertBean("bean2", Bean.class);
+ Set<Object> set = QualifiersMdrUtil.mergeSuppliedQualifiersFromMdr(bean1Context);
+ assertNotNull(set);
+ assertTrue(set.contains("test"));
+ assertEquals(1, set.size());
+
+ set = QualifiersMdrUtil.mergeSuppliedQualifiersFromMdr(bean2Context);
+ assertNotNull(set);
+ assertTrue(set.contains("other"));
+ assertTrue(set.contains("test"));
+ assertEquals(2, set.size());
+
+ set = QualifiersMdrUtil.mergeWantedQualifiersFromMdr(bean1Context);
+ assertNotNull(set);
+ assertTrue(set.contains("wanted1"));
+ assertEquals(1, set.size());
+
+ set = QualifiersMdrUtil.mergeWantedQualifiersFromMdr(bean2Context);
+ assertNotNull(set);
+ assertTrue(set.contains("wanted1"));
+ assertTrue(set.contains("wanted2"));
+ assertEquals(2, set.size());
+
+ }
+ finally
+ {
+ undeploy(bean1Context);
+ undeploy(bean2Context);
+ getMetaDataRepository().getMetaDataRepository().removeMetaDataRetrieval(ScopeKey.DEFAULT_SCOPE);
+ }
+ }
+
+ public void testSimpleQualifier() throws Throwable
+ {
+ BeanMetaDataBuilder bean1Builder = BeanMetaDataBuilder.createBuilder("bean1", Bean.class.getName());
+ addSuppliedQualifiers(bean1Builder, "test");
+ KernelControllerContext bean1Context = deploy(bean1Builder.getBeanMetaData());
+
+ BeanMetaDataBuilder bean2Builder = BeanMetaDataBuilder.createBuilder("bean2", Bean.class.getName());
+ KernelControllerContext bean2Context = deploy(bean2Builder.getBeanMetaData());
+
+ BeanMetaDataBuilder targetBuilder = BeanMetaDataBuilder.createBuilder("target", TargetBean.class.getName());
+ targetBuilder.setAutowireType(AutowireType.BY_CLASS);
+ addWantedQualifiers(targetBuilder, "test");
+ KernelControllerContext targetContext = deploy(targetBuilder.getBeanMetaData());
+ try
+ {
+ Bean bean1 = assertBean("bean1", Bean.class);
+ assertBean("bean2", Bean.class);
+ TargetBean target = assertBean("target", TargetBean.class);
+ assertNotNull(target.getBean());
+ assertSame(bean1, target.getBean());
+ }
+ finally
+ {
+ undeploy(bean1Context);
+ undeploy(bean2Context);
+ undeploy(targetContext);
+ }
+ }
+
+ public void testAmbiguousQualifiers() throws Throwable
+ {
+ BeanMetaDataBuilder bean1Builder = BeanMetaDataBuilder.createBuilder("bean1", Bean.class.getName());
+ addSuppliedQualifiers(bean1Builder, "test");
+ KernelControllerContext bean1Context = deploy(bean1Builder.getBeanMetaData());
+
+ BeanMetaDataBuilder bean2Builder = BeanMetaDataBuilder.createBuilder("bean2", Bean.class.getName());
+ addSuppliedQualifiers(bean2Builder, "test");
+ KernelControllerContext bean2Context = deploy(bean2Builder.getBeanMetaData());
+
+ BeanMetaDataBuilder targetBuilder = BeanMetaDataBuilder.createBuilder("target", TargetBean.class.getName());
+ targetBuilder.setAutowireType(AutowireType.BY_CLASS);
+ addWantedQualifiers(targetBuilder, "test");
+ KernelControllerContext targetContext = deploy(targetBuilder.getBeanMetaData());
+ try
+ {
+ assertBean("bean1", Bean.class);
+ assertBean("bean2", Bean.class);
+ assertNoBean("target");
+ }
+ finally
+ {
+ undeploy(bean1Context);
+ undeploy(bean2Context);
+ undeploy(targetContext);
+ }
+ }
+
+ public void testWantedQualifiersNotIncludingAllBeanQualifiers() throws Throwable
+ {
+ BeanMetaDataBuilder bean1Builder = BeanMetaDataBuilder.createBuilder("bean1", Bean.class.getName());
+ addSuppliedQualifiers(bean1Builder, "test", "other");
+ KernelControllerContext bean1Context = deploy(bean1Builder.getBeanMetaData());
+
+ BeanMetaDataBuilder bean2Builder = BeanMetaDataBuilder.createBuilder("bean2", Bean.class.getName());
+ addSuppliedQualifiers(bean2Builder, "other");
+ KernelControllerContext bean2Context = deploy(bean2Builder.getBeanMetaData());
+
+ BeanMetaDataBuilder targetBuilder = BeanMetaDataBuilder.createBuilder("target", TargetBean.class.getName());
+ targetBuilder.setAutowireType(AutowireType.BY_CLASS);
+ addWantedQualifiers(targetBuilder, "test");
+ KernelControllerContext targetContext = deploy(targetBuilder.getBeanMetaData());
+ try
+ {
+ assertBean("bean1", Bean.class);
+ assertBean("bean2", Bean.class);
+ assertNoBean("target");
+ }
+ finally
+ {
+ undeploy(bean1Context);
+ undeploy(bean2Context);
+ undeploy(targetContext);
+ }
+ }
+
+ public void testMoreWantedQualifiersThanBeanQualifiers() throws Throwable
+ {
+ BeanMetaDataBuilder bean1Builder = BeanMetaDataBuilder.createBuilder("bean1", Bean.class.getName());
+ addSuppliedQualifiers(bean1Builder, "test");
+ KernelControllerContext bean1Context = deploy(bean1Builder.getBeanMetaData());
+
+ BeanMetaDataBuilder bean2Builder = BeanMetaDataBuilder.createBuilder("bean2", Bean.class.getName());
+ addSuppliedQualifiers(bean2Builder, "other");
+ KernelControllerContext bean2Context = deploy(bean2Builder.getBeanMetaData());
+
+ BeanMetaDataBuilder targetBuilder = BeanMetaDataBuilder.createBuilder("target", TargetBean.class.getName());
+ targetBuilder.setAutowireType(AutowireType.BY_CLASS);
+ addWantedQualifiers(targetBuilder, "test", "mock");
+ KernelControllerContext targetContext = deploy(targetBuilder.getBeanMetaData());
+ try
+ {
+ Bean bean1 = assertBean("bean1", Bean.class);
+ assertBean("bean2", Bean.class);
+ TargetBean target = assertBean("target", TargetBean.class);
+ assertNotNull(target.getBean());
+ assertSame(bean1, target.getBean());
+ }
+ finally
+ {
+ undeploy(bean1Context);
+ undeploy(bean2Context);
+ undeploy(targetContext);
+ }
+ }
+
+ public void testMoreWantedQualifiersThanBeanQualifiersMostSelected() throws Throwable
+ {
+ BeanMetaDataBuilder bean1Builder = BeanMetaDataBuilder.createBuilder("bean1", Bean.class.getName());
+ addSuppliedQualifiers(bean1Builder, "test", "other");
+ KernelControllerContext bean1Context = deploy(bean1Builder.getBeanMetaData());
+
+ BeanMetaDataBuilder bean2Builder = BeanMetaDataBuilder.createBuilder("bean2", Bean.class.getName());
+ addSuppliedQualifiers(bean2Builder, "test");
+ KernelControllerContext bean2Context = deploy(bean2Builder.getBeanMetaData());
+
+ BeanMetaDataBuilder targetBuilder = BeanMetaDataBuilder.createBuilder("target", TargetBean.class.getName());
+ targetBuilder.setAutowireType(AutowireType.BY_CLASS);
+ addWantedQualifiers(targetBuilder, "test", "other", "mock");
+ KernelControllerContext targetContext = deploy(targetBuilder.getBeanMetaData());
+ try
+ {
+ Bean bean1 = assertBean("bean1", Bean.class);
+ assertBean("bean2", Bean.class);
+ TargetBean target = assertBean("target", TargetBean.class);
+ assertNotNull(target.getBean());
+ assertSame(bean1, target.getBean());
+ }
+ finally
+ {
+ undeploy(bean1Context);
+ undeploy(bean2Context);
+ undeploy(targetContext);
+ }
+ }
+
+ public void testMoreWantedQualifiersThanBeanQualifiersMostSelected2() throws Throwable
+ {
+ BeanMetaDataBuilder bean1Builder = BeanMetaDataBuilder.createBuilder("bean1", Bean.class.getName());
+ addSuppliedQualifiers(bean1Builder, "test");
+ KernelControllerContext bean1Context = deploy(bean1Builder.getBeanMetaData());
+
+ BeanMetaDataBuilder bean2Builder = BeanMetaDataBuilder.createBuilder("bean2", Bean.class.getName());
+ addSuppliedQualifiers(bean2Builder, "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");
+ KernelControllerContext targetContext = deploy(targetBuilder.getBeanMetaData());
+ try
+ {
+ assertBean("bean1", Bean.class);
+ Bean bean2 = assertBean("bean2", Bean.class);
+ TargetBean target = assertBean("target", TargetBean.class);
+ assertNotNull(target.getBean());
+ assertSame(bean2, target.getBean());
+ }
+ finally
+ {
+ undeploy(bean1Context);
+ undeploy(bean2Context);
+ undeploy(targetContext);
+ }
+ }
+
+ public void testMoreWantedQualifiersThanBeanQualifiersAmbiguity() throws Throwable
+ {
+ BeanMetaDataBuilder bean1Builder = BeanMetaDataBuilder.createBuilder("bean1", Bean.class.getName());
+ addSuppliedQualifiers(bean1Builder, "test");
+ KernelControllerContext bean1Context = deploy(bean1Builder.getBeanMetaData());
+
+ BeanMetaDataBuilder bean2Builder = BeanMetaDataBuilder.createBuilder("bean2", Bean.class.getName());
+ addSuppliedQualifiers(bean2Builder, "other");
+ KernelControllerContext bean2Context = deploy(bean2Builder.getBeanMetaData());
+
+ BeanMetaDataBuilder targetBuilder = BeanMetaDataBuilder.createBuilder("target", TargetBean.class.getName());
+ targetBuilder.setAutowireType(AutowireType.BY_CLASS);
+ addWantedQualifiers(targetBuilder, "test", "other");
+ KernelControllerContext targetContext = deploy(targetBuilder.getBeanMetaData());
+ try
+ {
+ assertBean("bean1", Bean.class);
+ assertBean("bean2", Bean.class);
+ assertNoBean("target");
+ }
+ finally
+ {
+ undeploy(bean1Context);
+ undeploy(bean2Context);
+ undeploy(targetContext);
+ }
+ }
+
+ public void testSuppliedQualifiersFromHigherLevel() throws Throwable
+ {
+ MemoryMetaDataLoader loader = new MemoryMetaDataLoader(ScopeKey.DEFAULT_SCOPE);
+ loader.addMetaData(QualifiersMdrUtil.SUPPLIED_QUALIFIER_KEY, Collections.singleton("test"), Set.class);
+ getMetaDataRepository().getMetaDataRepository().addMetaDataRetrieval(loader);
+
+ BeanMetaDataBuilder bean1Builder = BeanMetaDataBuilder.createBuilder("bean1", Bean.class.getName());
+ KernelControllerContext bean1Context = deploy(bean1Builder.getBeanMetaData());
+
+ BeanMetaDataBuilder targetBuilder = BeanMetaDataBuilder.createBuilder("target", TargetBean.class.getName());
+ targetBuilder.setAutowireType(AutowireType.BY_CLASS);
+ addWantedQualifiers(targetBuilder, "test");
+ KernelControllerContext targetContext = deploy(targetBuilder.getBeanMetaData());
+ try
+ {
+ Bean bean1 = assertBean("bean1", Bean.class);
+ TargetBean target = assertBean("target", TargetBean.class);
+ assertNotNull(target.getBean());
+ assertSame(bean1, target.getBean());
+ }
+ finally
+ {
+ undeploy(bean1Context);
+ undeploy(targetContext);
+ getMetaDataRepository().getMetaDataRepository().removeMetaDataRetrieval(ScopeKey.DEFAULT_SCOPE);
+ }
+ }
+
+ public void testSuppliedQualifiersFromHigherLevelAndInstance() throws Throwable
+ {
+ MemoryMetaDataLoader loader = new MemoryMetaDataLoader(ScopeKey.DEFAULT_SCOPE);
+ loader.addMetaData(QualifiersMdrUtil.SUPPLIED_QUALIFIER_KEY, Collections.singleton("test"), Set.class);
+ getMetaDataRepository().getMetaDataRepository().addMetaDataRetrieval(loader);
+
+ BeanMetaDataBuilder bean1Builder = BeanMetaDataBuilder.createBuilder("bean1", Bean.class.getName());
+ addSuppliedQualifiers(bean1Builder, "other");
+ KernelControllerContext bean1Context = deploy(bean1Builder.getBeanMetaData());
+
+ BeanMetaDataBuilder bean2Builder = BeanMetaDataBuilder.createBuilder("bean2", Bean.class.getName());
+ addSuppliedQualifiers(bean2Builder, "else");
+ KernelControllerContext bean2Context = deploy(bean2Builder.getBeanMetaData());
+
+ BeanMetaDataBuilder targetBuilder = BeanMetaDataBuilder.createBuilder("target", TargetBean.class.getName());
+ targetBuilder.setAutowireType(AutowireType.BY_CLASS);
+ addWantedQualifiers(targetBuilder, "test", "other");
+ KernelControllerContext targetContext = deploy(targetBuilder.getBeanMetaData());
+ try
+ {
+ Bean bean1 = assertBean("bean1", Bean.class);
+ assertBean("bean2", Bean.class);
+ TargetBean target = assertBean("target", TargetBean.class);
+ assertNotNull(target.getBean());
+ assertSame(bean1, target.getBean());
+ }
+ finally
+ {
+ undeploy(bean1Context);
+ undeploy(bean2Context);
+ undeploy(targetContext);
+ getMetaDataRepository().getMetaDataRepository().removeMetaDataRetrieval(ScopeKey.DEFAULT_SCOPE);
+ }
+ }
+
+ public void testWantedQualifiersFromHigherLevel() throws Throwable
+ {
+ MemoryMetaDataLoader loader = new MemoryMetaDataLoader(ScopeKey.DEFAULT_SCOPE);
+ loader.addMetaData(QualifiersMdrUtil.WANTED_QUALIFIER_KEY, Collections.singleton("test"), Set.class);
+ getMetaDataRepository().getMetaDataRepository().addMetaDataRetrieval(loader);
+
+ BeanMetaDataBuilder bean1Builder = BeanMetaDataBuilder.createBuilder("bean1", Bean.class.getName());
+ addSuppliedQualifiers(bean1Builder, "test");
+ KernelControllerContext bean1Context = deploy(bean1Builder.getBeanMetaData());
+
+ BeanMetaDataBuilder targetBuilder = BeanMetaDataBuilder.createBuilder("target", TargetBean.class.getName());
+ targetBuilder.setAutowireType(AutowireType.BY_CLASS);
+ KernelControllerContext targetContext = deploy(targetBuilder.getBeanMetaData());
+ try
+ {
+ Bean bean1 = assertBean("bean1", Bean.class);
+ TargetBean target = assertBean("target", TargetBean.class);
+ assertNotNull(target.getBean());
+ assertSame(bean1, target.getBean());
+ }
+ finally
+ {
+ undeploy(bean1Context);
+ undeploy(targetContext);
+ getMetaDataRepository().getMetaDataRepository().removeMetaDataRetrieval(ScopeKey.DEFAULT_SCOPE);
+ }
+ }
+
+ public void testWantedQualifiersFromHigherLevelAndInstance() throws Throwable
+ {
+ MemoryMetaDataLoader loader = new MemoryMetaDataLoader(ScopeKey.DEFAULT_SCOPE);
+ loader.addMetaData(QualifiersMdrUtil.WANTED_QUALIFIER_KEY, Collections.singleton("test"), Set.class);
+ getMetaDataRepository().getMetaDataRepository().addMetaDataRetrieval(loader);
+
+ BeanMetaDataBuilder bean1Builder = BeanMetaDataBuilder.createBuilder("bean1", Bean.class.getName());
+ addSuppliedQualifiers(bean1Builder, "other");
+ KernelControllerContext bean1Context = deploy(bean1Builder.getBeanMetaData());
+
+ BeanMetaDataBuilder bean2Builder = BeanMetaDataBuilder.createBuilder("bean2", Bean.class.getName());
+ addSuppliedQualifiers(bean2Builder, "else");
+ KernelControllerContext bean2Context = deploy(bean2Builder.getBeanMetaData());
+
+ BeanMetaDataBuilder targetBuilder = BeanMetaDataBuilder.createBuilder("target", TargetBean.class.getName());
+ targetBuilder.setAutowireType(AutowireType.BY_CLASS);
+ addWantedQualifiers(targetBuilder, "other");
+ KernelControllerContext targetContext = deploy(targetBuilder.getBeanMetaData());
+ try
+ {
+ Bean bean1 = assertBean("bean1", Bean.class);
+ assertBean("bean2", Bean.class);
+ TargetBean target = assertBean("target", TargetBean.class);
+ assertNotNull(target.getBean());
+ assertSame(bean1, target.getBean());
+ }
+ finally
+ {
+ undeploy(bean1Context);
+ undeploy(bean2Context);
+ undeploy(targetContext);
+ getMetaDataRepository().getMetaDataRepository().removeMetaDataRetrieval(ScopeKey.DEFAULT_SCOPE);
+ }
+ }
+}
Added: 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 (rev 0)
+++ projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/test/InjectionPointQualifiersTestCase.java 2009-11-25 10:36:03 UTC (rev 96942)
@@ -0,0 +1,396 @@
+/*
+* 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.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.qualifiers.support.Bean;
+import org.jboss.test.kernel.qualifiers.support.Target;
+import org.jboss.test.kernel.qualifiers.support.TargetConstructorBean;
+import org.jboss.test.kernel.qualifiers.support.TargetMethodBean;
+import org.jboss.test.kernel.qualifiers.support.TargetPropertyBean;
+
+/**
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class InjectionPointQualifiersTestCase extends AbstractQualifiersTest
+{
+ public InjectionPointQualifiersTestCase(String name)
+ {
+ super(name);
+ }
+
+ public static Test suite()
+ {
+ return suite(InjectionPointQualifiersTestCase.class);
+ }
+
+ public void testSimplePropertyQualifiers() throws Throwable
+ {
+ testSimpleQualifiers(TargetPropertyBean.class, TargetType.PROPERTY);
+ }
+
+ public void testSimpleConstructorParameterQualifiers() throws Throwable
+ {
+ testSimpleQualifiers(TargetConstructorBean.class, TargetType.CONSTRUCTOR);
+ }
+
+ public void testSimpleInstallMethodParameterQualifiers() throws Throwable
+ {
+ testSimpleQualifiers(TargetMethodBean.class, TargetType.METHOD);
+ }
+
+ private <T extends Target> void testSimpleQualifiers(Class<T> targetClass, TargetType type) throws Throwable
+ {
+ BeanMetaDataBuilder bean1Builder = BeanMetaDataBuilder.createBuilder("bean1", Bean.class.getName());
+ addSuppliedQualifiers(bean1Builder, "test");
+ KernelControllerContext bean1Context = deploy(bean1Builder.getBeanMetaData());
+
+ BeanMetaDataBuilder bean2Builder = BeanMetaDataBuilder.createBuilder("bean2", Bean.class.getName());
+ KernelControllerContext bean2Context = deploy(bean2Builder.getBeanMetaData());
+
+ KernelControllerContext targetContext = deploy(createTargetMetaData(type, "test"));
+ try
+ {
+ Bean bean1 = assertBean("bean1", Bean.class);
+ assertBean("bean2", Bean.class);
+ T target = assertBean("target", targetClass);
+ assertNotNull(target.getBean());
+ assertSame(bean1, target.getBean());
+ }
+ finally
+ {
+ undeploy(bean1Context);
+ undeploy(bean2Context);
+ undeploy(targetContext);
+ }
+ }
+
+ public void testNeedsAllPropertyQualifiers() throws Throwable
+ {
+ testNeedsAllQualifiers(TargetPropertyBean.class, TargetType.PROPERTY);
+ }
+
+ public void testNeedsAllConstructorQualifiers() throws Throwable
+ {
+ testNeedsAllQualifiers(TargetConstructorBean.class, TargetType.CONSTRUCTOR);
+ }
+
+ public void testNeedsAllMethodParameterQualifiers() throws Throwable
+ {
+ testNeedsAllQualifiers(TargetMethodBean.class, TargetType.METHOD);
+ }
+
+ 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");
+ KernelControllerContext bean1Context = deploy(bean1Builder.getBeanMetaData());
+
+ BeanMetaDataBuilder bean2Builder = BeanMetaDataBuilder.createBuilder("bean2", Bean.class.getName());
+ addSuppliedQualifiers(bean2Builder, "test1", "test3", "test2");
+ KernelControllerContext bean2Context = deploy(bean2Builder.getBeanMetaData());
+
+ BeanMetaDataBuilder bean3Builder = BeanMetaDataBuilder.createBuilder("bean3", Bean.class.getName());
+ addSuppliedQualifiers(bean3Builder, "test2", "test3");
+ KernelControllerContext bean3Context = deploy(bean3Builder.getBeanMetaData());
+
+ KernelControllerContext targetContext = deploy(createTargetMetaData(type, "test1", "test2", "test3"));
+ try
+ {
+ assertBean("bean1", Bean.class);
+ Bean bean2 = assertBean("bean2", Bean.class);
+ assertBean("bean3", Bean.class);
+ T target = assertBean("target", targetClass);
+ assertNotNull(target.getBean());
+ assertSame(bean2, target.getBean());
+ }
+ finally
+ {
+ undeploy(bean1Context);
+ undeploy(bean2Context);
+ undeploy(bean3Context);
+ undeploy(targetContext);
+ }
+ }
+
+ public void testNoContextHasAllPropertyQualifiers() throws Throwable
+ {
+ testNoContextHasAllQualifiers(TargetPropertyBean.class, TargetType.PROPERTY);
+ }
+
+ public void testNoContextHasAllConstructorQualifiers() throws Throwable
+ {
+ testNoContextHasAllQualifiers(TargetConstructorBean.class, TargetType.CONSTRUCTOR);
+ }
+
+ public void testNoContextHasAllMethodParameterQualifiers() throws Throwable
+ {
+ testNoContextHasAllQualifiers(TargetMethodBean.class, TargetType.METHOD);
+ }
+
+ private <T extends Target> void testNoContextHasAllQualifiers(Class<T> targetClass, TargetType type) throws Throwable
+ {
+ BeanMetaDataBuilder bean1Builder = BeanMetaDataBuilder.createBuilder("bean1", Bean.class.getName());
+ addSuppliedQualifiers(bean1Builder, "test");
+ KernelControllerContext bean1Context = deploy(bean1Builder.getBeanMetaData());
+
+ BeanMetaDataBuilder bean2Builder = BeanMetaDataBuilder.createBuilder("bean2", Bean.class.getName());
+ addSuppliedQualifiers(bean2Builder, "other");
+ KernelControllerContext bean2Context = deploy(bean2Builder.getBeanMetaData());
+
+ KernelControllerContext targetContext = deploy(createTargetMetaData(type, "test", "other"));
+ try
+ {
+ assertBean("bean1", Bean.class);
+ assertBean("bean2", Bean.class);
+ assertNoBean("target");
+ }
+ finally
+ {
+ undeploy(bean1Context);
+ undeploy(bean2Context);
+ undeploy(targetContext);
+ }
+ }
+
+ public void testTwoContextsHaveAllRequiredPropertyQualifiers() throws Throwable
+ {
+ testTwoContextsHaveAllRequiredQualifiers(TargetPropertyBean.class, TargetType.PROPERTY);
+ }
+
+ public void testTwoContextsHaveAllRequiredConstructorQualifiers() throws Throwable
+ {
+ testTwoContextsHaveAllRequiredQualifiers(TargetConstructorBean.class, TargetType.CONSTRUCTOR);
+ }
+
+ public void testTwoContextsHaveAllRequiredMethodParameterQualifiers() throws Throwable
+ {
+ testTwoContextsHaveAllRequiredQualifiers(TargetMethodBean.class, TargetType.METHOD);
+ }
+
+ 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");
+ KernelControllerContext bean1Context = deploy(bean1Builder.getBeanMetaData());
+
+ BeanMetaDataBuilder bean2Builder = BeanMetaDataBuilder.createBuilder("bean2", Bean.class.getName());
+ addSuppliedQualifiers(bean2Builder, "test1", "test2");
+ KernelControllerContext bean2Context = deploy(bean2Builder.getBeanMetaData());
+
+ KernelControllerContext targetContext = deploy(createTargetMetaData(type, "test1", "test2"));
+ try
+ {
+ assertBean("bean1", Bean.class);
+ assertBean("bean2", Bean.class);
+ assertNoBean("target");
+ }
+ finally
+ {
+ undeploy(bean1Context);
+ undeploy(bean2Context);
+ undeploy(targetContext);
+ }
+ }
+
+ public void testTwoContextsHaveMoreThanRequiredPropertyQualifiers() throws Throwable
+ {
+ testTwoContextsHaveMoreThanRequiredQualifiers(TargetPropertyBean.class, TargetType.PROPERTY);
+ }
+
+ public void testTwoContextsHaveMoreThanRequiredConstructorQualifiers() throws Throwable
+ {
+ testTwoContextsHaveMoreThanRequiredQualifiers(TargetConstructorBean.class, TargetType.CONSTRUCTOR);
+ }
+
+ public void testTwoContextsHaveMoreThanRequiredMethodParameterQualifiers() throws Throwable
+ {
+ testTwoContextsHaveMoreThanRequiredQualifiers(TargetMethodBean.class, TargetType.METHOD);
+ }
+
+ 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");
+ KernelControllerContext bean1Context = deploy(bean1Builder.getBeanMetaData());
+
+ BeanMetaDataBuilder bean2Builder = BeanMetaDataBuilder.createBuilder("bean2", Bean.class.getName());
+ addSuppliedQualifiers(bean2Builder, "test1", "test2", "extra2");
+ KernelControllerContext bean2Context = deploy(bean2Builder.getBeanMetaData());
+
+ KernelControllerContext targetContext = deploy(createTargetMetaData(type, "test1", "test2"));
+ try
+ {
+ assertBean("bean1", Bean.class);
+ assertBean("bean2", Bean.class);
+ assertNoBean("target");
+ }
+ finally
+ {
+ undeploy(bean1Context);
+ undeploy(bean2Context);
+ undeploy(targetContext);
+ }
+ }
+
+ public void testWantedBeanQualifiersIgnoredWhenPropertyQualifiersPresent() throws Throwable
+ {
+ testBeanQualifiersIgnoredWhenQualifiersPresent(TargetPropertyBean.class, TargetType.PROPERTY);
+ }
+
+ public void testWantedQualifiersIgnoredWhenConstructorQualifiersPresent() throws Throwable
+ {
+ testBeanQualifiersIgnoredWhenQualifiersPresent(TargetConstructorBean.class, TargetType.CONSTRUCTOR);
+ }
+
+ public void testWantedBeanQualifiersIgnoredWhenMethodQualifiersPresent() throws Throwable
+ {
+ testBeanQualifiersIgnoredWhenQualifiersPresent(TargetMethodBean.class, TargetType.METHOD);
+ }
+
+ private <T extends Target> void testBeanQualifiersIgnoredWhenQualifiersPresent(Class<T> targetClass, TargetType type) throws Throwable
+ {
+ BeanMetaDataBuilder bean1Builder = BeanMetaDataBuilder.createBuilder("bean1", Bean.class.getName());
+ addSuppliedQualifiers(bean1Builder, "test");
+ KernelControllerContext bean1Context = deploy(bean1Builder.getBeanMetaData());
+
+ BeanMetaDataBuilder bean2Builder = BeanMetaDataBuilder.createBuilder("bean2", Bean.class.getName());
+ addSuppliedQualifiers(bean2Builder, "other");
+ KernelControllerContext bean2Context = deploy(bean2Builder.getBeanMetaData());
+
+ KernelControllerContext targetContext = deploy(addWantedQualifiers(createTargetMetaData(type, "test"), "ignored"));
+ try
+ {
+ Bean bean1 = assertBean("bean1", Bean.class);
+ assertBean("bean2", Bean.class);
+ T target = assertBean("target", targetClass);
+ assertNotNull(target.getBean());
+ assertSame(bean1, target.getBean());
+ }
+ finally
+ {
+ undeploy(bean1Context);
+ undeploy(bean2Context);
+ undeploy(targetContext);
+ }
+ }
+
+ public void testWantedBeanQualifiersIgnoredWhenPropertyQualifiersPresent2() throws Throwable
+ {
+ testBeanQualifiersIgnoredWhenQualifiersPresent2(TargetPropertyBean.class, TargetType.PROPERTY);
+ }
+
+ public void testWantedQualifiersIgnoredWhenConstructorQualifiersPresent2() throws Throwable
+ {
+ testBeanQualifiersIgnoredWhenQualifiersPresent2(TargetConstructorBean.class, TargetType.CONSTRUCTOR);
+ }
+
+ public void testWantedBeanQualifiersIgnoredWhenMethodQualifiersPresent2() throws Throwable
+ {
+ testBeanQualifiersIgnoredWhenQualifiersPresent2(TargetMethodBean.class, TargetType.METHOD);
+ }
+
+ private <T extends Target> void testBeanQualifiersIgnoredWhenQualifiersPresent2(Class<T> targetClass, TargetType type) throws Throwable
+ {
+ BeanMetaDataBuilder bean1Builder = BeanMetaDataBuilder.createBuilder("bean1", Bean.class.getName());
+ addSuppliedQualifiers(bean1Builder, "test");
+ KernelControllerContext bean1Context = deploy(bean1Builder.getBeanMetaData());
+
+ BeanMetaDataBuilder bean2Builder = BeanMetaDataBuilder.createBuilder("bean2", Bean.class.getName());
+ addSuppliedQualifiers(bean2Builder, "other");
+ KernelControllerContext bean2Context = deploy(bean2Builder.getBeanMetaData());
+
+ KernelControllerContext targetContext = deploy(addWantedQualifiers(createTargetMetaData(type, "injectionpoint"), "test"));
+ try
+ {
+ assertBean("bean1", Bean.class);
+ assertBean("bean2", Bean.class);
+ assertNoBean("target");
+ }
+ finally
+ {
+ undeploy(bean1Context);
+ undeploy(bean2Context);
+ undeploy(targetContext);
+ }
+ }
+
+ private BeanMetaData addWantedQualifiers(BeanMetaData bmd, Object...qualifiers)
+ {
+ BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder(bmd);
+ 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);
+
+ }
+ else if (type == TargetType.CONSTRUCTOR)
+ {
+ targetBuilder = BeanMetaDataBuilder.createBuilder("target", TargetConstructorBean.class.getName());
+ targetBuilder.addConstructorParameter(Bean.class.getName(), inject);
+ }
+ else
+ {
+ targetBuilder = BeanMetaDataBuilder.createBuilder("target", TargetMethodBean.class.getName());
+ targetBuilder.addInstall("installBean", Bean.class.getName(), inject);
+ }
+ targetBuilder.setAutowireType(AutowireType.BY_CLASS);
+
+ return targetBuilder.getBeanMetaData();
+ }
+
+ private enum TargetType
+ {
+ PROPERTY, CONSTRUCTOR, METHOD;
+ }
+}
Added: 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 (rev 0)
+++ projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/test/QualifiersTestSuite.java 2009-11-25 10:36:03 UTC (rev 96942)
@@ -0,0 +1,47 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt 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 junit.framework.TestSuite;
+import junit.framework.Test;
+import junit.textui.TestRunner;
+
+/**
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ */
+public class QualifiersTestSuite extends TestSuite
+{
+ public static void main(String[] args)
+ {
+ TestRunner.run(QualifiersTestSuite.suite());
+ }
+
+ public static Test suite()
+ {
+ TestSuite suite = new TestSuite("Qualifier Tests");
+
+ suite.addTest(BeanQualifiersTestCase.suite());
+ suite.addTest(InjectionPointQualifiersTestCase.suite());
+
+ return suite;
+ }
+}
Added: 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 (rev 0)
+++ projects/kernel/trunk/kernel/src/test/java/org/jboss/test/kernel/qualifiers/test/QualifiersXmlTestCase.java 2009-11-25 10:36:03 UTC (rev 96942)
@@ -0,0 +1,137 @@
+/*
+* 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 junit.framework.Test;
+
+import org.jboss.test.kernel.qualifiers.support.Bean;
+import org.jboss.test.kernel.qualifiers.support.TargetBean;
+import org.jboss.test.kernel.qualifiers.support.TargetConstructorBean;
+import org.jboss.test.kernel.qualifiers.support.TargetMethodBean;
+import org.jboss.test.kernel.qualifiers.support.TargetPropertyBean;
+
+/**
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class QualifiersXmlTestCase extends AbstractQualifiersTest
+{
+ public QualifiersXmlTestCase(String name)
+ {
+ super(name);
+ }
+
+ public static Test suite()
+ {
+ return suite(QualifiersXmlTestCase.class);
+ }
+
+ public void testSimpleBeanQualifiers()
+ {
+ assertBean("bean1", Bean.class);
+ Bean bean = assertBean("bean2", Bean.class);
+ assertBean("bean3", Bean.class);
+
+ TargetBean target = assertBean("target", TargetBean.class);
+ assertEquals(bean, target.getBean());
+ }
+
+ public void testCompositeBeanQualifiers()
+ {
+ assertBean("bean1", Bean.class);
+ Bean bean = assertBean("bean2", Bean.class);
+ assertBean("bean3", Bean.class);
+
+ TargetBean target = assertBean("target", TargetBean.class);
+ assertEquals(bean, target.getBean());
+ }
+
+ public void testPropertyAndSimpleBeanQualifiers()
+ {
+ assertBean("bean1", Bean.class);
+ Bean bean = assertBean("bean2", Bean.class);
+
+ TargetPropertyBean target = assertBean("target", TargetPropertyBean.class);
+ assertEquals(bean, target.getBean());
+ }
+
+ public void testPropertyAndCompositeBeanQualifiers()
+ {
+ assertBean("bean1", Bean.class);
+ Bean bean = assertBean("bean2", Bean.class);
+
+ TargetPropertyBean target = assertBean("target", TargetPropertyBean.class);
+ assertEquals(bean, target.getBean());
+ }
+
+ public void testSimplePropertyQualifiers()
+ {
+ assertBean("bean1", Bean.class);
+ Bean bean = assertBean("bean2", Bean.class);
+
+ TargetPropertyBean target = assertBean("target", TargetPropertyBean.class);
+ assertEquals(bean, target.getBean());
+ }
+
+ public void testCompositePropertyQualifiers()
+ {
+ assertBean("bean1", Bean.class);
+ Bean bean = assertBean("bean2", Bean.class);
+ TargetPropertyBean target = assertBean("target", TargetPropertyBean.class);
+ assertEquals(bean, target.getBean());
+ }
+
+ public void testSimpleConstructorQualifiers()
+ {
+ assertBean("bean1", Bean.class);
+ Bean bean = assertBean("bean2", Bean.class);
+
+ TargetConstructorBean target = assertBean("target", TargetConstructorBean.class);
+ assertEquals(bean, target.getBean());
+ }
+
+ public void testCompositeConstructorQualifiers()
+ {
+ assertBean("bean1", Bean.class);
+ Bean bean = assertBean("bean2", Bean.class);
+ TargetConstructorBean target = assertBean("target", TargetConstructorBean.class);
+ assertEquals(bean, target.getBean());
+ }
+
+ public void testSimpleMethodQualifiers()
+ {
+ assertBean("bean1", Bean.class);
+ Bean bean = assertBean("bean2", Bean.class);
+
+ TargetMethodBean target = assertBean("target", TargetMethodBean.class);
+ assertEquals(bean, target.getBean());
+ }
+
+ public void testCompositeMethodQualifiers()
+ {
+ assertBean("bean1", Bean.class);
+ Bean bean = assertBean("bean2", Bean.class);
+ TargetMethodBean target = assertBean("target", TargetMethodBean.class);
+ assertEquals(bean, target.getBean());
+ }
+}
Added: projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/deployment/xml/test/QualifierBeanWithEnabled.xml
===================================================================
--- projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/deployment/xml/test/QualifierBeanWithEnabled.xml (rev 0)
+++ projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/deployment/xml/test/QualifierBeanWithEnabled.xml 2009-11-25 10:36:03 UTC (rev 96942)
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<bean xmlns="urn:jboss:bean-deployer:2.0" class="Dummy">
+ <qualifier>aop</qualifier>
+</bean>
Added: projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/deployment/xml/test/QualifierBeanWithEnableds.xml
===================================================================
--- projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/deployment/xml/test/QualifierBeanWithEnableds.xml (rev 0)
+++ projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/deployment/xml/test/QualifierBeanWithEnableds.xml 2009-11-25 10:36:03 UTC (rev 96942)
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<bean xmlns="urn:jboss:bean-deployer:2.0" class="Dummy">
+ <qualifier>
+ <javabean xmlns="urn:jboss:javabean:2.0" class="java.lang.String">
+ <constructor>
+ <parameter>123</parameter>
+ </constructor>
+ </javabean>
+ <javabean xmlns="urn:jboss:javabean:2.0" class="java.lang.String">
+ <constructor>
+ <parameter>abc</parameter>
+ </constructor>
+ </javabean>
+ </qualifier>
+</bean>
Added: projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/deployment/xml/test/QualifierBeanWithNameFails.xml
===================================================================
--- projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/deployment/xml/test/QualifierBeanWithNameFails.xml (rev 0)
+++ projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/deployment/xml/test/QualifierBeanWithNameFails.xml 2009-11-25 10:36:03 UTC (rev 96942)
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<bean xmlns="urn:jboss:bean-deployer:2.0" class="Dummy">
+ <qualifier name="java.lang.Object">aop</qualifier>
+</bean>
Added: projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/deployment/xml/test/QualifierBeanWithSuppliedType.xml
===================================================================
--- projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/deployment/xml/test/QualifierBeanWithSuppliedType.xml (rev 0)
+++ projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/deployment/xml/test/QualifierBeanWithSuppliedType.xml 2009-11-25 10:36:03 UTC (rev 96942)
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<bean xmlns="urn:jboss:bean-deployer:2.0" class="Dummy">
+ <qualifier type="Supplied">aop</qualifier>
+</bean>
Added: projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/deployment/xml/test/QualifierBeanWithWantedType.xml
===================================================================
--- projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/deployment/xml/test/QualifierBeanWithWantedType.xml (rev 0)
+++ projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/deployment/xml/test/QualifierBeanWithWantedType.xml 2009-11-25 10:36:03 UTC (rev 96942)
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<bean xmlns="urn:jboss:bean-deployer:2.0" class="Dummy">
+ <qualifier type="Wanted">aop</qualifier>
+</bean>
Added: projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/deployment/xml/test/QualifierBeanWithWrongTypeFails.xml
===================================================================
--- projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/deployment/xml/test/QualifierBeanWithWrongTypeFails.xml (rev 0)
+++ projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/deployment/xml/test/QualifierBeanWithWrongTypeFails.xml 2009-11-25 10:36:03 UTC (rev 96942)
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<bean xmlns="urn:jboss:bean-deployer:2.0" class="Dummy">
+ <qualifier type="Wrong!!!">aop</qualifier>
+</bean>
Added: projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/deployment/xml/test/QualifierConstructorParameterInjectWithEnabled.xml
===================================================================
--- projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/deployment/xml/test/QualifierConstructorParameterInjectWithEnabled.xml (rev 0)
+++ projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/deployment/xml/test/QualifierConstructorParameterInjectWithEnabled.xml 2009-11-25 10:36:03 UTC (rev 96942)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<bean xmlns="urn:jboss:bean-deployer:2.0">
+ <constructor>
+ <parameter>
+ <inject bean="Dummy">
+ <qualifier>aop</qualifier>
+ </inject>
+ </parameter>
+ </constructor>
+</bean>
Added: projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/deployment/xml/test/QualifierMethodParameterInjectWithEnabled.xml
===================================================================
--- projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/deployment/xml/test/QualifierMethodParameterInjectWithEnabled.xml (rev 0)
+++ projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/deployment/xml/test/QualifierMethodParameterInjectWithEnabled.xml 2009-11-25 10:36:03 UTC (rev 96942)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<bean xmlns="urn:jboss:bean-deployer:2.0">
+ <install>
+ <parameter>
+ <inject bean="Dummy">
+ <qualifier>aop</qualifier>
+ </inject>
+ </parameter>
+ </install>
+</bean>
Added: projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/deployment/xml/test/QualifierPropertyInjectWithEnableds.xml
===================================================================
--- projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/deployment/xml/test/QualifierPropertyInjectWithEnableds.xml (rev 0)
+++ projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/deployment/xml/test/QualifierPropertyInjectWithEnableds.xml 2009-11-25 10:36:03 UTC (rev 96942)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<bean xmlns="urn:jboss:bean-deployer:2.0" class="Dummy">
+ <property name="test">
+ <inject>
+ <qualifier>
+ <javabean xmlns="urn:jboss:javabean:1.0" class="java.util.Date"/>
+ <javabean xmlns="urn:jboss:javabean:1.0" class="java.lang.String"/>
+ </qualifier>
+ </inject>
+ </property>
+</bean>
Added: projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/deployment/xml/test/QualifierPropertyInjectWithNameFail.xml
===================================================================
--- projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/deployment/xml/test/QualifierPropertyInjectWithNameFail.xml (rev 0)
+++ projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/deployment/xml/test/QualifierPropertyInjectWithNameFail.xml 2009-11-25 10:36:03 UTC (rev 96942)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<bean xmlns="urn:jboss:bean-deployer:2.0" class="Dummy">
+ <property name="test">
+ <inject>
+ <qualifier name="abc">123</qualifier>
+ </inject>
+ </property>
+</bean>
Added: projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/qualifiers/test/QualifiersXmlTestCase#testCompositeBeanQualifiers.xml
===================================================================
--- projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/qualifiers/test/QualifiersXmlTestCase#testCompositeBeanQualifiers.xml (rev 0)
+++ projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/qualifiers/test/QualifiersXmlTestCase#testCompositeBeanQualifiers.xml 2009-11-25 10:36:03 UTC (rev 96942)
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<deployment xmlns="urn:jboss:bean-deployer:2.0">
+
+ <bean name="bean1" class="org.jboss.test.kernel.qualifiers.support.Bean">
+ <qualifier>
+ <javabean xmlns="urn:jboss:javabean:2.0" class="java.lang.String">
+ <constructor>
+ <parameter>test1</parameter>
+ </constructor>
+ </javabean>
+ <javabean xmlns="urn:jboss:javabean:2.0" class="java.lang.String">
+ <constructor>
+ <parameter>test2</parameter>
+ </constructor>
+ </javabean>
+ </qualifier>
+ </bean>
+
+ <bean name="bean2" class="org.jboss.test.kernel.qualifiers.support.Bean">
+ <qualifier>
+ <javabean xmlns="urn:jboss:javabean:2.0" class="java.lang.String">
+ <constructor>
+ <parameter>test3</parameter>
+ </constructor>
+ </javabean>
+ <javabean xmlns="urn:jboss:javabean:2.0" class="java.lang.String">
+ <constructor>
+ <parameter>test2</parameter>
+ </constructor>
+ </javabean>
+ <javabean xmlns="urn:jboss:javabean:2.0" class="java.lang.String">
+ <constructor>
+ <parameter>test1</parameter>
+ </constructor>
+ </javabean>
+ </qualifier>
+ </bean>
+
+ <bean name="bean3" class="org.jboss.test.kernel.qualifiers.support.Bean">
+ <qualifier>
+ <javabean xmlns="urn:jboss:javabean:2.0" class="java.lang.String">
+ <constructor>
+ <parameter>test1</parameter>
+ </constructor>
+ </javabean>
+ </qualifier>
+ </bean>
+
+ <bean name="target" class="org.jboss.test.kernel.qualifiers.support.TargetBean">
+ <qualifier type="Wanted">
+ <javabean xmlns="urn:jboss:javabean:2.0" class="java.lang.String">
+ <constructor>
+ <parameter>test1</parameter>
+ </constructor>
+ </javabean>
+ <javabean xmlns="urn:jboss:javabean:2.0" class="java.lang.String">
+ <constructor>
+ <parameter>test2</parameter>
+ </constructor>
+ </javabean>
+ <javabean xmlns="urn:jboss:javabean:2.0" class="java.lang.String">
+ <constructor>
+ <parameter>test3</parameter>
+ </constructor>
+ </javabean>
+ </qualifier>
+ </bean>
+
+</deployment>
Added: projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/qualifiers/test/QualifiersXmlTestCase#testCompositeConstructorQualifiers.xml
===================================================================
--- projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/qualifiers/test/QualifiersXmlTestCase#testCompositeConstructorQualifiers.xml (rev 0)
+++ projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/qualifiers/test/QualifiersXmlTestCase#testCompositeConstructorQualifiers.xml 2009-11-25 10:36:03 UTC (rev 96942)
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<deployment xmlns="urn:jboss:bean-deployer:2.0">
+
+ <bean name="bean1" class="org.jboss.test.kernel.qualifiers.support.Bean">
+ <qualifier>
+ <javabean xmlns="urn:jboss:javabean:2.0" class="java.lang.String">
+ <constructor>
+ <parameter>test1</parameter>
+ </constructor>
+ </javabean>
+ </qualifier>
+ </bean>
+
+ <bean name="bean2" class="org.jboss.test.kernel.qualifiers.support.Bean">
+ <qualifier>
+ <javabean xmlns="urn:jboss:javabean:2.0" class="java.lang.String">
+ <constructor>
+ <parameter>test2</parameter>
+ </constructor>
+ </javabean>
+ <javabean xmlns="urn:jboss:javabean:2.0" class="java.lang.String">
+ <constructor>
+ <parameter>test1</parameter>
+ </constructor>
+ </javabean>
+ </qualifier>
+ </bean>
+
+ <bean name="target" class="org.jboss.test.kernel.qualifiers.support.TargetConstructorBean">
+ <constructor>
+ <parameter>
+ <inject>
+ <qualifier>
+ <javabean xmlns="urn:jboss:javabean:2.0" class="java.lang.String">
+ <constructor>
+ <parameter>test1</parameter>
+ </constructor>
+ </javabean>
+ <javabean xmlns="urn:jboss:javabean:2.0" class="java.lang.String">
+ <constructor>
+ <parameter>test2</parameter>
+ </constructor>
+ </javabean>
+ </qualifier>
+ </inject>
+ </parameter>
+ </constructor>
+ </bean>
+
+</deployment>
Added: projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/qualifiers/test/QualifiersXmlTestCase#testCompositeMethodQualifiers.xml
===================================================================
--- projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/qualifiers/test/QualifiersXmlTestCase#testCompositeMethodQualifiers.xml (rev 0)
+++ projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/qualifiers/test/QualifiersXmlTestCase#testCompositeMethodQualifiers.xml 2009-11-25 10:36:03 UTC (rev 96942)
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<deployment xmlns="urn:jboss:bean-deployer:2.0">
+
+ <bean name="bean1" class="org.jboss.test.kernel.qualifiers.support.Bean">
+ <qualifier>
+ <javabean xmlns="urn:jboss:javabean:2.0" class="java.lang.String">
+ <constructor>
+ <parameter>test1</parameter>
+ </constructor>
+ </javabean>
+ </qualifier>
+ </bean>
+
+ <bean name="bean2" class="org.jboss.test.kernel.qualifiers.support.Bean">
+ <qualifier>
+ <javabean xmlns="urn:jboss:javabean:2.0" class="java.lang.String">
+ <constructor>
+ <parameter>test2</parameter>
+ </constructor>
+ </javabean>
+ <javabean xmlns="urn:jboss:javabean:2.0" class="java.lang.String">
+ <constructor>
+ <parameter>test1</parameter>
+ </constructor>
+ </javabean>
+ </qualifier>
+ </bean>
+
+ <bean name="target" class="org.jboss.test.kernel.qualifiers.support.TargetMethodBean">
+ <install method="installBean">
+ <parameter>
+ <inject>
+ <qualifier>
+ <javabean xmlns="urn:jboss:javabean:2.0" class="java.lang.String">
+ <constructor>
+ <parameter>test1</parameter>
+ </constructor>
+ </javabean>
+ <javabean xmlns="urn:jboss:javabean:2.0" class="java.lang.String">
+ <constructor>
+ <parameter>test2</parameter>
+ </constructor>
+ </javabean>
+ </qualifier>
+ </inject>
+ </parameter>
+ </install>
+ </bean>
+
+</deployment>
Added: projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/qualifiers/test/QualifiersXmlTestCase#testCompositePropertyQualifiers.xml
===================================================================
--- projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/qualifiers/test/QualifiersXmlTestCase#testCompositePropertyQualifiers.xml (rev 0)
+++ projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/qualifiers/test/QualifiersXmlTestCase#testCompositePropertyQualifiers.xml 2009-11-25 10:36:03 UTC (rev 96942)
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<deployment xmlns="urn:jboss:bean-deployer:2.0">
+
+ <bean name="bean1" class="org.jboss.test.kernel.qualifiers.support.Bean">
+ <qualifier>
+ <javabean xmlns="urn:jboss:javabean:2.0" class="java.lang.String">
+ <constructor>
+ <parameter>test1</parameter>
+ </constructor>
+ </javabean>
+ </qualifier>
+ </bean>
+
+ <bean name="bean2" class="org.jboss.test.kernel.qualifiers.support.Bean">
+ <qualifier>
+ <javabean xmlns="urn:jboss:javabean:2.0" class="java.lang.String">
+ <constructor>
+ <parameter>test2</parameter>
+ </constructor>
+ </javabean>
+ <javabean xmlns="urn:jboss:javabean:2.0" class="java.lang.String">
+ <constructor>
+ <parameter>test1</parameter>
+ </constructor>
+ </javabean>
+ </qualifier>
+ </bean>
+
+ <bean name="target" class="org.jboss.test.kernel.qualifiers.support.TargetPropertyBean">
+ <property name="bean">
+ <inject>
+ <qualifier>
+ <javabean xmlns="urn:jboss:javabean:2.0" class="java.lang.String">
+ <constructor>
+ <parameter>test1</parameter>
+ </constructor>
+ </javabean>
+ <javabean xmlns="urn:jboss:javabean:2.0" class="java.lang.String">
+ <constructor>
+ <parameter>test2</parameter>
+ </constructor>
+ </javabean>
+ </qualifier>
+ </inject>
+ </property>
+ </bean>
+
+</deployment>
Added: projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/qualifiers/test/QualifiersXmlTestCase#testPropertyAndCompositeBeanQualifiers.xml
===================================================================
--- projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/qualifiers/test/QualifiersXmlTestCase#testPropertyAndCompositeBeanQualifiers.xml (rev 0)
+++ projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/qualifiers/test/QualifiersXmlTestCase#testPropertyAndCompositeBeanQualifiers.xml 2009-11-25 10:36:03 UTC (rev 96942)
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<deployment xmlns="urn:jboss:bean-deployer:2.0">
+
+ <bean name="bean1" class="org.jboss.test.kernel.qualifiers.support.Bean">
+ <qualifier>
+ <javabean xmlns="urn:jboss:javabean:2.0" class="java.lang.String">
+ <constructor>
+ <parameter>test1</parameter>
+ </constructor>
+ </javabean>
+ </qualifier>
+ </bean>
+
+ <bean name="bean2" class="org.jboss.test.kernel.qualifiers.support.Bean">
+ <qualifier>
+ <javabean xmlns="urn:jboss:javabean:2.0" class="java.lang.String">
+ <constructor>
+ <parameter>test2</parameter>
+ </constructor>
+ </javabean>
+ <javabean xmlns="urn:jboss:javabean:2.0" class="java.lang.String">
+ <constructor>
+ <parameter>test1</parameter>
+ </constructor>
+ </javabean>
+ </qualifier>
+ </bean>
+
+ <bean name="target" class="org.jboss.test.kernel.qualifiers.support.TargetPropertyBean">
+ <qualifier type="Wanted">
+ <javabean xmlns="urn:jboss:javabean:2.0" class="java.lang.String">
+ <constructor>
+ <parameter>test1</parameter>
+ </constructor>
+ </javabean>
+ <javabean xmlns="urn:jboss:javabean:2.0" class="java.lang.String">
+ <constructor>
+ <parameter>test2</parameter>
+ </constructor>
+ </javabean>
+ </qualifier>
+ <property name="bean"><inject/></property>
+ </bean>
+
+</deployment>
Added: projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/qualifiers/test/QualifiersXmlTestCase#testPropertyAndSimpleBeanQualifiers.xml
===================================================================
--- projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/qualifiers/test/QualifiersXmlTestCase#testPropertyAndSimpleBeanQualifiers.xml (rev 0)
+++ projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/qualifiers/test/QualifiersXmlTestCase#testPropertyAndSimpleBeanQualifiers.xml 2009-11-25 10:36:03 UTC (rev 96942)
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<deployment xmlns="urn:jboss:bean-deployer:2.0">
+
+ <bean name="bean1" class="org.jboss.test.kernel.qualifiers.support.Bean">
+ <qualifier>test1</qualifier>
+ </bean>
+
+ <bean name="bean2" class="org.jboss.test.kernel.qualifiers.support.Bean">
+ <qualifier>test2</qualifier>
+ <qualifier>test1</qualifier>
+ </bean>
+
+ <bean name="target" class="org.jboss.test.kernel.qualifiers.support.TargetPropertyBean">
+ <qualifier type="Wanted">test1</qualifier>
+ <qualifier type="Wanted">test2</qualifier>
+ <property name="bean"><inject/></property>
+ </bean>
+
+</deployment>
Added: projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/qualifiers/test/QualifiersXmlTestCase#testSimpleBeanQualifiers.xml
===================================================================
--- projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/qualifiers/test/QualifiersXmlTestCase#testSimpleBeanQualifiers.xml (rev 0)
+++ projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/qualifiers/test/QualifiersXmlTestCase#testSimpleBeanQualifiers.xml 2009-11-25 10:36:03 UTC (rev 96942)
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<deployment xmlns="urn:jboss:bean-deployer:2.0">
+
+ <bean name="bean1" class="org.jboss.test.kernel.qualifiers.support.Bean">
+ <qualifier>test1</qualifier>
+ <qualifier>test2</qualifier>
+ </bean>
+
+ <bean name="bean2" class="org.jboss.test.kernel.qualifiers.support.Bean">
+ <qualifier>test3</qualifier>
+ <qualifier>test2</qualifier>
+ <qualifier>test1</qualifier>
+ </bean>
+
+ <bean name="bean3" class="org.jboss.test.kernel.qualifiers.support.Bean">
+ <qualifier>test</qualifier>
+ </bean>
+
+ <bean name="target" class="org.jboss.test.kernel.qualifiers.support.TargetBean">
+ <qualifier type="Wanted">test1</qualifier>
+ <qualifier type="Wanted">test2</qualifier>
+ <qualifier type="Wanted">test3</qualifier>
+ </bean>
+
+</deployment>
Added: projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/qualifiers/test/QualifiersXmlTestCase#testSimpleConstructorQualifiers.xml
===================================================================
--- projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/qualifiers/test/QualifiersXmlTestCase#testSimpleConstructorQualifiers.xml (rev 0)
+++ projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/qualifiers/test/QualifiersXmlTestCase#testSimpleConstructorQualifiers.xml 2009-11-25 10:36:03 UTC (rev 96942)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<deployment xmlns="urn:jboss:bean-deployer:2.0">
+
+ <bean name="bean1" class="org.jboss.test.kernel.qualifiers.support.Bean">
+ <qualifier>test1</qualifier>
+ </bean>
+
+ <bean name="bean2" class="org.jboss.test.kernel.qualifiers.support.Bean">
+ <qualifier>test2</qualifier>
+ <qualifier>test1</qualifier>
+ </bean>
+
+ <bean name="target" class="org.jboss.test.kernel.qualifiers.support.TargetConstructorBean">
+ <constructor>
+ <parameter>
+ <inject>
+ <qualifier>test1</qualifier>
+ <qualifier>test2</qualifier>
+ </inject>
+ </parameter>
+ </constructor>
+ </bean>
+
+</deployment>
Added: projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/qualifiers/test/QualifiersXmlTestCase#testSimpleMethodQualifiers.xml
===================================================================
--- projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/qualifiers/test/QualifiersXmlTestCase#testSimpleMethodQualifiers.xml (rev 0)
+++ projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/qualifiers/test/QualifiersXmlTestCase#testSimpleMethodQualifiers.xml 2009-11-25 10:36:03 UTC (rev 96942)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<deployment xmlns="urn:jboss:bean-deployer:2.0">
+
+ <bean name="bean1" class="org.jboss.test.kernel.qualifiers.support.Bean">
+ <qualifier>test1</qualifier>
+ </bean>
+
+ <bean name="bean2" class="org.jboss.test.kernel.qualifiers.support.Bean">
+ <qualifier>test2</qualifier>
+ <qualifier>test1</qualifier>
+ </bean>
+
+ <bean name="target" class="org.jboss.test.kernel.qualifiers.support.TargetMethodBean">
+ <install method="installBean">
+ <parameter>
+ <inject>
+ <qualifier>test1</qualifier>
+ <qualifier>test2</qualifier>
+ </inject>
+ </parameter>
+ </install>
+ </bean>
+
+</deployment>
Added: projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/qualifiers/test/QualifiersXmlTestCase#testSimplePropertyQualifiers.xml
===================================================================
--- projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/qualifiers/test/QualifiersXmlTestCase#testSimplePropertyQualifiers.xml (rev 0)
+++ projects/kernel/trunk/kernel/src/test/resources/org/jboss/test/kernel/qualifiers/test/QualifiersXmlTestCase#testSimplePropertyQualifiers.xml 2009-11-25 10:36:03 UTC (rev 96942)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<deployment xmlns="urn:jboss:bean-deployer:2.0">
+
+ <bean name="bean1" class="org.jboss.test.kernel.qualifiers.support.Bean">
+ <qualifier>test1</qualifier>
+ </bean>
+
+ <bean name="bean2" class="org.jboss.test.kernel.qualifiers.support.Bean">
+ <qualifier>test2</qualifier>
+ <qualifier>test1</qualifier>
+ </bean>
+
+ <bean name="target" class="org.jboss.test.kernel.qualifiers.support.TargetPropertyBean">
+ <property name="bean">
+ <inject>
+ <qualifier>test1</qualifier>
+ <qualifier>test2</qualifier>
+ </inject>
+ </property>
+ </bean>
+
+</deployment>
More information about the jboss-cvs-commits
mailing list