blob: 282bb4286fd0698811b3793299323eca648a655b [file] [log] [blame]
package com.fasterxml.jackson.core;
import com.fasterxml.jackson.core.io.CharacterEscapes;
import com.fasterxml.jackson.core.io.SerializedString;
/**
* Convenience {@link CharacterEscapes} implementation that escapes
* Unicode characters `0x2028` and `0x2029` (in addition to characters
* escaped otherwise), which are apparently considered linefeeds as
* per newer Javascript specifications, and consequently problematic
* when using JSONP (see https://en.wikipedia.org/wiki/JSONP).
*
* @since 2.8
*/
public class JsonpCharacterEscapes extends CharacterEscapes
{
private static final long serialVersionUID = 1L;
private static final int[] asciiEscapes = CharacterEscapes.standardAsciiEscapesForJSON();
private static final SerializedString escapeFor2028 = new SerializedString("\\u2028");
private static final SerializedString escapeFor2029 = new SerializedString("\\u2029");
private static final JsonpCharacterEscapes sInstance = new JsonpCharacterEscapes();
public static JsonpCharacterEscapes instance() {
return sInstance;
}
@Override
public SerializableString getEscapeSequence(int ch)
{
switch (ch) {
case 0x2028:
return escapeFor2028;
case 0x2029:
return escapeFor2029;
default:
return null;
}
}
@Override
public int[] getEscapeCodesForAscii() {
return asciiEscapes;
}
}