Browse Source

Polish (minor)

pull/292/head
Rossen Stoyanchev 13 years ago
parent
commit
d89b18613f
  1. 15
      spring-websocket/src/main/java/org/springframework/web/socket/sockjs/SockJsFrame.java

15
spring-websocket/src/main/java/org/springframework/web/socket/sockjs/SockJsFrame.java

@ -78,24 +78,29 @@ public class SockJsFrame {
return this.content.getBytes(Charset.forName("UTF-8")); return this.content.getBytes(Charset.forName("UTF-8"));
} }
public static String escapeCharacters(char[] chars) { /**
* See "JSON Unicode Encoding" section of SockJS protocol.
*/
public static String escapeCharacters(char[] characters) {
StringBuilder result = new StringBuilder(); StringBuilder result = new StringBuilder();
for (char ch : chars) { for (char c : characters) {
if (isSockJsEscapeCharacter(ch)) { if (isSockJsEscapeCharacter(c)) {
result.append('\\').append('u'); result.append('\\').append('u');
String hex = Integer.toHexString(ch).toLowerCase(); String hex = Integer.toHexString(c).toLowerCase();
for (int i = 0; i < (4 - hex.length()); i++) { for (int i = 0; i < (4 - hex.length()); i++) {
result.append('0'); result.append('0');
} }
result.append(hex); result.append(hex);
} }
else { else {
result.append(ch); result.append(c);
} }
} }
return result.toString(); return result.toString();
} }
// See `escapable_by_server` var in SockJS protocol (under "JSON Unicode Encoding")
private static boolean isSockJsEscapeCharacter(char ch) { private static boolean isSockJsEscapeCharacter(char ch) {
return (ch >= '\u0000' && ch <= '\u001F') || (ch >= '\u200C' && ch <= '\u200F') return (ch >= '\u0000' && ch <= '\u001F') || (ch >= '\u200C' && ch <= '\u200F')
|| (ch >= '\u2028' && ch <= '\u202F') || (ch >= '\u2060' && ch <= '\u206F') || (ch >= '\u2028' && ch <= '\u202F') || (ch >= '\u2060' && ch <= '\u206F')

Loading…
Cancel
Save