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]