Skip to content

Commit

Permalink
Final methods recieve Objects, Object arrays and Generic Collection
Browse files Browse the repository at this point in the history
formatToString no longer throws exception
  • Loading branch information
BenShmuely committed Aug 30, 2021
1 parent a29a121 commit ea74898
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 82 deletions.
100 changes: 21 additions & 79 deletions src/main/java/io/whitesource/cure/Encoder.java
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ public static String[] forLogContent(Object[] contents) {
List<String> results = new ArrayList<>();

for (Object content : contents) {
results.add(forLogContent(formatToString(content)));
results.add(forLogContent(content));
}
return results.toArray(new String[results.size()]);
}
Expand All @@ -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("<", "&lt")
.replaceAll(">", "&gt");
}

/**
* 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;
}
Expand All @@ -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<String> forLogContent(Set<?> contents) {
public static <T extends Collection<String>> T forLogContent(Collection<?> contents) {
if (contents == null) {
return null;
}
Set<String> results = new HashSet<>();
Collection<String> 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<String> forLogContent(List<?> contents) {
if (contents == null) {
return null;
}
List<String> 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;
}

/**
Expand All @@ -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;
}
Expand All @@ -178,7 +132,7 @@ public static String[] forCrlf(Object[] contents) {
List<String> results = new ArrayList<>();

for (Object content : contents) {
results.add(forCrlf(formatToString(content)));
results.add(forCrlf(content));
}
return results.toArray(new String[results.size()]);
}
Expand All @@ -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<String> forCrlf(Set<?> contents) {
public static <T extends Collection<String>> T forCrlf(Collection<?> contents) {
if (contents == null) {
return null;
}
Set<String> results = new HashSet<>();
Collection<String> 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<String> 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<String> results = new ArrayList<>();

for (Object content : contents) {
results.add(forCrlf(formatToString(content)));
}
return results;
return (T) results;
}

/**
Expand Down Expand Up @@ -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();
}
}
}
6 changes: 3 additions & 3 deletions src/test/java/io/whitesource/cure/EncoderTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -71,14 +71,14 @@ void forLogContent_threeElementArray_successfullyWithResult() {
@Disabled
void forLogContent_collection_successfullyWithResult() {

Set<String> results = new HashSet<>();
List<String> results = new ArrayList<>();

results.add("I\n\r\t");
results.add("am>");

String[] expectedEncodedArray = new String[] {"I___", "am&gt", "Barbi&lt"};

Set<String> actualEncodedArray = (Set<String>) Encoder.forLogContent(results);
List<String> actualEncodedArray = Encoder.forLogContent(results);
Assertions.assertEquals(actualEncodedArray.iterator().next(), Arrays.stream(expectedEncodedArray).iterator().next());
}

Expand All @@ -95,7 +95,7 @@ void forLogContent_fullEncodingCapabilities_successfullyWithResult() {
@Test
void forLogContent_null_successfully() {

Assertions.assertNull(forLogContent((String) null));
Assertions.assertNull(forLogContent((Object) null));
}

@Test
Expand Down

0 comments on commit ea74898

Please sign in to comment.