Author: hlship
Date: Mon Sep 20 17:08:27 2010
New Revision: 999009
URL: http://svn.apache.org/viewvc?rev=999009&view=rev
Log:
TAP5-1277: Tapestry incorrectly calls PrintWriter.flush(), not close(), when
writing JSON objects and arrays as the response
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxPartialResponseRendererImpl.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/JSONArrayEventResultProcessor.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/JSONObjectEventResultProcessor.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/JSONArrayEventResultProcessorTest.java
tapestry/tapestry5/trunk/tapestry-json/src/main/java/org/apache/tapestry5/json/JSONCollection.java
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxPartialResponseRendererImpl.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxPartialResponseRendererImpl.java?rev=999009&r1=999008&r2=999009&view=diff
==============================================================================
---
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxPartialResponseRendererImpl.java
(original)
+++
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxPartialResponseRendererImpl.java
Mon Sep 20 17:08:27 2010
@@ -86,10 +86,7 @@ public class AjaxPartialResponseRenderer
PrintWriter pw = response.getPrintWriter(contentType.toString());
- if (compactJSON)
- reply.print(pw);
- else
- reply.prettyPrint(pw);
+ reply.print(pw, compactJSON);
pw.close();
}
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/JSONArrayEventResultProcessor.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/JSONArrayEventResultProcessor.java?rev=999009&r1=999008&r2=999009&view=diff
==============================================================================
---
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/JSONArrayEventResultProcessor.java
(original)
+++
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/JSONArrayEventResultProcessor.java
Mon Sep 20 17:08:27 2010
@@ -28,15 +28,22 @@ import org.apache.tapestry5.services.Res
public class JSONArrayEventResultProcessor implements
ComponentEventResultProcessor<JSONArray>
{
private final Response response;
+
private final String outputEncoding;
+ private final boolean compactJSON;
+
public JSONArrayEventResultProcessor(Response response,
@Symbol(SymbolConstants.CHARSET)
- String outputEncoding)
+ String outputEncoding,
+
+ @Symbol(SymbolConstants.COMPACT_JSON)
+ boolean compactJSON)
{
this.response = response;
this.outputEncoding = outputEncoding;
+ this.compactJSON = compactJSON;
}
public void processResultValue(JSONArray value) throws IOException
@@ -45,8 +52,8 @@ public class JSONArrayEventResultProcess
PrintWriter pw = response.getPrintWriter(contentType.toString());
- pw.print(value.toString());
+ value.print(pw, compactJSON);
- pw.flush();
+ pw.close();
}
}
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/JSONObjectEventResultProcessor.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/JSONObjectEventResultProcessor.java?rev=999009&r1=999008&r2=999009&view=diff
==============================================================================
---
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/JSONObjectEventResultProcessor.java
(original)
+++
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/JSONObjectEventResultProcessor.java
Mon Sep 20 17:08:27 2010
@@ -36,13 +36,19 @@ public class JSONObjectEventResultProces
private final String outputEncoding;
+ private final boolean compactJSON;
+
public JSONObjectEventResultProcessor(Response response,
@Symbol(SymbolConstants.CHARSET)
- String outputEncoding)
+ String outputEncoding,
+
+ @Symbol(SymbolConstants.COMPACT_JSON)
+ boolean compactJSON)
{
this.response = response;
this.outputEncoding = outputEncoding;
+ this.compactJSON = compactJSON;
}
public void processResultValue(JSONObject value) throws IOException
@@ -51,8 +57,8 @@ public class JSONObjectEventResultProces
PrintWriter pw = response.getPrintWriter(contentType.toString());
- pw.print(value.toString());
+ value.print(pw, compactJSON);
- pw.flush();
+ pw.close();
}
}
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java?rev=999009&r1=999008&r2=999009&view=diff
==============================================================================
---
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
(original)
+++
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
Mon Sep 20 17:08:27 2010
@@ -2457,7 +2457,7 @@ public final class TapestryModule
configuration.add(SymbolConstants.BLACKBIRD_ENABLED, "false");
configuration.add(InternalSymbols.PRE_SELECTED_FORM_NAMES,
"reset,submit,select,id,method,action,onsubmit");
-
+
configuration.add(InternalSymbols.ALIAS_MODE, "servlet");
}
@@ -2721,7 +2721,6 @@ public final class TapestryModule
* <li>image/jpeg</li>
* <li>image/gif</li>
* <li>image/png</li>
- * <li>application/json (see
https://issues.apache.org/jira/browse/TAP5-469)</li>
* <li>application/x-shockwave-flash</li>
* </ul>
*
@@ -2732,7 +2731,6 @@ public final class TapestryModule
configuration.add("image/jpeg");
configuration.add("image/gif");
configuration.add("image/png");
- configuration.add("application/json");
configuration.add("application/x-shockwave-flash");
}
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/JSONArrayEventResultProcessorTest.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/JSONArrayEventResultProcessorTest.java?rev=999009&r1=999008&r2=999009&view=diff
==============================================================================
---
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/JSONArrayEventResultProcessorTest.java
(original)
+++
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/JSONArrayEventResultProcessorTest.java
Mon Sep 20 17:08:27 2010
@@ -40,7 +40,7 @@ public class JSONArrayEventResultProcess
JSONArray array = new JSONArray(" [ \"fred\", \"barney\" \n\n]");
- JSONArrayEventResultProcessor p = new
JSONArrayEventResultProcessor(response, encoding);
+ JSONArrayEventResultProcessor p = new
JSONArrayEventResultProcessor(response, encoding, false);
p.processResultValue(array);
Modified:
tapestry/tapestry5/trunk/tapestry-json/src/main/java/org/apache/tapestry5/json/JSONCollection.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-json/src/main/java/org/apache/tapestry5/json/JSONCollection.java?rev=999009&r1=999008&r2=999009&view=diff
==============================================================================
---
tapestry/tapestry5/trunk/tapestry-json/src/main/java/org/apache/tapestry5/json/JSONCollection.java
(original)
+++
tapestry/tapestry5/trunk/tapestry-json/src/main/java/org/apache/tapestry5/json/JSONCollection.java
Mon Sep 20 17:08:27 2010
@@ -80,11 +80,27 @@ public abstract class JSONCollection
}
/**
+ * Prints the JSONObject to the write (compactly or not).
+ *
+ * @param writer
+ * to write content to
+ * @param compact
+ * if true, then write compactly, if false, write with pretty
printing
+ * @since 5.2.1
+ */
+ public void print(PrintWriter writer, boolean compact)
+ {
+ JSONPrintSession session = compact ? new CompactSession(writer) : new
PrettyPrintSession(writer);
+
+ print(session);
+ }
+
+ /**
* Prints the JSONObject to the writer compactly (with no extra
whitespace).
*/
public void print(PrintWriter writer)
{
- print(new CompactSession(writer));
+ print(writer, true);
}
/**
@@ -92,7 +108,7 @@ public abstract class JSONCollection
*/
public void prettyPrint(PrintWriter writer)
{
- print(new PrettyPrintSession(writer));
+ print(writer, false);
}
/**