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]