]> source.dussan.org Git - vaadin-framework.git/commitdiff
JSON UIDL change: ')/*{JSON' changed to 'for(;;);[{JSON}]'. Fixes #1247
authorMarc Englund <marc.englund@itmill.com>
Fri, 7 Mar 2008 09:40:09 +0000 (09:40 +0000)
committerMarc Englund <marc.englund@itmill.com>
Fri, 7 Mar 2008 09:40:09 +0000 (09:40 +0000)
svn changeset:3993/svn branch:trunk

src/com/itmill/toolkit/terminal/gwt/client/ApplicationConnection.java
src/com/itmill/toolkit/terminal/gwt/server/ApplicationServlet.java
src/com/itmill/toolkit/terminal/gwt/server/CommunicationManager.java

index 5c1fe34534095f7a80497e2f80ef7c0dc844ff90..36904eb5aa836c55c7aeeecfa046605558e07784 100755 (executable)
@@ -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);
index 4e696a2eb863e8316d1886c49a8c750acb23b345..da09ba61daae4fb8f1fb1c3cbfd5354562e94e6b 100644 (file)
@@ -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\" : \"<br />Please click <a href=\\\"\\\""
                 + "onclick=\\\"Javascript: window.location.reload()\\\" >"
                 + "here</a> to restart your application.<br />"
                 + "You can also click your browser's refresh button.\""
-                + "}}, \"resources\": {}, \"locales\":[]");
+                + "}}, \"resources\": {}, \"locales\":[]}]");
         outWriter.flush();
         outWriter.close();
         out.flush();
index bafa214aaf2f670d0154f8a0b9315436e8cb3bb9..9487a4f6b94d80d1e779361444593e36ca4cb34c 100644 (file)
@@ -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();