diff --git a/src/main/java/io/whitesource/cure/Encoder.java b/src/main/java/io/whitesource/cure/Encoder.java index 06efd5d..820b1cf 100644 --- a/src/main/java/io/whitesource/cure/Encoder.java +++ b/src/main/java/io/whitesource/cure/Encoder.java @@ -58,7 +58,7 @@ public static String[] forLogContent(Object[] contents) { List results = new ArrayList<>(); for (Object content : contents) { - results.add(forLogContent(formatToString(content))); + results.add(forLogContent(content)); } return results.toArray(new String[results.size()]); } @@ -69,23 +69,7 @@ public static String[] forLogContent(Object[] contents) { * @param content {@link Object} contains the content. * @return encoded log content. */ - public static String forLogContent(String content) { - if (content == null) { - return null; - } - return content - .replaceAll("[\n|\r|\t]", "_") - .replaceAll("<", "<") - .replaceAll(">", ">"); - } - - /** - * Encoding content for logs. - * - * @param content {@link Object} contains the content. - * @return encoded log content. - */ - public static String forLogContent(char[] content) { + public static String forLogContent(Object content) { if (content == null) { return null; } @@ -101,52 +85,22 @@ public static String forLogContent(char[] content) { * @param contents arrays {@link Object} contains all the contents. * @return encoded log content. */ - public static Set forLogContent(Set contents) { + public static > T forLogContent(Collection contents) { if (contents == null) { return null; } - Set results = new HashSet<>(); + Collection results = new HashSet<>(); for (Object content : contents) { - results.add(forLogContent(formatToString(content))); + results.add(forLogContent(content)); } - - return results; - } - - /** - * Encoding content for logs. - * - * @param contents arrays {@link Object} contains all the contents. - * @return encoded log content. - */ - public static List forLogContent(List contents) { - if (contents == null) { - return null; - } - List results = new ArrayList<>(); - - for (Object content : contents) { - results.add(forLogContent(formatToString(content))); + if (contents instanceof Set) { + return (T) new HashSet<>(results); + } else if (contents instanceof List) { + return (T) new ArrayList<>(results); } - return results; - } - - /** - * Encoding content to prevent crlf injection by deleting new line commands. - * - * @param content contains the content to be sanitized. - * @return encoded Html content. - */ - public static String forCrlf(String content) { - if (content == null) { - return null; - } - return StringUtils.replaceEach( - content, - new String[] {"\n", "\\n", "\r", "\\r", "%0d", "%0D", "%0a", "%0A", "\025"}, - new String[] {"", "", "", "", "", "", "", "", ""}); + return (T) results; } /** @@ -155,7 +109,7 @@ public static String forCrlf(String content) { * @param content contains the content to be sanitized. * @return encoded Html content. */ - public static String forCrlf(char[] content) { + public static String forCrlf(Object content) { if (content == null) { return null; } @@ -178,7 +132,7 @@ public static String[] forCrlf(Object[] contents) { List results = new ArrayList<>(); for (Object content : contents) { - results.add(forCrlf(formatToString(content))); + results.add(forCrlf(content)); } return results.toArray(new String[results.size()]); } @@ -189,34 +143,22 @@ public static String[] forCrlf(Object[] contents) { * @param contents contains the content to be sanitized. * @return encoded Html content. */ - public static Set forCrlf(Set contents) { + public static > T forCrlf(Collection contents) { if (contents == null) { return null; } - Set results = new HashSet<>(); + Collection results = new HashSet<>(); for (Object content : contents) { - results.add(forCrlf(formatToString(content))); + results.add(forCrlf(content)); } - return results; - } - - /** - * Encoding content to prevent crlf injection by deleting new line commands. - * - * @param contents contains the content to be sanitized. - * @return encoded Html content. - */ - public static List forCrlf(List contents) { - if (contents == null) { - return null; + if (contents instanceof Set) { + return (T) new HashSet<>(results); + } else if (contents instanceof List) { + return (T) new ArrayList<>(results); } - List results = new ArrayList<>(); - for (Object content : contents) { - results.add(forCrlf(formatToString(content))); - } - return results; + return (T) results; } /** @@ -386,7 +328,7 @@ private static String formatToString(Object content) { } else if (content instanceof String) { return (String) content; } else { - throw new RuntimeException("Unsupported content type, only String and char[] are accepted"); + return content.toString(); } } } diff --git a/src/test/java/io/whitesource/cure/EncoderTest.java b/src/test/java/io/whitesource/cure/EncoderTest.java index 74dc422..0db0053 100644 --- a/src/test/java/io/whitesource/cure/EncoderTest.java +++ b/src/test/java/io/whitesource/cure/EncoderTest.java @@ -71,14 +71,14 @@ void forLogContent_threeElementArray_successfullyWithResult() { @Disabled void forLogContent_collection_successfullyWithResult() { - Set results = new HashSet<>(); + List results = new ArrayList<>(); results.add("I\n\r\t"); results.add("am>"); String[] expectedEncodedArray = new String[] {"I___", "am>", "Barbi<"}; - Set actualEncodedArray = (Set) Encoder.forLogContent(results); + List actualEncodedArray = Encoder.forLogContent(results); Assertions.assertEquals(actualEncodedArray.iterator().next(), Arrays.stream(expectedEncodedArray).iterator().next()); } @@ -95,7 +95,7 @@ void forLogContent_fullEncodingCapabilities_successfullyWithResult() { @Test void forLogContent_null_successfully() { - Assertions.assertNull(forLogContent((String) null)); + Assertions.assertNull(forLogContent((Object) null)); } @Test