[jboss-cvs] JBossAS SVN: r114563 - projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Nov 29 04:22:05 EST 2013


Author: soul2zimate
Date: 2013-11-29 04:22:05 -0500 (Fri, 29 Nov 2013)
New Revision: 114563

Modified:
   projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/MessageDrivenProcessor.java
Log:
[JBPAPP-10918], replace property value in metadata

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/MessageDrivenProcessor.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/MessageDrivenProcessor.java	2013-11-21 05:44:02 UTC (rev 114562)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/MessageDrivenProcessor.java	2013-11-29 09:22:05 UTC (rev 114563)
@@ -24,6 +24,8 @@
 import java.lang.annotation.Annotation;
 import java.lang.reflect.AnnotatedElement;
 import java.util.Collection;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 import javax.ejb.ActivationConfigProperty;
 import javax.ejb.MessageDriven;
@@ -46,6 +48,7 @@
  */
 public class MessageDrivenProcessor extends AbstractEnterpriseBeanProcessor<JBossMessageDrivenBeanMetaData>
 {
+   private static final Pattern pattern = Pattern.compile("\\$\\{([^:}]+)(?:\\:([^}]+))?\\}");
 
    protected MessageDrivenProcessor(AnnotationFinder<AnnotatedElement> finder)
    {
@@ -84,7 +87,7 @@
       {
          ActivationConfigPropertyMetaData acp = new ActivationConfigPropertyMetaData();
          acp.setActivationConfigPropertyName(prop.propertyName());
-         acp.setValue(prop.propertyValue());
+         acp.setValue(replaceVariables(prop.propertyName(), prop.propertyValue()));
          configProps.add(acp);
       }
       metaData.setActivationConfig(config);
@@ -95,4 +98,20 @@
    {
       return ProcessorUtils.createAnnotationSet(MessageDriven.class);
    }
+
+   public String replaceVariables(String prop, String expression) {
+       Matcher matcher = pattern.matcher(expression);
+
+       while (matcher.find()) {
+           String var = matcher.group(1);
+           String defaultValue = matcher.group(2);
+           String value = System.getProperty(var, defaultValue);
+           if (value == null)
+               throw new RuntimeException("could not find value for variable " + var);
+           expression = expression.replace(matcher.group(0), value);
+           matcher = pattern.matcher(expression);
+       }
+
+       return expression;
+   }
 }



More information about the jboss-cvs-commits mailing list