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 &lt;[EMAIL PROTECTED]&gt;
  - * @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]

Reply via email to