[wildfly-dev] Activation config annotation property replacement

Jeff Mesnil jmesnil at redhat.com
Thu Nov 14 11:10:06 EST 2013


Hi,

It looks like your patch is correct. Would you be interesting to contribute it to WildFly[1]?

[1] https://community.jboss.org/wiki/HackingOnWildFly

On 7 Nov 2013, at 13:35, luca boncompagni <lbonco at gmail.com> wrote:

> Hi to all,
> 
> I need to be able to do property replacement inside an MDB, for instance:
> 
> @MessageDriven(activationConfig = { 
> @ActivationConfigProperty(
> propertyName = "destinationLookup",
> propertyValue = "java:global/jms/myAsyncQueue${short-postfix}"
> ),
> @ActivationConfigProperty(
> propertyName="connectionFactoryLookup",
> propertyValue="java:jboss/exported/jms/RemoteConnectionFactory"
> )
> })
> public class TestMDB implements MessageListener {
> 
> I do this small patch:
> 
> 
> diff --git a/ejb3/src/main/java/org/jboss/as/ejb3/deployment/processors/MessageDrivenComponentDescriptionFactory.java b/ejb3/src/main/java/org/jboss/as/ejb3/deployment/processors/MessageDrivenComponentDescriptionFactory.java
> index 5d01865..7494d0f 100644
> --- a/ejb3/src/main/java/org/jboss/as/ejb3/deployment/processors/MessageDrivenComponentDescriptionFactory.java
> +++ b/ejb3/src/main/java/org/jboss/as/ejb3/deployment/processors/MessageDrivenComponentDescriptionFactory.java
> @@ -52,6 +52,9 @@
>  import org.jboss.metadata.ejb.spec.ActivationConfigPropertyMetaData;
>  import org.jboss.metadata.ejb.spec.EnterpriseBeanMetaData;
>  import org.jboss.metadata.ejb.spec.MessageDrivenBeanMetaData;
> +import org.jboss.metadata.property.PropertyReplacer;
> +import org.jboss.metadata.property.PropertyReplacers;
> +import org.jboss.metadata.property.PropertyResolver;
>  import org.jboss.msc.service.ServiceController;
>  import org.jboss.msc.service.ServiceName;
>  import org.jboss.msc.service.ServiceRegistry;
> @@ -108,7 +111,9 @@
>              final MessageDrivenBeanMetaData beanMetaData = getEnterpriseBeanMetaData(deploymentUnit, beanName, MessageDrivenBeanMetaData.class);
>              final String beanClassName;
>              final String messageListenerInterfaceName;
> -            final Properties activationConfigProperties = getActivationConfigProperties(messageBeanAnnotation);
> +            final PropertyResolver propertyResolver = deploymentUnit.getAttachment(org.jboss.as.ee.metadata.property.Attachments.FINAL_PROPERTY_RESOLVER);
> +            final PropertyReplacer propertyReplacer = PropertyReplacers.resolvingReplacer(propertyResolver);
> +            final Properties activationConfigProperties = getActivationConfigProperties(messageBeanAnnotation, propertyReplacer);
>              final String messagingType;
>              if (beanMetaData != null) {
>                  beanClassName = override(beanClassInfo.name().toString(), beanMetaData.getEjbClass());
> @@ -244,13 +249,13 @@
>          addComponent(deploymentUnit, mdbComponentDescription);
>      }
>  
> -    private Properties getActivationConfigProperties(final AnnotationInstance messageBeanAnnotation) {
> +    private Properties getActivationConfigProperties(final AnnotationInstance messageBeanAnnotation, PropertyReplacer propertyReplacer) {
>          final Properties props = new Properties();
>          final AnnotationValue activationConfig = messageBeanAnnotation.value("activationConfig");
>          if (activationConfig == null)
>              return props;
>          for (final AnnotationInstance propAnnotation : activationConfig.asNestedArray()) {
> -            props.put(propAnnotation.value("propertyName").asString(), propAnnotation.value("propertyValue").asString());
> +            props.put(propAnnotation.value("propertyName").asString(), propertyReplacer.replaceProperties(propAnnotation.value("propertyValue").asString()));
>          }
>          return props;
>      }
> 
> Do  you have any suggestions?
> 
> Luca
> _______________________________________________
> wildfly-dev mailing list
> wildfly-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/wildfly-dev

-- 
Jeff Mesnil
JBoss, a division of Red Hat
http://jmesnil.net/




More information about the wildfly-dev mailing list