Return-Path: Delivered-To: apmail-xml-cocoon-cvs-archive@xml.apache.org Received: (qmail 44652 invoked by uid 500); 27 Mar 2002 15:10:36 -0000 Mailing-List: contact cocoon-cvs-help@xml.apache.org; run by ezmlm Precedence: bulk Reply-To: cocoon-dev@xml.apache.org list-help: list-unsubscribe: list-post: Delivered-To: mailing list cocoon-cvs@xml.apache.org Received: (qmail 44643 invoked by uid 500); 27 Mar 2002 15:10:36 -0000 Delivered-To: apmail-xml-cocoon2-cvs@apache.org Date: 27 Mar 2002 15:10:35 -0000 Message-ID: <20020327151035.60625.qmail@icarus.apache.org> From: sylvain@apache.org To: xml-cocoon2-cvs@apache.org Subject: cvs commit: xml-cocoon2/src/java/org/apache/cocoon/components/treeprocessor/sitemap ActionSetNode.java ActionSetNodeBuilder.java X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N sylvain 02/03/27 07:10:35 Modified: src/java/org/apache/cocoon/components/treeprocessor/sitemap ActionSetNode.java ActionSetNodeBuilder.java Log: Fix parameter handling in action-sets : local parameters are now correctly merged with the ones coming from the pipeline (reported by Torsten). Revision Changes Path 1.2 +22 -9 xml-cocoon2/src/java/org/apache/cocoon/components/treeprocessor/sitemap/ActionSetNode.java Index: ActionSetNode.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/treeprocessor/sitemap/ActionSetNode.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- ActionSetNode.java 5 Mar 2002 08:26:23 -0000 1.1 +++ ActionSetNode.java 27 Mar 2002 15:10:35 -0000 1.2 @@ -59,10 +59,10 @@ import org.apache.cocoon.acting.Action; import org.apache.cocoon.environment.Environment; +import org.apache.cocoon.environment.Redirector; import org.apache.cocoon.environment.SourceResolver; import org.apache.cocoon.sitemap.PatternException; -import org.apache.cocoon.sitemap.SitemapRedirector; import org.apache.cocoon.components.treeprocessor.InvokeContext; import org.apache.cocoon.components.treeprocessor.MapStackResolver; @@ -74,7 +74,7 @@ /** * * @author Sylvain Wallez - * @version CVS $Id: ActionSetNode.java,v 1.1 2002/03/05 08:26:23 sylvain Exp $ + * @version CVS $Id: ActionSetNode.java,v 1.2 2002/03/27 15:10:35 sylvain Exp $ */ public class ActionSetNode extends SimpleSelectorProcessingNode @@ -91,12 +91,18 @@ /** The src for each action */ private MapStackResolver[] sources; + + /** The parameters for each action */ + private Map[] parameters; - public ActionSetNode(String name, String[] types, String[] actionNames, MapStackResolver[] sources) { + public ActionSetNode( + String name, String[] types, String[] actionNames, + MapStackResolver[] sources, Map[] parameters) { super(name); this.types = types; this.actionNames = actionNames; this.sources = sources; + this.parameters = parameters; } public void compose(ComponentManager manager) throws ComponentException { @@ -125,10 +131,10 @@ public final Map call(Environment env, InvokeContext context, Parameters params) throws Exception { // Prepare data needed by the actions - Map objectModel = env.getObjectModel(); - SitemapRedirector redirector = PipelinesNode.getRedirector(env); - SourceResolver resolver = getSourceResolver(objectModel); - List mapStack = context.getMapStack(); + Map objectModel = env.getObjectModel(); + Redirector redirector = PipelinesNode.getRedirector(env); + SourceResolver resolver = getSourceResolver(objectModel); + List mapStack = context.getMapStack(); String cocoonAction = env.getAction(); @@ -145,19 +151,26 @@ String actionName = actionNames[i]; String source = sources[i].resolve(mapStack); if (actionName == null || actionName.equals(cocoonAction)) { + + Parameters actionParams = MapStackResolver.buildParameters(parameters[i], mapStack); + if (actionParams == Parameters.EMPTY_PARAMETERS) { + actionParams = params; + } else { + actionParams.merge(params); + } // If action is ThreadSafe, avoid select() and try/catch block (faster !) if ((action = this.threadSafeActions[i]) != null) { actionResult = action.act( - redirector, resolver, objectModel, source, params); + redirector, resolver, objectModel, source, actionParams); } else { action = (Action)this.selector.select(this.types[i]); try { actionResult = action.act( - redirector, resolver, objectModel, source, params); + redirector, resolver, objectModel, source, actionParams); } finally { this.selector.release(action); } 1.2 +5 -2 xml-cocoon2/src/java/org/apache/cocoon/components/treeprocessor/sitemap/ActionSetNodeBuilder.java Index: ActionSetNodeBuilder.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/treeprocessor/sitemap/ActionSetNodeBuilder.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- ActionSetNodeBuilder.java 5 Mar 2002 08:26:23 -0000 1.1 +++ ActionSetNodeBuilder.java 27 Mar 2002 15:10:35 -0000 1.2 @@ -65,7 +65,7 @@ /** * * @author Sylvain Wallez - * @version CVS $Id: ActionSetNodeBuilder.java,v 1.1 2002/03/05 08:26:23 sylvain Exp $ + * @version CVS $Id: ActionSetNodeBuilder.java,v 1.2 2002/03/27 15:10:35 sylvain Exp $ */ public class ActionSetNodeBuilder extends AbstractProcessingNodeBuilder implements ThreadSafe { @@ -78,6 +78,7 @@ List actionTypes = new ArrayList(); List actionNames = new ArrayList(); List actionSources = new ArrayList(); + List actionParameters = new ArrayList(); Configuration[] childrenConfig = config.getChildren(); for (int i = 0; i < childrenConfig.length; i++) { @@ -93,6 +94,7 @@ actionTypes.add(type); actionNames.add(childConfig.getAttribute("action", null)); actionSources.add(MapStackResolver.getResolver(childConfig.getAttribute("src", null))); + actionParameters.add(this.getParameters(childConfig)); } else { // Unknown element @@ -104,10 +106,11 @@ String[] types = (String[])actionTypes.toArray(new String[actionTypes.size()]); String[] actions = (String[])actionNames.toArray(new String[actionNames.size()]); + Map[] parameters = (Map[])actionParameters.toArray(new Map[actionParameters.size()]); MapStackResolver[] sources = (MapStackResolver[])actionSources.toArray(new MapStackResolver[actionSources.size()]); - ActionSetNode node = new ActionSetNode(actionSetName, types, actions, sources); + ActionSetNode node = new ActionSetNode(actionSetName, types, actions, sources, parameters); this.treeBuilder.setupNode(node, config); return node; ---------------------------------------------------------------------- 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