[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