[wildfly-dev] Activation config annotation property replacement

luca boncompagni lbonco at gmail.com
Thu Nov 7 07:35:57 EST 2013


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/wildfly-dev/attachments/20131107/c7fd47c5/attachment-0001.html 


More information about the wildfly-dev mailing list