You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by sy...@apache.org on 2002/03/31 23:07:48 UTC
cvs commit: xml-cocoon2/src/java/org/apache/cocoon/components/treeprocessor/sitemap CallNode.java
sylvain 02/03/31 13:07:48
Modified: src/java/org/apache/cocoon/components/treeprocessor/sitemap
CallNode.java
Log:
Remove unwanted parameter nesting when resolving resource name.
Reported by: Harry Lai (HLai@coremetrics.com)
Revision Changes Path
1.3 +25 -26 xml-cocoon2/src/java/org/apache/cocoon/components/treeprocessor/sitemap/CallNode.java
Index: CallNode.java
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/treeprocessor/sitemap/CallNode.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- CallNode.java 17 Mar 2002 21:55:22 -0000 1.2
+++ CallNode.java 31 Mar 2002 21:07:48 -0000 1.3
@@ -69,7 +69,7 @@
/**
*
* @author <a href="mailto:sylvain@apache.org">Sylvain Wallez</a>
- * @version CVS $Id: CallNode.java,v 1.2 2002/03/17 21:55:22 sylvain Exp $
+ * @version CVS $Id: CallNode.java,v 1.3 2002/03/31 21:07:48 sylvain Exp $
*/
public class CallNode extends AbstractProcessingNode
@@ -110,36 +110,35 @@
public final boolean invoke(Environment env, InvokeContext context)
throws Exception {
- // Resolve parameters
- if (this.parameters != null) {
- // In redirect-to a level is added to the map stack *only* if the
- // 'target' attribute is present.
- Map params = MapStackResolver.resolveMap(this.parameters, context.getMapStack());
- context.pushMap(params);
- }
-
- boolean result;
+ // Resolve parameters, but push them only once the resource name has been
+ // resolved, otherwise it adds an unwanted nesting level
+ Map params = MapStackResolver.resolveMap(this.parameters, context.getMapStack());
- try {
- if (this.resourceNode != null) {
- // Static resource name
- result = this.resourceNode.invoke(env, context);
-
- } else {
- // Resolved resource name
- String name = this.resourceResolver.resolve(context.getMapStack());
-
- if (getLogger().isInfoEnabled()) {
- getLogger().info("Calling resource " + name);
- }
+ if (this.resourceNode != null) {
+ // Static resource name
+ context.pushMap(params);
+
+ try {
+ return this.resourceNode.invoke(env, context);
+ } finally {
+ context.popMap();
+ }
- result = this.resources.invokeByName(name, env, context);
+ } else {
+ // Resolved resource name
+ String name = this.resourceResolver.resolve(context.getMapStack());
+ if (getLogger().isInfoEnabled()) {
+ getLogger().info("Calling resource " + name);
}
- } finally {
- if (this.parameters != null) {
+
+ // and only now push the parameters
+ context.pushMap(params);
+
+ try {
+ return this.resources.invokeByName(name, env, context);
+ } finally {
context.popMap();
}
}
- return result;
}
}
----------------------------------------------------------------------
In case of troubles, e-mail: webmaster@xml.apache.org
To unsubscribe, e-mail: cocoon-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: cocoon-cvs-help@xml.apache.org