|
@@ -195,7 +195,7 @@ public class DynamicRequestHandler extends AbstractHandler {
|
195
|
195
|
|
196
|
196
|
client.setContinuation(null);
|
197
|
197
|
|
198
|
|
- final String json = JSON.toString(myEvents.toArray());
|
|
198
|
+ final String json = toJSON(myEvents.toArray());
|
199
|
199
|
response.getWriter().write(json);
|
200
|
200
|
}
|
201
|
201
|
}
|
|
@@ -227,7 +227,7 @@ public class DynamicRequestHandler extends AbstractHandler {
|
227
|
227
|
request.getParameter("selstart"),
|
228
|
228
|
request.getParameter("selend")).handleKeyPressed(
|
229
|
229
|
request.getParameter("input"),
|
230
|
|
- Integer.parseInt(request.getParameter("key")), 0,
|
|
230
|
+ Integer.parseInt(request.getParameter("key")), 0,
|
231
|
231
|
Boolean.parseBoolean(request.getParameter("shift")),
|
232
|
232
|
Boolean.parseBoolean(request.getParameter("ctrl")));
|
233
|
233
|
} catch (NumberFormatException ex) {
|
|
@@ -301,7 +301,7 @@ public class DynamicRequestHandler extends AbstractHandler {
|
301
|
301
|
cci.getClient().getNickname()));
|
302
|
302
|
}
|
303
|
303
|
|
304
|
|
- response.getWriter().write(JSON.toString(nickEvents.toArray()));
|
|
304
|
+ response.getWriter().write(toJSON(nickEvents.toArray()));
|
305
|
305
|
}
|
306
|
306
|
|
307
|
307
|
private void doProfiles(final HttpServletResponse response) throws
|
|
@@ -317,7 +317,7 @@ public class DynamicRequestHandler extends AbstractHandler {
|
317
|
317
|
profileEvents.add(new Event("addprofile", identity.getName()));
|
318
|
318
|
}
|
319
|
319
|
|
320
|
|
- response.getWriter().write(JSON.toString(profileEvents.toArray()));
|
|
320
|
+ response.getWriter().write(toJSON(profileEvents.toArray()));
|
321
|
321
|
}
|
322
|
322
|
|
323
|
323
|
private void doWindowRefresh(final HttpServletRequest request,
|
|
@@ -336,14 +336,14 @@ public class DynamicRequestHandler extends AbstractHandler {
|
336
|
336
|
windowEvents.add(new Event("lineadded", new Message(line, window)));
|
337
|
337
|
}
|
338
|
338
|
|
339
|
|
- response.getWriter().write(JSON.toString(windowEvents.toArray()));
|
|
339
|
+ response.getWriter().write(toJSON(windowEvents.toArray()));
|
340
|
340
|
}
|
341
|
341
|
|
342
|
342
|
private void doClients(final HttpServletResponse response)
|
343
|
343
|
throws IOException {
|
344
|
344
|
response.setStatus(HttpServletResponse.SC_OK);
|
345
|
345
|
response.setContentType("application/json");
|
346
|
|
- response.getWriter().write(JSON.toString(clients.values().toArray()));
|
|
346
|
+ response.getWriter().write(toJSON(clients.values().toArray()));
|
347
|
347
|
}
|
348
|
348
|
|
349
|
349
|
private void doJoinChannel(final HttpServletRequest request)
|
|
@@ -386,4 +386,16 @@ public class DynamicRequestHandler extends AbstractHandler {
|
386
|
386
|
}
|
387
|
387
|
}
|
388
|
388
|
|
|
389
|
+ /**
|
|
390
|
+ * Utility method to convert an object into a JSON string. Performs the
|
|
391
|
+ * conversion using {@link JSON#toString(java.lang.Object)}, and then
|
|
392
|
+ * post-processes the output to encode certain control characters.
|
|
393
|
+ *
|
|
394
|
+ * @param object The object to be JSON-ified.
|
|
395
|
+ * @return A JSON representation of the specified object.
|
|
396
|
+ */
|
|
397
|
+ private static String toJSON(final Object object) {
|
|
398
|
+ return JSON.toString(object).replace("\001", "\\u0001");
|
|
399
|
+ }
|
|
400
|
+
|
389
|
401
|
}
|