From 977093ddc1f501a9be9017080f08b1d1735fb2e1 Mon Sep 17 00:00:00 2001 From: Marc Englund Date: Fri, 7 Mar 2008 09:40:09 +0000 Subject: [PATCH] JSON UIDL change: ')/*{JSON' changed to 'for(;;);[{JSON}]'. Fixes #1247 svn changeset:3993/svn branch:trunk --- .../terminal/gwt/client/ApplicationConnection.java | 4 +++- .../terminal/gwt/server/ApplicationServlet.java | 6 +++--- .../terminal/gwt/server/CommunicationManager.java | 13 ++++++++----- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ApplicationConnection.java b/src/com/itmill/toolkit/terminal/gwt/client/ApplicationConnection.java index 5c1fe34534..36904eb5aa 100755 --- a/src/com/itmill/toolkit/terminal/gwt/client/ApplicationConnection.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ApplicationConnection.java @@ -314,7 +314,9 @@ public class ApplicationConnection { hideLoadingIndicator(); final Date start = new Date(); - final String jsonText = response.getText().substring(3) + "}"; + String jsonText = response.getText(); + // for(;;);[realjson] + jsonText = jsonText.substring(9, jsonText.length() - 1); JSONValue json; try { json = JSONParser.parse(jsonText); diff --git a/src/com/itmill/toolkit/terminal/gwt/server/ApplicationServlet.java b/src/com/itmill/toolkit/terminal/gwt/server/ApplicationServlet.java index 4e696a2eb8..da09ba61da 100644 --- a/src/com/itmill/toolkit/terminal/gwt/server/ApplicationServlet.java +++ b/src/com/itmill/toolkit/terminal/gwt/server/ApplicationServlet.java @@ -558,13 +558,13 @@ public class ApplicationServlet extends HttpServlet { final ServletOutputStream out = response.getOutputStream(); final PrintWriter outWriter = new PrintWriter(new BufferedWriter( new OutputStreamWriter(out, "UTF-8"))); - outWriter.print(")/*{\"changes\":[], \"meta\" : {" + "\"appError\": {" - + "\"caption\":\"" + caption + "\"," + outWriter.print("for(;;);[{\"changes\":[], \"meta\" : {" + + "\"appError\": {" + "\"caption\":\"" + caption + "\"," + "\"message\" : \"
Please click " + "here to restart your application.
" + "You can also click your browser's refresh button.\"" - + "}}, \"resources\": {}, \"locales\":[]"); + + "}}, \"resources\": {}, \"locales\":[]}]"); outWriter.flush(); outWriter.close(); out.flush(); diff --git a/src/com/itmill/toolkit/terminal/gwt/server/CommunicationManager.java b/src/com/itmill/toolkit/terminal/gwt/server/CommunicationManager.java index bafa214aaf..9487a4f6b9 100644 --- a/src/com/itmill/toolkit/terminal/gwt/server/CommunicationManager.java +++ b/src/com/itmill/toolkit/terminal/gwt/server/CommunicationManager.java @@ -87,7 +87,7 @@ public class CommunicationManager implements Paintable.RepaintRequestListener { private int pendingLocalesIndex; - public CommunicationManager(Application application) { + public CommunicationManager(Application application) { this.application = application; requireLocale(application.getLocale().toString()); } @@ -186,7 +186,8 @@ public class CommunicationManager implements Paintable.RepaintRequestListener { * @throws IOException */ public void handleUidlRequest(HttpServletRequest request, - HttpServletResponse response, ApplicationServlet applicationServlet) throws IOException { + HttpServletResponse response, ApplicationServlet applicationServlet) + throws IOException { // repaint requested or session has timed out and new one is created boolean repaintAll = (request.getParameter(GET_PARAM_REPAINT_ALL) != null) @@ -247,7 +248,7 @@ public class CommunicationManager implements Paintable.RepaintRequestListener { // Sets the response type response.setContentType("application/json; charset=UTF-8"); // some dirt to prevent cross site scripting - outWriter.print(")/*{"); + outWriter.print("for(;;);[{"); outWriter.print("\"changes\":["); @@ -410,6 +411,8 @@ public class CommunicationManager implements Paintable.RepaintRequestListener { printLocaleDeclarations(outWriter); + outWriter.print("}]"); + outWriter.flush(); outWriter.close(); } @@ -726,9 +729,9 @@ public class CommunicationManager implements Paintable.RepaintRequestListener { final ServletOutputStream out = response.getOutputStream(); final PrintWriter outWriter = new PrintWriter(new BufferedWriter( new OutputStreamWriter(out, "UTF-8"))); - outWriter.print(")/*{"); + outWriter.print("for(;;);[{"); outWriter.print("\"redirect\":{"); - outWriter.write("\"url\":\"" + logoutUrl + "\"}"); + outWriter.write("\"url\":\"" + logoutUrl + "\"}}]"); outWriter.flush(); outWriter.close(); out.flush(); -- 2.39.5