Platform hardening for common bundle
[appc.git] / appc-common / src / main / java / org / onap / appc / util / MessageFormatter.java
index 44095fb..71ef406 100644 (file)
@@ -25,7 +25,6 @@
 package org.onap.appc.util;
 
 import org.apache.commons.lang3.StringUtils;
-
 import java.util.*;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -33,10 +32,15 @@ import java.util.regex.Pattern;
 
 public class MessageFormatter {
     private final static String paramNameRegexGroupName = "paramName";
-    private final static String paramRegex = "\\$\\{(?<paramName>[^}$]+)\\}"; //start with ${ and after there is one or more characters that are not $ and not } and ended with }
+    private final static String paramRegex = "\\$\\{(?<paramName>[^}$]+)\\}"; // start with ${ and
+                                                                              // after there is one
+                                                                              // or more characters
+                                                                              // that are not $ and
+                                                                              // not } and ended
+                                                                              // with }
 
 
-    public static  String format(String messageTemplate, Map<String,Object> params) {
+    public static String format(String messageTemplate, Map<String, Object> params) {
         if (StringUtils.isEmpty(messageTemplate))
             return "";
         if (params == null || params.isEmpty())
@@ -45,16 +49,26 @@ public class MessageFormatter {
         String formattedMessage = messageTemplate;
         if (formattedMessage.contains("$")) {
             for (Map.Entry<String, Object> entry : params.entrySet()) {
-                formattedMessage = formattedMessage.replaceAll("\\$\\{" + entry.getKey() + "\\}", String.valueOf(entry.getValue()));
+                formattedMessage = formattedMessage.replaceAll("\\$\\{" + entry.getKey() + "\\}",
+                        escapeDollarChar(String.valueOf(entry.getValue())));
             }
         }
 
         return formattedMessage;
     }
 
+    private static String escapeDollarChar(String msg) {
+        String formatedMsg = msg;
+        if (formatedMsg.contains("$")) {
+            formatedMsg = formatedMsg.replaceAll("\\$", "\\\\\\$");
+
+        }
+        return formatedMsg;
+    }
+
     public static List<String> getParamsNamesList(String messageTemplate) {
         List<String> paramsNames = null;
-        if(!StringUtils.isEmpty(messageTemplate)){
+        if (!StringUtils.isEmpty(messageTemplate)) {
             paramsNames = new ArrayList<String>();
             Matcher m = Pattern.compile(paramRegex).matcher(messageTemplate);
             while (m.find()) {
@@ -64,12 +78,13 @@ public class MessageFormatter {
         }
         return paramsNames;
     }
+
     public static Set<String> getParamsNamesSet(String messageTemplate) {
         List<String> paramsNamesList = getParamsNamesList(messageTemplate);
         Set<String> paramsNamesSet = null;
-        if(paramsNamesList != null && !paramsNamesList.isEmpty()){
+        if (paramsNamesList != null && !paramsNamesList.isEmpty()) {
             paramsNamesSet = new HashSet<String>();
-            for(String paramName : paramsNamesList){
+            for (String paramName : paramsNamesList) {
                 paramsNamesSet.add(paramName);
             }
         }