sylvain 2003/08/07 02:49:51
Modified: src/blocks/databases/samples/tutorial sitemap.xmap
src/java/org/apache/cocoon/components/treeprocessor/sitemap
ActTypeNode.java
Log:
Fix bug #9835 again !
Revision Changes Path
1.4 +2 -2 cocoon-2.1/src/blocks/databases/samples/tutorial/sitemap.xmap
Index: sitemap.xmap
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/blocks/databases/samples/tutorial/sitemap.xmap,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- sitemap.xmap 7 Aug 2003 08:42:20 -0000 1.3
+++ sitemap.xmap 7 Aug 2003 09:49:50 -0000 1.4
@@ -78,7 +78,7 @@
<map:act set="process">
<map:parameter name="descriptor"
value="context://samples/databases/tutorial/docs/department-form.xml"/>
<map:generate type="serverpages" src="docs/confirm-dept.xsp"/>
- <map:transform src="stylesheets/apache.xsl"/>
+ <map:transform src="apache.xsl"/>
<map:serialize/>
</map:act>
<map:generate type="serverpages" src="docs/{1}-dept.xsp"/>
@@ -91,7 +91,7 @@
<map:act set="process">
<map:parameter name="descriptor"
value="context://samples/databases/tutorial/docs/employee-form.xml"/>
<map:generate type="serverpages" src="docs/confirm-empl.xsp"/>
- <map:transform src="stylesheets/apache.xsl"/>
+ <map:transform src="apache.xsl"/>
<map:serialize/>
</map:act>
<map:generate type="serverpages" src="docs/{1}-empl.xsp"/>
1.3 +20 -2
cocoon-2.1/src/java/org/apache/cocoon/components/treeprocessor/sitemap/ActTypeNode.java
Index: ActTypeNode.java
===================================================================
RCS file:
/home/cvs/cocoon-2.1/src/java/org/apache/cocoon/components/treeprocessor/sitemap/ActTypeNode.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ActTypeNode.java 7 Aug 2003 08:42:20 -0000 1.2
+++ ActTypeNode.java 7 Aug 2003 09:49:51 -0000 1.3
@@ -130,6 +130,22 @@
Parameters resolvedParams =
VariableResolver.buildParameters(this.parameters, context, objectModel);
Map actionResult;
+
+ // If in action set, merge parameters
+ if (inActionSet) {
+ Parameters callerParams =
(Parameters)env.getAttribute(ActionSetNode.CALLER_PARAMETERS);
+ if (resolvedParams == Parameters.EMPTY_PARAMETERS) {
+ // Just swap
+ resolvedParams = callerParams;
+ } else if (callerParams != Parameters.EMPTY_PARAMETERS) {
+ // Build a new Parameters object since the both we hare are
read-only
+ Parameters newParams = new Parameters();
+ // And merge both
+ newParams.merge(resolvedParams);
+ newParams.merge(callerParams);
+ resolvedParams = newParams;
+ }
+ }
// If action is ThreadSafe, avoid select() and try/catch block (faster !)
if (this.threadSafeAction != null) {
@@ -163,7 +179,9 @@
// Merge child action results, if any
Map childMap =
(Map)env.getAttribute(ActionSetNode.ACTION_RESULTS);
if (childMap != null) {
- childMap.putAll(actionResult);
+ Map newResults = new HashMap(childMap);
+ newResults.putAll(actionResult);
+ env.setAttribute(ActionSetNode.ACTION_RESULTS, newResults);
} else {
// No previous results
env.setAttribute(ActionSetNode.ACTION_RESULTS,
actionResult);