vgritsenko    2002/10/21 19:10:56

  Modified:    .        Tag: cocoon_2_0_3_branch changes.xml
               src/java/org/apache/cocoon/acting Tag: cocoon_2_0_3_branch
                        SessionStateAction.java
  Log:
  Sync and fix:
      Local parameters in SessionStateAction still do override global parameters,
      but do NOT change global parameters.
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.138.2.59 +5 -1      xml-cocoon2/changes.xml
  
  Index: changes.xml
  ===================================================================
  RCS file: /home/cvs/xml-cocoon2/changes.xml,v
  retrieving revision 1.138.2.58
  retrieving revision 1.138.2.59
  diff -u -r1.138.2.58 -r1.138.2.59
  --- changes.xml       22 Oct 2002 01:52:23 -0000      1.138.2.58
  +++ changes.xml       22 Oct 2002 02:10:56 -0000      1.138.2.59
  @@ -40,6 +40,10 @@
   
    <release version="@version@" date="@date@">
     <action dev="VG" type="update">
  +    Local parameters in SessionStateAction still do override global parameters,
  +    but do NOT change global parameters.
  +  </action>
  +  <action dev="VG" type="update">
       Src attribute can be used now with ResourceExistsAction. Old parameter
       syntax preserved.
     </action>
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.6.2.2   +73 -64    
xml-cocoon2/src/java/org/apache/cocoon/acting/SessionStateAction.java
  
  Index: SessionStateAction.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/acting/SessionStateAction.java,v
  retrieving revision 1.6.2.1
  retrieving revision 1.6.2.2
  diff -u -r1.6.2.1 -r1.6.2.2
  --- SessionStateAction.java   30 Jun 2002 23:26:56 -0000      1.6.2.1
  +++ SessionStateAction.java   22 Oct 2002 02:10:56 -0000      1.6.2.2
  @@ -81,7 +81,7 @@
    * several times with different attribute names rather than sub
    * levels. </p>
    *
  - * <p><b>Global and local paramters:</b></p>
  + * <p><b>Global and local parameters:</b></p>
    *
    * <table border="1">
    *   <tr>
  @@ -115,7 +115,9 @@
    * @author <a href="mailto:haul@;informatik.tu-darmstadt.de">Christian Haul</a>
    * @version CVS $Id$
    */
  -public class SessionStateAction extends AbstractConfigurableAction implements 
ThreadSafe {
  +public class SessionStateAction
  +    extends AbstractConfigurableAction
  +    implements ThreadSafe {
   
       protected String statekey = "org.apache.cocoon.SessionState";
       protected String newstate = null;
  @@ -125,77 +127,84 @@
       /**
        * Configures the Action.
        */
  -    public void configure(Configuration conf) throws ConfigurationException
  -    {
  -    super.configure(conf);
  -
  -    if (settings.containsKey("state-key-prefix"))
  -        statekey = (String) settings.get("state-key-prefix");
  -    if (settings.containsKey("new-state"))
  -        newstate = (String) settings.get("new-state");
  -    if (settings.containsKey("sub-levels"))
  -        sublevels = Integer.parseInt((String) settings.get("sub-levels"));
  -    if (settings.containsKey("state-level"))
  -        mylevel = Integer.parseInt((String) settings.get("state-level"));
  -    }
  -
  +    public void configure(Configuration conf) throws ConfigurationException {
  +        super.configure(conf);
   
  -    public Map       act (Redirector redirector,
  -             SourceResolver resolver,
  -             Map objectModel,
  -             String src,
  -             Parameters par) throws Exception
  -    {
  -        Request request = ObjectModelHelper.getRequest(objectModel);
  -
  -    // read local settings
  -    newstate = par.getParameter("new-state", newstate);
  -    statekey = par.getParameter("state-key", statekey);
  -    sublevels = par.getParameterAsInteger("sublevels", sublevels);
  -    mylevel = par.getParameterAsInteger("state-level", mylevel);
  -
  -    if (newstate == null ) {
  -        getLogger().error("new-state is null");
  -        return null;
  +        if (settings.containsKey("state-key-prefix")) {
  +            statekey = (String) settings.get("state-key-prefix");
  +        }
  +        if (settings.containsKey("new-state")) {
  +            newstate = (String) settings.get("new-state");
  +        }
  +        if (settings.containsKey("sub-levels")) {
  +            sublevels = Integer.parseInt((String) settings.get("sub-levels"));
  +        }
  +        if (settings.containsKey("state-level")) {
  +            mylevel = Integer.parseInt((String) settings.get("state-level"));
  +        }
       }
   
  +    public Map act(Redirector redirector,
  +                   SourceResolver resolver,
  +                   Map objectModel,
  +                   String src,
  +                   Parameters par) throws Exception {
   
  -        if (request != null) {
  -           Session session = request.getSession (false);
  +        Request request = ObjectModelHelper.getRequest(objectModel);
   
  -            if (session != null && request.isRequestedSessionIdValid()) {
  -        String oldstate = null;
  -        if (sublevels == 0) {
  -            oldstate = (String) session.getAttribute(statekey);
  -            session.setAttribute(statekey, newstate);
  -            getLogger().debug(statekey+"="+newstate);
  -
  -        } else { // sublevels != 0
  -            oldstate = (String) session.getAttribute( statekey + 
Integer.toString(mylevel) );
  -            for (int i=mylevel+1; i<=sublevels; i++) {
  -            session.removeAttribute( statekey+Integer.toString(i) );
  -            getLogger().debug("remove "+statekey+Integer.toString(i));
  +        // read local settings
  +        String newstate = par.getParameter("new-state", this.newstate);
  +        String statekey = par.getParameter("state-key", this.statekey);
  +        int sublevels = par.getParameterAsInteger("sublevels", this.sublevels);
  +        int mylevel = par.getParameterAsInteger("state-level", this.mylevel);
  +
  +        if (newstate == null) {
  +            if (this.getLogger().isDebugEnabled()) {
  +                getLogger().error("new-state is null");
               }
  -            session.setAttribute( statekey + Integer.toString(mylevel), newstate);
  -            getLogger().debug(statekey+Integer.toString(mylevel)+"="+newstate);
  +            return null;
           }
  -        getLogger().debug("transition " + oldstate + " -> " + newstate);
   
  -        HashMap map = new HashMap(1);
  -        map.put("newstate", newstate);
  -        return map;
  +        if (request != null) {
  +            Session session = request.getSession(false);
   
  -        } else {
  -                getLogger().warn("A session object was not present or no longer 
valid");
  -        return null;
  +            if (session != null && request.isRequestedSessionIdValid()) {
  +                String oldstate = null;
  +                if (sublevels == 0) {
  +                    oldstate = (String) session.getAttribute(statekey);
  +                    session.setAttribute(statekey, newstate);
  +                    if (this.getLogger().isDebugEnabled()) {
  +                         getLogger().debug(statekey + "=" + newstate);
  +                    }
  +
  +                } else { // sublevels != 0
  +                    oldstate = (String)session.getAttribute(statekey + mylevel);
  +                    for (int i = mylevel + 1; i <= sublevels; i++) {
  +                        session.removeAttribute(statekey + i);
  +                        if (this.getLogger().isDebugEnabled()) {
  +                            getLogger().debug("Remove " + statekey + i);
  +                        }
  +                    }
  +                    session.setAttribute(statekey + mylevel, newstate);
  +                    if (this.getLogger().isDebugEnabled()) {
  +                        getLogger().debug(statekey + mylevel + "=" + newstate);
  +                    }
  +                }
  +                if (this.getLogger().isDebugEnabled()) {
  +                    getLogger().debug("Transition " + oldstate + " -> " + newstate);
  +                }
  +
  +                HashMap map = new HashMap(1);
  +                map.put("newstate", newstate);
  +                return map;
  +            } else {
  +                getLogger().warn(
  +                    "A session object was not present or no longer valid");
  +                return null;
               }
           } else {
  -        getLogger().warn("No request object");
  -        return null;
  -    }
  -
  +            getLogger().warn("No request object");
  +            return null;
  +        }
       }
   }
  -
  -
  -
  
  
  

----------------------------------------------------------------------
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