HtmlEscaper.java
package emissary.util.web;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
/**
* Methods for dealing with escaped HTML as bytes and strings
*/
public class HtmlEscaper {
private static final byte[] LT_BYTES = "<".getBytes();
private static final byte[] GT_BYTES = ">".getBytes();
private static final byte[] AMPERSAND_BYTES = "&".getBytes();
/**
* encode greater than, less than, and ampersand characters in a byte arroy.
*
* @param theData input bytes
* @return a copy of the input byte array with specific characters encoded.
*/
public static byte[] escapeHtml(final byte[] theData) {
byte[] escaped = null;
try (ByteArrayOutputStream output = new ByteArrayOutputStream(theData.length)) {
for (int i = 0; i < theData.length; i++) {
if (theData[i] == '<') {
output.write(LT_BYTES);
} else if (theData[i] == '>') {
output.write(GT_BYTES);
} else if (theData[i] == '&') {
output.write(AMPERSAND_BYTES);
} else {
output.write(theData[i]);
}
}
escaped = output.toByteArray();
} catch (IOException ignored) {
/* dont care */
}
return escaped;
}
/**
* Escape html string
*
* @param s the input string
* @return the escaped string
*/
public static String escapeHtml(final String s) {
return new String(escapeHtml(s.getBytes()));
}
/** This class is not meant to be instantiated. */
private HtmlEscaper() {}
}