haul 01/07/23 09:31:25 Modified: src/org/apache/cocoon/acting Tag: cocoon_20_branch SessionPropagatorAction.java Log: moved configure method code to AbstractConfigurabeAction (sic!), subclassed it with ConfigurableComposableAction, moved some actions that used that configuration scheme to appropriate superclasses. extended actions that do take parameters but didn't support configuration of default values to use this scheme Revision Changes Path No revision No revision 1.3.2.1 +48 -10 xml-cocoon2/src/org/apache/cocoon/acting/SessionPropagatorAction.java Index: SessionPropagatorAction.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/org/apache/cocoon/acting/SessionPropagatorAction.java,v retrieving revision 1.3 retrieving revision 1.3.2.1 diff -u -r1.3 -r1.3.2.1 --- SessionPropagatorAction.java 2001/06/05 21:36:21 1.3 +++ SessionPropagatorAction.java 2001/07/23 16:31:25 1.3.2.1 @@ -1,4 +1,4 @@ -// $Id: SessionPropagatorAction.java,v 1.3 2001/06/05 21:36:21 dims Exp $ +// $Id: SessionPropagatorAction.java,v 1.3.2.1 2001/07/23 16:31:25 haul Exp $ package org.apache.cocoon.acting; import java.util.Collections; @@ -7,6 +7,8 @@ import java.util.Map; import org.apache.avalon.framework.logger.AbstractLoggable; import org.apache.avalon.framework.parameters.Parameters; +import org.apache.avalon.framework.configuration.Configuration; +import org.apache.avalon.framework.configuration.ConfigurationException; import org.apache.cocoon.Constants; import org.apache.cocoon.environment.Redirector; import org.apache.cocoon.environment.Request; @@ -28,10 +30,21 @@ * </pre> * * @author Martin Man <[EMAIL PROTECTED]> - * @version CVS $Revision: 1.3 $ $Date: 2001/06/05 21:36:21 $ + * @version CVS $Revision: 1.3.2.1 $ $Date: 2001/07/23 16:31:25 $ */ -public class SessionPropagatorAction extends ComposerAction +public class SessionPropagatorAction extends AbstractConfigurableAction { + + private static Object[] defaults = {}; + + public void configure(Configuration conf) throws ConfigurationException { + if (conf != null) { + String[] names = {}; + super.configure(conf); + defaults=(settings.keySet()).toArray(); + }; + } + /** * Main invocation routine. */ @@ -41,6 +54,9 @@ objectModel.get (Constants.REQUEST_OBJECT); HashMap actionMap = new HashMap (); + HashMap isDone = new HashMap(); + Integer dummy = new Integer(1); + if (req == null) { getLogger ().debug ("SESSIONPROPAGATOR: no request object"); return null; @@ -54,20 +70,42 @@ } try { - Iterator keys = parameters.getParameterNames (); - while (keys.hasNext ()) { - String sessionParamName = (String) keys.next (); + + String[] names = parameters.getNames(); + + // parameters + for (int i=0; i<names.length; i++) { + String sessionParamName = names[i]; if (sessionParamName == null || - "".equals (sessionParamName.trim ())) + "".equals (sessionParamName.trim ())) return null; - String value = parameters.getParameter (sessionParamName, null); + isDone.put(sessionParamName, dummy); + String value = parameters.getParameter(sessionParamName); getLogger().debug ("SESSIONPROPAGATOR: propagating value " + value + " to session attribute " + sessionParamName); session.setAttribute (sessionParamName, value); actionMap.put (sessionParamName, value); - } + } + + // defaults, that are not overridden + for (int i=0; i<defaults.length; i++) { + if (! isDone.containsKey(defaults[i])) { + String sessionParamName = (String) defaults[i]; + if (sessionParamName == null || + "".equals (sessionParamName.trim ())) + return null; + isDone.put(sessionParamName, dummy); + String value = parameters.getParameter(sessionParamName); + getLogger().debug ("SESSIONPROPAGATOR: propagating value " + + value + + " to session attribute " + + sessionParamName); + session.setAttribute (sessionParamName, value); + actionMap.put (sessionParamName, value); + } + } getLogger().debug ("SESSIONPROPAGATOR: all params propagated " + "to session"); return Collections.unmodifiableMap (actionMap); @@ -78,6 +116,6 @@ } } -// $Id: SessionPropagatorAction.java,v 1.3 2001/06/05 21:36:21 dims Exp $ +// $Id: SessionPropagatorAction.java,v 1.3.2.1 2001/07/23 16:31:25 haul Exp $ // vim: set et ts=4 sw=4: ---------------------------------------------------------------------- In case of troubles, e-mail: [EMAIL PROTECTED] To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]