SLING-3763 - guard against reuse of the renderers
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1614898 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/sling/junit/impl/servlet/HtmlRenderer.java b/src/main/java/org/apache/sling/junit/impl/servlet/HtmlRenderer.java
index 872ab66..8cd5bf8 100644
--- a/src/main/java/org/apache/sling/junit/impl/servlet/HtmlRenderer.java
+++ b/src/main/java/org/apache/sling/junit/impl/servlet/HtmlRenderer.java
@@ -34,7 +34,7 @@
/** HTML renderer for JUnit servlet */
@Component(immediate=false)
-@Service
+@Service(serviceFactory=true)
public class HtmlRenderer extends RunListener implements Renderer {
public static final String EXTENSION = "html";
@@ -102,6 +102,9 @@
/** @inheritDoc */
public void setup(HttpServletResponse response, String pageTitle) throws IOException, UnsupportedEncodingException {
+ if(output != null) {
+ throw new IllegalStateException("Output Writer already set");
+ }
response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");
output = response.getWriter();
@@ -119,6 +122,7 @@
public void cleanup() {
output.println("</body>");
output.println("</html>");
+ output = null;
}
/** @inheritDoc */
diff --git a/src/main/java/org/apache/sling/junit/impl/servlet/JsonRenderer.java b/src/main/java/org/apache/sling/junit/impl/servlet/JsonRenderer.java
index fbd7a1a..a21946f 100644
--- a/src/main/java/org/apache/sling/junit/impl/servlet/JsonRenderer.java
+++ b/src/main/java/org/apache/sling/junit/impl/servlet/JsonRenderer.java
@@ -61,6 +61,9 @@
/** @inheritDoc */
public void setup(HttpServletResponse response, String pageTitle) throws IOException, UnsupportedEncodingException {
+ if(writer != null) {
+ throw new IllegalStateException("Output Writer already set");
+ }
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
writer = new JSONWriter(response.getWriter());
diff --git a/src/main/java/org/apache/sling/junit/impl/servlet/PlainTextRenderer.java b/src/main/java/org/apache/sling/junit/impl/servlet/PlainTextRenderer.java
index 383f852..40aca92 100644
--- a/src/main/java/org/apache/sling/junit/impl/servlet/PlainTextRenderer.java
+++ b/src/main/java/org/apache/sling/junit/impl/servlet/PlainTextRenderer.java
@@ -52,6 +52,9 @@
/** @inheritDoc */
public void setup(HttpServletResponse response, String pageTitle) throws IOException, UnsupportedEncodingException {
+ if(output != null) {
+ throw new IllegalStateException("Output Writer already set");
+ }
response.setContentType("text/plain");
response.setCharacterEncoding("UTF-8");
output = response.getWriter();
@@ -60,6 +63,7 @@
/** @inheritDoc */
public void cleanup() {
+ output = null;
}
/** @inheritDoc */
diff --git a/src/main/java/org/apache/sling/junit/impl/servlet/XmlRenderer.java b/src/main/java/org/apache/sling/junit/impl/servlet/XmlRenderer.java
index 21d1648..c6671ed 100644
--- a/src/main/java/org/apache/sling/junit/impl/servlet/XmlRenderer.java
+++ b/src/main/java/org/apache/sling/junit/impl/servlet/XmlRenderer.java
@@ -122,6 +122,9 @@
/** @inheritDoc */
public void setup(HttpServletResponse response, String pageTitle) throws IOException, UnsupportedEncodingException {
+ if(output != null) {
+ throw new IllegalStateException("Output Writer already set");
+ }
suiteStartTime = System.currentTimeMillis();
response.setContentType("text/xml");
@@ -154,10 +157,12 @@
/** @inheritDoc */
public void cleanup() {
- if (testSuiteCount > 1)
+ if (testSuiteCount > 1) {
output.println(getStringFromElement(suitesElement));
- else
+ } else {
output.println(getStringFromElement(rootElement));
+ }
+ output = null;
}
/** @inheritDoc */