Fix request handler class error
[appc.git] / appc-common / src / main / java / org / onap / appc / util / MessageFormatter.java
index 44095fb..a46047e 100644 (file)
@@ -2,7 +2,7 @@
  * ============LICENSE_START=======================================================
  * ONAP : APPC
  * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Copyright (C) 2017 Amdocs
  * =============================================================================
  * See the License for the specific language governing permissions and
  * limitations under the License.
  * 
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
  * ============LICENSE_END=========================================================
  */
 
 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 +31,13 @@ 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 }
 
+    /**
+     * start with ${ and after there is one or more characters that are not $ and not } and ended with }
+     */
+    private final static String paramRegex = "\\$\\{(?<paramName>[^}$]+)\\}";
 
-    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,17 +46,27 @@ 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)){
-            paramsNames = new ArrayList<String>();
+        if (!StringUtils.isEmpty(messageTemplate)) {
+            paramsNames = new ArrayList<>();
             Matcher m = Pattern.compile(paramRegex).matcher(messageTemplate);
             while (m.find()) {
                 String paramName = m.group(paramNameRegexGroupName);
@@ -64,12 +75,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);
             }
         }