You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by il...@apache.org on 2013/02/26 16:31:19 UTC
svn commit: r1450217 - in /cocoon/cocoon3/trunk:
cocoon-servlet/src/main/java/org/apache/cocoon/servlet/controller/
cocoon-servlet/src/main/java/org/apache/cocoon/servlet/util/
cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/
cocoon-sitemap/src/...
Author: ilgrosso
Date: Tue Feb 26 15:31:18 2013
New Revision: 1450217
URL: http://svn.apache.org/r1450217
Log:
Fixing StackOverflowError in STRenderer debug statement + minor cleanings
Modified:
cocoon/cocoon3/trunk/cocoon-servlet/src/main/java/org/apache/cocoon/servlet/controller/ControllerContextHelper.java
cocoon/cocoon3/trunk/cocoon-servlet/src/main/java/org/apache/cocoon/servlet/util/HttpContextHelper.java
cocoon/cocoon3/trunk/cocoon-servlet/src/main/java/org/apache/cocoon/servlet/util/ObjectModelProvider.java
cocoon/cocoon3/trunk/cocoon-servlet/src/main/java/org/apache/cocoon/servlet/util/SettingsHelper.java
cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/SitemapParametersStack.java
cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/objectmodel/ObjectModel.java
cocoon/cocoon3/trunk/cocoon-stringtemplate/pom.xml
cocoon/cocoon3/trunk/cocoon-stringtemplate/src/main/java/org/apache/cocoon/stringtemplate/STRenderer.java
cocoon/cocoon3/trunk/cocoon-stringtemplate/src/main/java/org/apache/cocoon/stringtemplate/StringTemplateGenerator.java
cocoon/cocoon3/trunk/cocoon-stringtemplate/src/main/java/org/apache/cocoon/stringtemplate/StringTemplateReader.java
cocoon/cocoon3/trunk/parent/pom.xml
Modified: cocoon/cocoon3/trunk/cocoon-servlet/src/main/java/org/apache/cocoon/servlet/controller/ControllerContextHelper.java
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-servlet/src/main/java/org/apache/cocoon/servlet/controller/ControllerContextHelper.java?rev=1450217&r1=1450216&r2=1450217&view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-servlet/src/main/java/org/apache/cocoon/servlet/controller/ControllerContextHelper.java (original)
+++ cocoon/cocoon3/trunk/cocoon-servlet/src/main/java/org/apache/cocoon/servlet/controller/ControllerContextHelper.java Tue Feb 26 15:31:18 2013
@@ -24,19 +24,17 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
- * This class helps with storing and retrieving the controller context.
- * Internally it uses the current servlet request. Thanks to the servlet-service
- * framework, the current request becomes the parent of all sub-requests that
- * use e.g. the 'servlet:' protocol. This means that it is enough to store
- * objects that should be available in a sub-request into the current request.
+ * This class helps with storing and retrieving the controller context. Internally it uses the current servlet request.
+ * Thanks to the servlet-service framework, the current request becomes the parent of all sub-requests that use e.g. the
+ * 'servlet:' protocol. This means that it is enough to store objects that should be available in a sub-request into the
+ * current request.
*/
public final class ControllerContextHelper {
/**
* Logger.
*/
- private static final Logger LOG =
- LoggerFactory.getLogger(ControllerContextHelper.class);
+ private static final Logger LOG = LoggerFactory.getLogger(ControllerContextHelper.class);
private static final String CONTEXT_OBJECT = ControllerContextHelper.class.getName();
@@ -46,52 +44,47 @@ public final class ControllerContextHelp
/**
* Retrieve the current controller context from the Cocoon parameters.
- *
+ *
* @param parameters The Cocoon parameters map.
- * @return The controller context map as being available in the current
- * servlet request.
+ * @return The controller context map as being available in the current servlet request.
*/
- public static Map<String, Object> getContext(Map<String, ? extends Object> parameters) {
- HttpServletRequest request = HttpContextHelper.getRequest(parameters);
- Object value = request.getAttribute(CONTEXT_OBJECT);
+ public static Map<String, Object> getContext(final Map<String, ? extends Object> parameters) {
+ final HttpServletRequest request = HttpContextHelper.getRequest(parameters);
+ final Object value = request.getAttribute(CONTEXT_OBJECT);
if (value instanceof Map) {
return asControllerContext(value);
}
if (value != null) {
- LOG.warn("The parameters contain an entry with the key " + CONTEXT_OBJECT + " but it is not a map.");
+ LOG.warn("The parameters contain an entry with the key {} but it is not a map.", CONTEXT_OBJECT);
}
- return Collections.emptyMap();
+ return Collections.<String, Object>emptyMap();
}
/**
* Store the controller context (a {@link Map}) in the Cocoon parameters.
- *
- * @param controllerContext The objects that should be available in the
- * child request.
+ *
+ * @param controllerContext The objects that should be available in the child request.
* @param parameters The Cocoon parameters map.
*/
- public static void storeContext(Map<String, Object> controllerContext, Map<String, Object> parameters) {
- HttpServletRequest request = HttpContextHelper.getRequest(parameters);
+ public static void storeContext(final Map<String, Object> controllerContext, final Map<String, Object> parameters) {
+ final HttpServletRequest request = HttpContextHelper.getRequest(parameters);
storeContext(controllerContext, request);
}
/**
- * Store the controller context (a {@link Map} directly into the
- * {@link HttpServletRequest}.
- *
- * @param controllerContext The objects that should be available in the
- * child request.
- * @param request The current request that becomes the parent of the next
- * request.
+ * Store the controller context (a {@link Map} directly into the {@link HttpServletRequest}.
+ *
+ * @param controllerContext The objects that should be available in the child request.
+ * @param request The current request that becomes the parent of the next request.
*/
- public static void storeContext(Map<String, Object> controllerContext, HttpServletRequest request) {
+ public static void storeContext(final Map<String, Object> controllerContext, final HttpServletRequest request) {
request.setAttribute(CONTEXT_OBJECT, controllerContext);
}
@SuppressWarnings("unchecked")
- private static Map<String, Object> asControllerContext(Object controllerContext) {
+ private static Map<String, Object> asControllerContext(final Object controllerContext) {
return (Map<String, Object>) controllerContext;
}
}
Modified: cocoon/cocoon3/trunk/cocoon-servlet/src/main/java/org/apache/cocoon/servlet/util/HttpContextHelper.java
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-servlet/src/main/java/org/apache/cocoon/servlet/util/HttpContextHelper.java?rev=1450217&r1=1450216&r2=1450217&view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-servlet/src/main/java/org/apache/cocoon/servlet/util/HttpContextHelper.java (original)
+++ cocoon/cocoon3/trunk/cocoon-servlet/src/main/java/org/apache/cocoon/servlet/util/HttpContextHelper.java Tue Feb 26 15:31:18 2013
@@ -32,8 +32,8 @@ public class HttpContextHelper {
private static final String HTTP_SERVLET_CONTEXT_KEY = ServletContext.class.getName();
- public static HttpServletRequest getRequest(Map<String, ? extends Object> parameters) {
- Object parameter = parameters.get(HTTP_SERVLET_REQUEST_KEY);
+ public static HttpServletRequest getRequest(final Map<String, ? extends Object> parameters) {
+ final Object parameter = parameters.get(HTTP_SERVLET_REQUEST_KEY);
if (parameter instanceof HttpServletRequest) {
return (HttpServletRequest) parameter;
}
@@ -42,8 +42,8 @@ public class HttpContextHelper {
"A HttpServletRequest is not available. This might indicate an invocation outside a servlet.");
}
- public static HttpServletResponse getResponse(Map<String, ? extends Object> parameters) {
- Object parameter = parameters.get(HTTP_SERVLET_RESPONSE_KEY);
+ public static HttpServletResponse getResponse(final Map<String, ? extends Object> parameters) {
+ final Object parameter = parameters.get(HTTP_SERVLET_RESPONSE_KEY);
if (parameter instanceof HttpServletResponse) {
return (HttpServletResponse) parameter;
}
@@ -52,8 +52,8 @@ public class HttpContextHelper {
"A HttpServletResponse is not available. This might indicate an invocation outside a servlet.");
}
- public static ServletContext getServletContext(Map<String, ? extends Object> parameters) {
- Object parameter = parameters.get(HTTP_SERVLET_CONTEXT_KEY);
+ public static ServletContext getServletContext(final Map<String, ? extends Object> parameters) {
+ final Object parameter = parameters.get(HTTP_SERVLET_CONTEXT_KEY);
if (parameter instanceof ServletContext) {
return (ServletContext) parameter;
}
@@ -62,15 +62,21 @@ public class HttpContextHelper {
"The ServletContext is not available. This might indicate an invocation outside a servlet.");
}
- public static void storeRequest(HttpServletRequest httpServletRequest, Map<String, Object> parameters) {
+ public static void storeRequest(final HttpServletRequest httpServletRequest,
+ final Map<String, Object> parameters) {
+
parameters.put(HTTP_SERVLET_REQUEST_KEY, httpServletRequest);
}
- public static void storeResponse(HttpServletResponse httpServletResponse, Map<String, Object> parameters) {
+ public static void storeResponse(final HttpServletResponse httpServletResponse,
+ final Map<String, Object> parameters) {
+
parameters.put(HTTP_SERVLET_RESPONSE_KEY, httpServletResponse);
}
- public static void storeServletContext(ServletContext servletContext, Map<String, Object> parameters) {
+ public static void storeServletContext(final ServletContext servletContext,
+ final Map<String, Object> parameters) {
+
parameters.put(HTTP_SERVLET_CONTEXT_KEY, servletContext);
}
}
Modified: cocoon/cocoon3/trunk/cocoon-servlet/src/main/java/org/apache/cocoon/servlet/util/ObjectModelProvider.java
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-servlet/src/main/java/org/apache/cocoon/servlet/util/ObjectModelProvider.java?rev=1450217&r1=1450216&r2=1450217&view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-servlet/src/main/java/org/apache/cocoon/servlet/util/ObjectModelProvider.java (original)
+++ cocoon/cocoon3/trunk/cocoon-servlet/src/main/java/org/apache/cocoon/servlet/util/ObjectModelProvider.java Tue Feb 26 15:31:18 2013
@@ -24,6 +24,7 @@ import javax.servlet.http.HttpServletReq
import org.apache.cocoon.servlet.controller.ControllerContextHelper;
import org.apache.cocoon.servletservice.util.ServletServiceRequest;
import org.apache.cocoon.sitemap.objectmodel.ObjectModel;
+import org.springframework.util.StringUtils;
public class ObjectModelProvider {
@@ -31,16 +32,16 @@ public class ObjectModelProvider {
throw new AssertionError();
}
- public static ObjectModel provide(Map<String, Object> parameters) {
- ObjectModel objectModel = new ObjectModel(parameters);
- Map<String, Object> cocoon = objectModel.getCocoonObject();
+ public static ObjectModel provide(final Map<String, Object> parameters) {
+ final ObjectModel objectModel = new ObjectModel(parameters);
+ final Map<String, Object> cocoon = objectModel.getCocoonObject();
- HttpServletRequest request = HttpContextHelper.getRequest(parameters);
+ final HttpServletRequest request = HttpContextHelper.getRequest(parameters);
cocoon.put("request", new ObjectModelRequest(request));
cocoon.put("response", HttpContextHelper.getResponse(parameters));
cocoon.put("context", HttpContextHelper.getServletContext(parameters));
cocoon.put("settings", SettingsHelper.getSettings(parameters));
- Map<String, Object> controllerContext = ControllerContextHelper.getContext(parameters);
+ final Map<String, Object> controllerContext = ControllerContextHelper.getContext(parameters);
if (controllerContext != null) {
cocoon.put("controller", controllerContext);
}
@@ -54,30 +55,21 @@ public class ObjectModelProvider {
*/
public static class ObjectModelRequest extends HttpServletRequestWrapper {
- public ObjectModelRequest(HttpServletRequest request) {
+ public ObjectModelRequest(final HttpServletRequest request) {
super(request);
}
- public String get(String key) {
+ public String get(final String key) {
return this.getParameter(key);
}
public String getEmulatedMethod() {
- String alternativeMethod = this.getParameter("_method");
-
- if (alternativeMethod != null && !alternativeMethod.equals("")) {
- return alternativeMethod.toUpperCase();
- }
-
- return this.getMethod();
+ final String alternativeMethod = this.getParameter("_method");
+ return StringUtils.isEmpty(alternativeMethod) ? this.getMethod() : alternativeMethod.toUpperCase();
}
public boolean isSsf() {
- if(this.getRequest() instanceof ServletServiceRequest) {
- return true;
- }
-
- return false;
+ return (this.getRequest() instanceof ServletServiceRequest);
}
}
}
Modified: cocoon/cocoon3/trunk/cocoon-servlet/src/main/java/org/apache/cocoon/servlet/util/SettingsHelper.java
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-servlet/src/main/java/org/apache/cocoon/servlet/util/SettingsHelper.java?rev=1450217&r1=1450216&r2=1450217&view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-servlet/src/main/java/org/apache/cocoon/servlet/util/SettingsHelper.java (original)
+++ cocoon/cocoon3/trunk/cocoon-servlet/src/main/java/org/apache/cocoon/servlet/util/SettingsHelper.java Tue Feb 26 15:31:18 2013
@@ -20,21 +20,25 @@ import java.util.Map;
import org.apache.cocoon.configuration.Settings;
-public class SettingsHelper {
+public final class SettingsHelper {
private static final String SETTINGS_KEY = Settings.class.getName();
- public static Settings getSettings(Map<String, ? extends Object> parameters) {
- Object parameter = parameters.get(SETTINGS_KEY);
+ private SettingsHelper() {
+ // private constructor for utility classes
+ }
+
+ public static Settings getSettings(final Map<String, ? extends Object> parameters) {
+ final Object parameter = parameters.get(SETTINGS_KEY);
if (parameter instanceof Settings) {
return (Settings) parameter;
}
- throw new IllegalStateException(
- "A Settings object is not available. This might indicate that Cocoon 3 doesn't run on top of the Cocoon Spring Configurator.");
+ throw new IllegalStateException("A Settings object is not available. "
+ + "This might indicate that Cocoon 3 doesn't run on top of the Cocoon Spring Configurator.");
}
- public static void storeSettings(Settings settings, Map<String, Object> parameters) {
+ public static void storeSettings(final Settings settings, final Map<String, Object> parameters) {
parameters.put(SETTINGS_KEY, settings);
}
}
Modified: cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/SitemapParametersStack.java
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/SitemapParametersStack.java?rev=1450217&r1=1450216&r2=1450217&view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/SitemapParametersStack.java (original)
+++ cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/SitemapParametersStack.java Tue Feb 26 15:31:18 2013
@@ -26,20 +26,21 @@ import java.util.regex.Pattern;
public class SitemapParametersStack {
private static final Pattern ABSOLUTE_PARAMETER_PATTERN = Pattern.compile("([a-zA-z0-9]+)/(.+)");
+
private static final String RELATIVE_LOCATION_PREFIX = "../";
- private static final Pattern RELATIVE_PARAMETER_PATTERN = Pattern.compile("(("
- + Pattern.quote(RELATIVE_LOCATION_PREFIX) + ")*)(.+)");
- private Stack<Entry> entries = new Stack<Entry>();
+ private static final Pattern RELATIVE_PARAMETER_PATTERN =
+ Pattern.compile("((" + Pattern.quote(RELATIVE_LOCATION_PREFIX) + ")*)(.+)");
- public Object getParameter(String parameterName) {
+ private Stack<Entry> entries = new Stack<Entry>();
- Matcher absoluteParameterMatcher = ABSOLUTE_PARAMETER_PATTERN.matcher(parameterName);
+ public Object getParameter(final String parameterName) {
+ final Matcher absoluteParameterMatcher = ABSOLUTE_PARAMETER_PATTERN.matcher(parameterName);
if (absoluteParameterMatcher.matches()) {
return this.resolveAbsoluteParameter(parameterName, absoluteParameterMatcher);
}
- Matcher relativeParameterMatcher = RELATIVE_PARAMETER_PATTERN.matcher(parameterName);
+ final Matcher relativeParameterMatcher = RELATIVE_PARAMETER_PATTERN.matcher(parameterName);
if (relativeParameterMatcher.matches()) {
return this.resolveRelativeParameter(relativeParameterMatcher);
}
@@ -52,11 +53,11 @@ public class SitemapParametersStack {
this.entries.pop();
}
- public void pushParameters(String name, Map<String, ? extends Object> parameters) {
+ public void pushParameters(final String name, final Map<String, ? extends Object> parameters) {
this.entries.push(new Entry(name, parameters));
}
- private Object resolveAbsoluteParameter(String parameterName, Matcher absoluteParameterMatcher) {
+ private Object resolveAbsoluteParameter(final String parameterName, final Matcher absoluteParameterMatcher) {
final String entryName = absoluteParameterMatcher.group(1);
final String name = absoluteParameterMatcher.group(2);
@@ -70,7 +71,7 @@ public class SitemapParametersStack {
+ "' could not be resolved. There was no entry for the name '" + entryName + "'");
}
- private Object resolveRelativeParameter(Matcher relativeParameterMatcher) {
+ private Object resolveRelativeParameter(final Matcher relativeParameterMatcher) {
final String levelPrefix = relativeParameterMatcher.group(2);
final int level = levelPrefix == null
? 0 : levelPrefix.length() / RELATIVE_LOCATION_PREFIX.length();
@@ -90,6 +91,7 @@ public class SitemapParametersStack {
private class Entry {
private String name;
+
private Map<String, ? extends Object> parameters;
public Entry(String name, Map<String, ? extends Object> parameters) {
Modified: cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/objectmodel/ObjectModel.java
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/objectmodel/ObjectModel.java?rev=1450217&r1=1450216&r2=1450217&view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/objectmodel/ObjectModel.java (original)
+++ cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/objectmodel/ObjectModel.java Tue Feb 26 15:31:18 2013
@@ -26,27 +26,27 @@ import org.apache.cocoon.sitemap.Sitemap
*/
public class ObjectModel {
- private static final String OM_KEY_COCOON = "cocoon";
+ public static final String OM_KEY_COCOON = "cocoon";
private SitemapParametersStack sitemapParameters = new SitemapParametersStack();
private final Map<String, Object> parameters;
- public ObjectModel(Map<String, Object> parameters) {
+ public ObjectModel(final Map<String, Object> parameters) {
super();
this.parameters = parameters;
this.parameters.put(OM_KEY_COCOON, new HashMap<String, Object>());
}
- public void put(String key, Object object) {
- if ("cocoon".equals(key)) {
+ public void put(final String key, final Object object) {
+ if (OM_KEY_COCOON.equals(key)) {
throw new IllegalArgumentException("The cocoon object can't be set.");
}
this.parameters.put(key, object);
}
- public Object get(String key) {
+ public Object get(final String key) {
return this.parameters.get(key);
}
Modified: cocoon/cocoon3/trunk/cocoon-stringtemplate/pom.xml
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-stringtemplate/pom.xml?rev=1450217&r1=1450216&r2=1450217&view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-stringtemplate/pom.xml (original)
+++ cocoon/cocoon3/trunk/cocoon-stringtemplate/pom.xml Tue Feb 26 15:31:18 2013
@@ -10,96 +10,100 @@
http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
- -->
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
<!-- $Id$ -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <packaging>jar</packaging>
+ <modelVersion>4.0.0</modelVersion>
+ <packaging>jar</packaging>
- <parent>
- <groupId>org.apache.cocoon.parent</groupId>
- <artifactId>cocoon-parent</artifactId>
- <version>3.0.0-beta-1-SNAPSHOT</version>
- <relativePath>../parent/pom.xml</relativePath>
- </parent>
-
- <groupId>org.apache.cocoon.stringtemplate</groupId>
- <artifactId>cocoon-stringtemplate</artifactId>
+ <parent>
+ <groupId>org.apache.cocoon.parent</groupId>
+ <artifactId>cocoon-parent</artifactId>
<version>3.0.0-beta-1-SNAPSHOT</version>
+ <relativePath>../parent/pom.xml</relativePath>
+ </parent>
+
+ <groupId>org.apache.cocoon.stringtemplate</groupId>
+ <artifactId>cocoon-stringtemplate</artifactId>
+ <version>3.0.0-beta-1-SNAPSHOT</version>
- <name>Apache Cocoon 3: String Templates</name>
- <description>String-Template support for Cocoon 3.</description>
+ <name>Apache Cocoon 3: String Templates</name>
+ <description>String-Template support for Cocoon 3.</description>
- <dependencies>
- <!-- Cocoon dependencies -->
- <dependency>
- <groupId>org.apache.cocoon.sax</groupId>
- <artifactId>cocoon-sax</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.cocoon.pipeline</groupId>
- <artifactId>cocoon-pipeline</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.cocoon.servlet</groupId>
- <artifactId>cocoon-servlet</artifactId>
- <optional>true</optional>
- </dependency>
-
- <!-- Other dependencies -->
- <dependency>
- <groupId>org.antlr</groupId>
- <artifactId>ST4</artifactId>
- </dependency>
- <dependency>
- <groupId>commons-io</groupId>
- <artifactId>commons-io</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-lang3</artifactId>
- </dependency>
+ <dependencies>
+ <!-- Cocoon dependencies -->
+ <dependency>
+ <groupId>org.apache.cocoon.sax</groupId>
+ <artifactId>cocoon-sax</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.cocoon.pipeline</groupId>
+ <artifactId>cocoon-pipeline</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.cocoon.servlet</groupId>
+ <artifactId>cocoon-servlet</artifactId>
+ <optional>true</optional>
+ </dependency>
+
+ <!-- Other dependencies -->
+ <dependency>
+ <groupId>org.antlr</groupId>
+ <artifactId>ST4</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-lang3</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>commons-collections</groupId>
+ <artifactId>commons-collections</artifactId>
+ </dependency>
- <!-- Logging -->
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- </dependency>
- <dependency>
- <groupId>ch.qos.logback</groupId>
- <artifactId>logback-core</artifactId>
- </dependency>
- <dependency>
- <groupId>ch.qos.logback</groupId>
- <artifactId>logback-classic</artifactId>
- </dependency>
- <dependency>
- <groupId>commons-logging</groupId>
- <artifactId>commons-logging</artifactId>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>jcl-over-slf4j</artifactId>
- </dependency>
+ <!-- Logging -->
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>ch.qos.logback</groupId>
+ <artifactId>logback-core</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>ch.qos.logback</groupId>
+ <artifactId>logback-classic</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>jcl-over-slf4j</artifactId>
+ </dependency>
- <!-- Test dependencies -->
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>xmlunit</groupId>
- <artifactId>xmlunit</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
+ <!-- Test dependencies -->
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>xmlunit</groupId>
+ <artifactId>xmlunit</artifactId>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
</project>
Modified: cocoon/cocoon3/trunk/cocoon-stringtemplate/src/main/java/org/apache/cocoon/stringtemplate/STRenderer.java
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-stringtemplate/src/main/java/org/apache/cocoon/stringtemplate/STRenderer.java?rev=1450217&r1=1450216&r2=1450217&view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-stringtemplate/src/main/java/org/apache/cocoon/stringtemplate/STRenderer.java (original)
+++ cocoon/cocoon3/trunk/cocoon-stringtemplate/src/main/java/org/apache/cocoon/stringtemplate/STRenderer.java Tue Feb 26 15:31:18 2013
@@ -17,7 +17,10 @@
package org.apache.cocoon.stringtemplate;
import java.io.IOException;
+import java.io.PrintStream;
import java.util.Map;
+import org.apache.commons.collections.MapUtils;
+import org.apache.commons.io.output.ByteArrayOutputStream;
import org.apache.commons.lang3.StringEscapeUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -58,8 +61,18 @@ public final class STRenderer {
? StringEscapeUtils.escapeXml(entry.getValue().toString())
: entry.getValue());
- LOG.debug("Passing pipeline parameter as attribute: key={}, value={}",
- entry.getKey(), entry.getValue());
+ if (LOG.isDebugEnabled()) {
+ final String value;
+ if (entry.getValue() instanceof Map) {
+ final ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ MapUtils.verbosePrint(new PrintStream(baos), null, parameters);
+ baos.flush();
+ value = baos.toString();
+ } else {
+ value = entry.getValue().toString();
+ }
+ LOG.debug("Passing parameter as ST attribute: key={}, value={}", entry.getKey(), value);
+ }
}
}
Modified: cocoon/cocoon3/trunk/cocoon-stringtemplate/src/main/java/org/apache/cocoon/stringtemplate/StringTemplateGenerator.java
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-stringtemplate/src/main/java/org/apache/cocoon/stringtemplate/StringTemplateGenerator.java?rev=1450217&r1=1450216&r2=1450217&view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-stringtemplate/src/main/java/org/apache/cocoon/stringtemplate/StringTemplateGenerator.java (original)
+++ cocoon/cocoon3/trunk/cocoon-stringtemplate/src/main/java/org/apache/cocoon/stringtemplate/StringTemplateGenerator.java Tue Feb 26 15:31:18 2013
@@ -172,6 +172,7 @@ public class StringTemplateGenerator ext
* @see org.apache.cocoon.pipeline.component.AbstractSAXProducer#setConfiguration(java.util.Map)
*/
@Override
+ @SuppressWarnings("unchecked")
public void setConfiguration(final Map<String, ? extends Object> parameters) {
this.url = (URL) parameters.get("source");
this.setup((Map<String, Object>) parameters);
Modified: cocoon/cocoon3/trunk/cocoon-stringtemplate/src/main/java/org/apache/cocoon/stringtemplate/StringTemplateReader.java
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-stringtemplate/src/main/java/org/apache/cocoon/stringtemplate/StringTemplateReader.java?rev=1450217&r1=1450216&r2=1450217&view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-stringtemplate/src/main/java/org/apache/cocoon/stringtemplate/StringTemplateReader.java (original)
+++ cocoon/cocoon3/trunk/cocoon-stringtemplate/src/main/java/org/apache/cocoon/stringtemplate/StringTemplateReader.java Tue Feb 26 15:31:18 2013
@@ -33,10 +33,7 @@ import org.apache.cocoon.pipeline.compon
import org.apache.cocoon.pipeline.component.Finisher;
import org.apache.cocoon.pipeline.component.Starter;
import org.apache.cocoon.pipeline.util.URLConnectionUtils;
-import org.apache.cocoon.servlet.controller.ControllerContextHelper;
import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang3.StringEscapeUtils;
-import org.stringtemplate.v4.ST;
public class StringTemplateReader extends AbstractPipelineComponent
implements CachingPipelineComponent, Starter, Finisher {
@@ -88,26 +85,17 @@ public class StringTemplateReader extend
throw new IllegalArgumentException(this.getClass().getSimpleName() + " has no source.");
}
+ InputStream inputStream = null;
try {
- final InputStream inputStream = this.source.openStream();
+ inputStream = this.source.openStream();
- try {
- final ST stringTemplate = new ST(IOUtils.toString(inputStream, "UTF-8"), '$', '$');
-
- final Map<String, Object> controllerContext = ControllerContextHelper.getContext(this.parameters);
- for (Map.Entry<String, Object> eachEntry : controllerContext.entrySet()) {
- stringTemplate.add(eachEntry.getKey(),
- StringEscapeUtils.escapeXml(eachEntry.getValue().toString()));
- }
-
- final OutputStreamWriter writer = new OutputStreamWriter(this.outputStream);
- writer.write(stringTemplate.render());
- writer.flush();
- } finally {
- IOUtils.closeQuietly(inputStream);
- }
+ final OutputStreamWriter writer = new OutputStreamWriter(this.outputStream);
+ writer.write(STRenderer.getInstance().render(IOUtils.toString(inputStream, "UTF-8"), parameters));
+ writer.flush();
} catch (IOException e) {
throw new ProcessingException("Failed to produce result.", e);
+ } finally {
+ IOUtils.closeQuietly(inputStream);
}
}
Modified: cocoon/cocoon3/trunk/parent/pom.xml
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/parent/pom.xml?rev=1450217&r1=1450216&r2=1450217&view=diff
==============================================================================
--- cocoon/cocoon3/trunk/parent/pom.xml (original)
+++ cocoon/cocoon3/trunk/parent/pom.xml Tue Feb 26 15:31:18 2013
@@ -355,6 +355,11 @@
<version>3.1</version>
</dependency>
<dependency>
+ <groupId>commons-collections</groupId>
+ <artifactId>commons-collections</artifactId>
+ <version>3.2.1</version>
+ </dependency>
+ <dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>