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 2011/11/05 12:18:56 UTC
svn commit: r1197931 - in /cocoon/cocoon3/trunk:
cocoon-controller/src/main/java/org/apache/cocoon/controller/node/
cocoon-sample/src/main/resources/COB-INF/
cocoon-sample/src/main/resources/COB-INF/string-template/
cocoon-servlet/src/main/java/org/apa...
Author: ilgrosso
Date: Sat Nov 5 11:18:55 2011
New Revision: 1197931
URL: http://svn.apache.org/viewvc?rev=1197931&view=rev
Log:
Fixes issue COCOON3-79
Modified:
cocoon/cocoon3/trunk/cocoon-controller/src/main/java/org/apache/cocoon/controller/node/CallNode.java
cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/sitemap.xmap
cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/string-template/template.xml
cocoon/cocoon3/trunk/cocoon-servlet/src/main/java/org/apache/cocoon/servlet/collector/ResponseHeaderCollector.java
cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/Invocation.java
cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/InvocationImpl.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/expression/JexlLanguageInterpreter.java
cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/expression/LanguageInterpreter.java
cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/expression/SettingsInterpreter.java
cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/expression/SitemapLanguageInterpreter.java
cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/node/AbstractSitemapNode.java
cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/node/GenerateNode.java
cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/node/MatchNode.java
cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/node/ReadNode.java
cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/node/TransformNode.java
Modified: cocoon/cocoon3/trunk/cocoon-controller/src/main/java/org/apache/cocoon/controller/node/CallNode.java
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-controller/src/main/java/org/apache/cocoon/controller/node/CallNode.java?rev=1197931&r1=1197930&r2=1197931&view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-controller/src/main/java/org/apache/cocoon/controller/node/CallNode.java (original)
+++ cocoon/cocoon3/trunk/cocoon-controller/src/main/java/org/apache/cocoon/controller/node/CallNode.java Sat Nov 5 11:18:55 2011
@@ -47,8 +47,8 @@ public class CallNode extends AbstractSi
public InvocationResult invoke(Invocation invocation) {
Map<String, Object> parameters = new HashMap<String, Object>();
for (Entry<String, String> entry : this.getParameters().entrySet()) {
- String resolvedValue = invocation.resolveParameter(entry.getValue());
- parameters.put(entry.getKey(), resolvedValue);
+ parameters.put(entry.getKey(),
+ invocation.resolveParameter(entry.getValue()));
}
parameters.put("baseUrl", invocation.resolve(""));
Modified: cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/sitemap.xmap
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/sitemap.xmap?rev=1197931&r1=1197930&r2=1197931&view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/sitemap.xmap (original)
+++ cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/sitemap.xmap Sat Nov 5 11:18:55 2011
@@ -552,6 +552,7 @@
<map:match wildcard="string-template/generator">
<map:generate type="string-template" src="string-template/template.xml">
<map:parameter name="parameter" value="A value"/>
+ <map:parameter name="booleanParameter" value="{jexl:true}"/>
</map:generate>
<map:serialize/>
</map:match>
@@ -559,6 +560,7 @@
<map:generate src="string-template/template.xml"/>
<map:transform type="string-template">
<map:parameter name="parameter" value="Another value"/>
+ <map:parameter name="booleanParameter" value="{jexl:false}"/>
</map:transform>
<map:serialize/>
</map:match>
Modified: cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/string-template/template.xml
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/string-template/template.xml?rev=1197931&r1=1197930&r2=1197931&view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/string-template/template.xml (original)
+++ cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/string-template/template.xml Sat Nov 5 11:18:55 2011
@@ -24,5 +24,10 @@
<body>
<h3>StringTemplate demo</h3>
<p>parameter=$parameter$</p>
+$if(booleanParameter)$
+<p>booleanParameter was TRUE</p>
+$else$
+<p>booleanParameter was FALSE</p>
+$endif$
</body>
</html>
Modified: cocoon/cocoon3/trunk/cocoon-servlet/src/main/java/org/apache/cocoon/servlet/collector/ResponseHeaderCollector.java
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-servlet/src/main/java/org/apache/cocoon/servlet/collector/ResponseHeaderCollector.java?rev=1197931&r1=1197930&r2=1197931&view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-servlet/src/main/java/org/apache/cocoon/servlet/collector/ResponseHeaderCollector.java (original)
+++ cocoon/cocoon3/trunk/cocoon-servlet/src/main/java/org/apache/cocoon/servlet/collector/ResponseHeaderCollector.java Sat Nov 5 11:18:55 2011
@@ -106,12 +106,14 @@ public class ResponseHeaderCollector {
@Around("execution(* org.apache.cocoon.sitemap.node.SerializeNode.invoke(..)) && args(invocation)")
public Object interceptInvoke(ProceedingJoinPoint proceedingJoinPoint, Invocation invocation) throws Throwable {
SerializeNode target = (SerializeNode) proceedingJoinPoint.getTarget();
- String statusCode = invocation.resolveParameter(target.getParameters().get("status-code"));
+ Object statusCode = invocation.resolveParameter(target.getParameters().get("status-code"));
+ if (statusCode != null && !(statusCode instanceof String))
+ throw new IllegalArgumentException("Status code must resolve to String");
InvocationResult invocationResult = (InvocationResult) proceedingJoinPoint.proceed();
if (invocationResult.isContinued() && statusCode != null) {
try {
- setStatusCode(Integer.valueOf(statusCode));
+ setStatusCode(Integer.valueOf((String) statusCode));
} catch (NumberFormatException nfe) {
throw new InvalidStatusCodeException("The status-code '" + statusCode + " is not valid number.", nfe);
}
Modified: cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/Invocation.java
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/Invocation.java?rev=1197931&r1=1197930&r2=1197931&view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/Invocation.java (original)
+++ cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/Invocation.java Sat Nov 5 11:18:55 2011
@@ -60,5 +60,5 @@ public interface Invocation {
void popSitemapParameters();
- String resolveParameter(final String parameter);
+ Object resolveParameter(final String parameter);
}
Modified: cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/InvocationImpl.java
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/InvocationImpl.java?rev=1197931&r1=1197930&r2=1197931&view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/InvocationImpl.java (original)
+++ cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/InvocationImpl.java Sat Nov 5 11:18:55 2011
@@ -47,7 +47,7 @@ public class InvocationImpl implements I
* Logger.
*/
private static final Logger ERROR_LOG =
- LoggerFactory.getLogger(InvocationImpl.class.getName()
+ LoggerFactory.getLogger(InvocationImpl.class.getName()
+ "/handle-errors");
private static final Pattern PARAMETER_PATTERN = Pattern.compile("\\{([a-zA-Z\\-]+):([^\\{]*)\\}");
@@ -69,7 +69,7 @@ public class InvocationImpl implements I
private ObjectModel objectModel;
private boolean hasFinisher;
-
+
@Autowired
private Settings settings;
@@ -340,7 +340,7 @@ public class InvocationImpl implements I
}
}
}
-
+
this.objectModel.getCocoonObject().put("exception", cause);
ParameterHelper.setThrowable(this.parameters, cause);
@@ -357,51 +357,58 @@ public class InvocationImpl implements I
*
* @see org.apache.cocoon.sitemap.Invocation#resolveParameter(java.lang.String)
*/
- public String resolveParameter(final String parameter) {
+ public Object resolveParameter(final String parameter) {
if (parameter == null) {
return null;
}
- final StringBuilder result = new StringBuilder(parameter);
- final Matcher matcher = PARAMETER_PATTERN.matcher(result);
+ Object resolved = parameter;
+ final StringBuilder sbResult = new StringBuilder(parameter);
+
+ final Matcher matcher = PARAMETER_PATTERN.matcher(sbResult);
+ final boolean wholeMatch = matcher.matches();
+ matcher.reset();
while (matcher.find()) {
final String language = matcher.group(1);
- final LanguageInterpreter languageInterpreter = this.getLanguageInterpreter(language);
- if (languageInterpreter == null) {
- throw new UnsupportedExpressionLanguageException("Could not resolve parameter '" + parameter
- + "'. The language '" + language + "' is not supported.");
+ final LanguageInterpreter interpreter =
+ this.getLanguageInterpreter(language);
+ if (interpreter == null) {
+ throw new UnsupportedExpressionLanguageException(
+ "Could not resolve parameter '" + parameter + "'. "
+ + "The language '" + language + "' is not supported.");
}
-
+
final String variable = matcher.group(2);
- final String replacement = languageInterpreter.resolve(variable, this.objectModel);
+ resolved = interpreter.resolve(variable, this.objectModel);
+ if (resolved == null) {
+ throw new VariableNotFoundException("Variable {" + language
+ + ":" + variable + "} not found or is null.");
+ }
- if (replacement != null) {
- result.replace(matcher.start(), matcher.end(), replacement);
- } else {
- throw new VariableNotFoundException("Variable {" + language + ":" + variable
- + "} not found or is null.");
+ if (!wholeMatch) {
+ sbResult.replace(matcher.start(), matcher.end(),
+ resolved.toString());
+ matcher.reset();
}
- matcher.reset();
}
- return result.toString();
+ return wholeMatch ? resolved : sbResult.toString();
}
private Map<String, ? extends Object> resolveParameters(final Map<String, ? extends Object> componentParameters) {
final Map<String, Object> resolvedParameters = new HashMap<String, Object>();
- for (Map.Entry <String, ? extends Object> entry :
+ for (Map.Entry <String, ? extends Object> entry :
componentParameters.entrySet()) {
- if (!(entry.getValue() instanceof String)) {
+
+ if (entry.getValue() instanceof String) {
+ resolvedParameters.put(entry.getKey(),
+ this.resolveParameter((String) entry.getValue()));
+ } else {
// can only resolve strings
resolvedParameters.put(entry.getKey(), entry.getValue());
- continue;
}
-
- final String resolvedParameter =
- this.resolveParameter((String) entry.getValue());
- resolvedParameters.put(entry.getKey(), resolvedParameter);
}
return resolvedParameters;
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=1197931&r1=1197930&r2=1197931&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 Sat Nov 5 11:18:55 2011
@@ -32,7 +32,7 @@ public class SitemapParametersStack {
private Stack<Entry> entries = new Stack<Entry>();
- public String getParameter(String parameterName) {
+ public Object getParameter(String parameterName) {
Matcher absoluteParameterMatcher = ABSOLUTE_PARAMETER_PATTERN.matcher(parameterName);
if (absoluteParameterMatcher.matches()) {
@@ -56,18 +56,13 @@ public class SitemapParametersStack {
this.entries.push(new Entry(name, parameters));
}
- private String resolveAbsoluteParameter(String parameterName, Matcher absoluteParameterMatcher) {
+ private Object resolveAbsoluteParameter(String parameterName, Matcher absoluteParameterMatcher) {
final String entryName = absoluteParameterMatcher.group(1);
final String name = absoluteParameterMatcher.group(2);
for (Entry entry : this.entries) {
if (entryName.equals(entry.getName())) {
- Object result = entry.getParameter(name);
- if (result == null) {
- return null;
- }
-
- return result.toString();
+ return entry.getParameter(name);
}
}
@@ -75,15 +70,10 @@ public class SitemapParametersStack {
+ "' could not be resolved. There was no entry for the name '" + entryName + "'");
}
- private String resolveRelativeParameter(Matcher relativeParameterMatcher) {
+ private Object resolveRelativeParameter(Matcher relativeParameterMatcher) {
final String levelPrefix = relativeParameterMatcher.group(2);
- final String name = relativeParameterMatcher.group(3);
- final int level;
- if (levelPrefix == null) {
- level = 0;
- } else {
- level = levelPrefix.length() / RELATIVE_LOCATION_PREFIX.length();
- }
+ final int level = levelPrefix == null
+ ? 0 : levelPrefix.length() / RELATIVE_LOCATION_PREFIX.length();
final int index = this.entries.size() - level - 1;
if (index < 0) {
@@ -92,13 +82,9 @@ public class SitemapParametersStack {
+ level + " entries were requested.");
}
- Entry entry = this.entries.get(index);
- Object result = entry.getParameter(name);
- if (result == null) {
- return null;
- }
-
- return result.toString();
+ final Entry entry = this.entries.get(index);
+ final String name = relativeParameterMatcher.group(3);
+ return entry.getParameter(name);
}
private class Entry {
Modified: cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/expression/JexlLanguageInterpreter.java
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/expression/JexlLanguageInterpreter.java?rev=1197931&r1=1197930&r2=1197931&view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/expression/JexlLanguageInterpreter.java (original)
+++ cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/expression/JexlLanguageInterpreter.java Sat Nov 5 11:18:55 2011
@@ -35,7 +35,7 @@ public class JexlLanguageInterpreter imp
LoggerFactory.getLogger(JexlLanguageInterpreter.class);
@Override
- public String resolve(final String expression,
+ public Object resolve(final String expression,
final ObjectModel objectModel) {
final JexlEngine jexlEngine = new JexlEngine();
@@ -51,6 +51,6 @@ public class JexlLanguageInterpreter imp
LOG.error("While evaluating '" + expression + "'", e);
}
- return result == null ? "" : result.toString();
+ return result == null ? "" : result;
}
}
Modified: cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/expression/LanguageInterpreter.java
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/expression/LanguageInterpreter.java?rev=1197931&r1=1197930&r2=1197931&view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/expression/LanguageInterpreter.java (original)
+++ cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/expression/LanguageInterpreter.java Sat Nov 5 11:18:55 2011
@@ -20,5 +20,5 @@ import org.apache.cocoon.sitemap.objectm
public interface LanguageInterpreter {
- String resolve(String expression, ObjectModel objectModel);
+ Object resolve(String expression, ObjectModel objectModel);
}
Modified: cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/expression/SettingsInterpreter.java
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/expression/SettingsInterpreter.java?rev=1197931&r1=1197930&r2=1197931&view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/expression/SettingsInterpreter.java (original)
+++ cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/expression/SettingsInterpreter.java Sat Nov 5 11:18:55 2011
@@ -31,8 +31,8 @@ public class SettingsInterpreter impleme
@Autowired
private Settings settings;
- public String resolve(String expression, ObjectModel objectModel) {
- Object result = null;
+ public Object resolve(String expression, ObjectModel objectModel) {
+ String result = null;
try {
result = this.settings.getProperty(expression);
@@ -40,7 +40,6 @@ public class SettingsInterpreter impleme
e.printStackTrace();
}
- return result != null ? result.toString() : "";
+ return result != null ? result : "";
}
-
}
Modified: cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/expression/SitemapLanguageInterpreter.java
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/expression/SitemapLanguageInterpreter.java?rev=1197931&r1=1197930&r2=1197931&view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/expression/SitemapLanguageInterpreter.java (original)
+++ cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/expression/SitemapLanguageInterpreter.java Sat Nov 5 11:18:55 2011
@@ -22,7 +22,7 @@ import org.apache.cocoon.sitemap.objectm
public class SitemapLanguageInterpreter implements LanguageInterpreter {
- public String resolve(String variable, ObjectModel objectModel) {
+ public Object resolve(String variable,ObjectModel objectModel) {
return objectModel.getSitemapParameters().getParameter(variable);
}
}
Modified: cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/node/AbstractSitemapNode.java
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/node/AbstractSitemapNode.java?rev=1197931&r1=1197930&r2=1197931&view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/node/AbstractSitemapNode.java (original)
+++ cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/node/AbstractSitemapNode.java Sat Nov 5 11:18:55 2011
@@ -212,4 +212,30 @@ public abstract class AbstractSitemapNod
return result.toString();
}
+
+ protected InvocationResult invoke(final String src, final String type,
+ final Invocation invocation) {
+
+ final Map<String, Object> invocationParams =
+ new HashMap<String, Object>(this.getParameters());
+ if (src != null) {
+ final Object resolvedSource = invocation.resolveParameter(src);
+ if (!(resolvedSource instanceof String)) {
+ throw new IllegalArgumentException(
+ "Only strings can be resolved as URLs");
+ }
+
+ invocationParams.put("source",
+ invocation.resolve((String) resolvedSource));
+ }
+
+ // set the baseUrl
+ invocationParams.put("baseUrl", invocation.resolve(""));
+
+ // install the component
+ invocation.installComponent(type, invocationParams);
+
+ // signal that we did some processing
+ return InvocationResult.CONTINUE;
+ }
}
Modified: cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/node/GenerateNode.java
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/node/GenerateNode.java?rev=1197931&r1=1197930&r2=1197931&view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/node/GenerateNode.java (original)
+++ cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/node/GenerateNode.java Sat Nov 5 11:18:55 2011
@@ -18,9 +18,6 @@
*/
package org.apache.cocoon.sitemap.node;
-import java.util.HashMap;
-import java.util.Map;
-
import org.apache.cocoon.sitemap.Invocation;
import org.apache.cocoon.sitemap.node.annotations.Parameter;
@@ -42,20 +39,7 @@ public class GenerateNode extends Abstra
*/
@Override
public InvocationResult invoke(Invocation invocation) {
- Map<String, Object> parameters = new HashMap<String, Object>(this.getParameters());
- if (this.src != null) {
- String resolvedSource = invocation.resolveParameter(this.src);
- parameters.put("source", invocation.resolve(resolvedSource));
- }
-
- // set the baseUrl
- parameters.put("baseUrl", invocation.resolve(""));
-
- // install the component
- invocation.installComponent(GENERATOR_CATEGORY + this.type, parameters);
-
- // signal that we did some processing
- return InvocationResult.CONTINUE;
+ return invoke(this.src, GENERATOR_CATEGORY + this.type, invocation);
}
/**
Modified: cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/node/MatchNode.java
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/node/MatchNode.java?rev=1197931&r1=1197930&r2=1197931&view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/node/MatchNode.java (original)
+++ cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/node/MatchNode.java Sat Nov 5 11:18:55 2011
@@ -40,7 +40,7 @@ public class MatchNode extends AbstractS
*/
private static final Logger LOG =
LoggerFactory.getLogger(MatchNode.class);
-
+
@Parameter
private String name;
@@ -79,11 +79,14 @@ public class MatchNode extends AbstractS
*/
@Override
public InvocationResult invoke(Invocation invocation) {
+ final Object resolvedValue = invocation.resolveParameter(this.value);
+
// try to resolve the test value in the case that it is an expression
- String testValue = invocation.resolveParameter(this.value);
+ String testValue = resolvedValue == null
+ ? null : resolvedValue.toString();
if (testValue == null) {
testValue = invocation.getRequestURI();
- if (testValue.startsWith("/")) {
+ if (testValue.charAt(0) == '/') {
testValue = testValue.substring(1);
}
}
Modified: cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/node/ReadNode.java
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/node/ReadNode.java?rev=1197931&r1=1197930&r2=1197931&view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/node/ReadNode.java (original)
+++ cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/node/ReadNode.java Sat Nov 5 11:18:55 2011
@@ -51,20 +51,7 @@ public class ReadNode extends AbstractSi
*/
@Override
public InvocationResult invoke(Invocation invocation) {
- Map<String, Object> parameters = new HashMap<String, Object>(this.getParameters());
- if (this.src != null) {
- String resolvedSource = invocation.resolveParameter(this.src);
- parameters.put("source", invocation.resolve(resolvedSource));
- }
-
- // set the baseUrl
- parameters.put("baseUrl", invocation.resolve(""));
-
- // install the component
- invocation.installComponent(READER_CATEGORY + this.type, parameters);
-
- // signal that we did some processing
- return InvocationResult.CONTINUE;
+ return invoke(this.src, READER_CATEGORY + this.type, invocation);
}
/**
Modified: cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/node/TransformNode.java
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/node/TransformNode.java?rev=1197931&r1=1197930&r2=1197931&view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/node/TransformNode.java (original)
+++ cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/node/TransformNode.java Sat Nov 5 11:18:55 2011
@@ -18,9 +18,6 @@
*/
package org.apache.cocoon.sitemap.node;
-import java.util.HashMap;
-import java.util.Map;
-
import org.apache.cocoon.sitemap.Invocation;
import org.apache.cocoon.sitemap.node.annotations.Parameter;
@@ -51,20 +48,7 @@ public class TransformNode extends Abstr
*/
@Override
public InvocationResult invoke(final Invocation invocation) {
- final Map<String, Object> parameters = new HashMap<String, Object>(this.getParameters());
- if (this.src != null) {
- String resolvedSource = invocation.resolveParameter(this.src);
- parameters.put("source", invocation.resolve(resolvedSource));
- }
-
- // set the baseUrl
- parameters.put("baseUrl", invocation.resolve(""));
-
- // install the component
- invocation.installComponent(TRANSFORMER_CATEGORY + this.type, parameters);
-
- // signal that we did some processing
- return InvocationResult.CONTINUE;
+ return invoke(this.src, TRANSFORMER_CATEGORY + this.type, invocation);
}
/**