[jboss-dev-forums] [JBoss Microcontainer Development] - Re: Supporting qualifiers in MC
kabir.khan@jboss.com
do-not-reply at jboss.com
Tue Nov 24 14:39:38 EST 2009
I am able to add qualifiers to the bean level via xml easily, e.g.:
| <bean xmlns="urn:jboss:bean-deployer:2.0" class="Dummy">
| <qualifier>
| <javabean xmlns="urn:jboss:javabean:1.0" class="java.util.Date"/>
| <javabean xmlns="urn:jboss:javabean:1.0" class="java.lang.String"/>
| </qualifier>
| </bean>
| <bean xmlns="urn:jboss:bean-deployer:2.0" class="Dummy">
| <qualifier type="Wanted">aop</qualifier>
| </bean>
|
This is handled by a sub class of AbstractRelatedClassMetadata which hardcodes the name of the class depending on the qualifier type being Wanted or Supplied (Default).
Now, trying to add this for injection points, I get the following to parse:
| <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>
|
But since I also want to be able to add these qualifiers directly programatically whereby I have been doing:
| AbstractInjectionValueMetaData inject = new AbstractInjectionValueMetaData();
| inject.setInjectionPointQualifiers(new HashSet<Object>(Arrays.asList(qualifiers)));
|
I end up with two sets of properties in AbstractInjectionValueMetaData for the same thing:
| /**
| * Get the injectionPointQualifiers
| * @return the injectionPointQualifiers
| */
| public Set<Object> getInjectionPointQualifiers()
| {
| return injectionPointQualifiers;
| }
|
| /**
| * Set the injectionPointQualifiers
| * @param injectionPointQualifiers the injectionPointQualifiers to set
| */
| public void setInjectionPointQualifiers(Set<Object> injectionPointQualifiers)
| {
| this.injectionPointQualifiers = injectionPointQualifiers;
| }
|
| /**
| * Get the injectionPointQualifierMetaData
| * @return the injectionPointQualifierMetaData
| */
| public Set<RelatedClassMetaData> getInjectionPointQualifierMetaData()
| {
| return injectionPointQualifierMetaData;
| }
|
| /**
| * Set the injectionPointQualifierMetaData
| * @param injectionPointQualifierMetaData the injectionPointQualifierMetaData to set
| */
| @XmlElement(name="qualifier", type=AbstractQualifierMetaData.class) //Sub-class of AbstractRelatedClassMetaData
| public void setInjectionPointQualifierMetaData(Set<RelatedClassMetaData> injectionPointQualifierMetaData)
| {
| this.injectionPointQualifierMetaData = injectionPointQualifierMetaData;
| }
|
I like the convenience of being able to call setInjectionPointQualifiers() directly when creating this programatically without having to wrap it up in an AbstractQualifierMetaData, but I guess that can be hidden in the BeanMetaDataBuilder. So unless somebody knows how to avoid that, I'll take that route.
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4267388#4267388
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4267388
More information about the jboss-dev-forums
mailing list