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#...
Reply to the post :
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&a...