error message formatter now handles percent 03/95403/1
authorBenjamin, Max <max.benjamin@att.com>
Tue, 10 Sep 2019 17:52:53 +0000 (13:52 -0400)
committerBenjamin, Max (mb388a) <mb388a@att.com>
Tue, 10 Sep 2019 17:52:53 +0000 (13:52 -0400)
error message formatter now handles percent encoding

Issue-ID: SO-2303
Signed-off-by: Benjamin, Max (mb388a) <mb388a@att.com>
Change-Id: If4784ab54023b1df43eb7ee266a2797c9a12731b

common/src/main/java/org/onap/so/client/aai/AAIErrorFormatter.java
common/src/test/java/org/onap/so/client/aai/AAIErrorFormatterTest.java

index 2fe3910..e255b29 100644 (file)
@@ -50,6 +50,8 @@ public class AAIErrorFormatter {
     }
 
     protected String format(String s, List<String> variables) {
-        return String.format(s.replaceAll("%(\\d+)", "%$1\\$s"), variables.toArray());
+        s = s.replaceAll("%(\\d(?!\\d))", "%$1\\$s");
+        s = s.replaceAll("%(\\d{2})", "%%$1");
+        return String.format(s, variables.toArray());
     }
 }
index 2ef50dd..3587c71 100644 (file)
@@ -78,6 +78,22 @@ public class AAIErrorFormatterTest {
         assertEquals("equal", "test error message - service exception error test", result);
     }
 
+    @Test
+    public void errorMessageOnPercentEncodedTest() {
+        ServiceException svcException = new ServiceException();
+        svcException.setText("test my%20Test %1 message - %2");
+        svcException.setVariables(Arrays.asList("error", "service exception %1 test"));
+
+        RequestError requestError = new RequestError();
+        requestError.setServiceException(svcException);
+
+        doReturn(requestError).when(errorObj).getRequestError();
+
+        AAIErrorFormatter formatter = new AAIErrorFormatter(errorObj);
+        String result = formatter.getMessage();
+        assertEquals("equal", "test my%20Test error message - service exception error test", result);
+    }
+
     @Test
     public void testGetMessageNoParsable() {
         errorObj.setRequestError(null);