You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by ha...@apache.org on 2001/09/18 16:47:00 UTC
cvs commit: xml-cocoon2/src/org/apache/cocoon/acting SessionStateAction.java
haul 01/09/18 07:47:00
Modified: xdocs matchers_selectors.xml
webapp sitemap.xmap
src/org/apache/cocoon Constants.java
src/org/apache/cocoon/selection HeaderSelectorFactory.java
RequestSelectorFactory.java
src/org/apache/cocoon/matching
WildcardHeaderMatcherFactory.java
WildcardParameterValueMatcherFactory.java
src/org/apache/cocoon/acting SessionStateAction.java
Added: src/org/apache/cocoon/selection
SessionAttributeSelectorFactory.java
src/org/apache/cocoon/matching
WildcardSessionAttributeMatcherFactory.java
Removed: src/org/apache/cocoon/selection
SessionStateSelectorFactory.java
src/org/apache/cocoon/matching
WildcardSessionStateMatcherFactory.java
Log:
- make SourceFactories fail in a friendlier way when parameters are missing
- change *SessionState(Matcher|Selector)* to *SesstionAttribute(Matcher|Selector)*
since they really are SessionAttribute thingies i.e. more general.
updated docs + sample accordingly
Revision Changes Path
1.5 +2 -2 xml-cocoon2/xdocs/matchers_selectors.xml
Index: matchers_selectors.xml
===================================================================
RCS file: /home/cvs/xml-cocoon2/xdocs/matchers_selectors.xml,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- matchers_selectors.xml 2001/07/28 03:13:53 1.4
+++ matchers_selectors.xml 2001/09/18 14:47:00 1.5
@@ -169,7 +169,7 @@
<![CDATA[
<map:match type="sessionstate" pattern="edit*">
<!-- here you could insert parameters for the above matcher -->
- <map:parameter name="state-key" value="__sessionstate"/>
+ <map:parameter name="attribute-name" value="__sessionstate"/>
<map:match type="next-page" pattern="ok*">
<!-- do something here, eg. database updates -->
<map:redirect-to resource="simple-page1"/>
@@ -326,7 +326,7 @@
<code>generateClassSource</code> processed pattern, the current environment
(<code>objectModel</code>), and the parameters given for the corresponding match
element. In the example above for nested matchers, this would be the
-<code><![CDATA[<map:parameter name="state-key" value="__sessionstate"/>]]></code>. The
+<code><![CDATA[<map:parameter name="attribute-name" value="__sessionstate"/>]]></code>. The
<code>int []</code> part of the method signature was generated by
<code>generateParameterSource</code>.
</p>
1.51 +19 -17 xml-cocoon2/webapp/sitemap.xmap
Index: sitemap.xmap
===================================================================
RCS file: /home/cvs/xml-cocoon2/webapp/sitemap.xmap,v
retrieving revision 1.50
retrieving revision 1.51
diff -u -r1.50 -r1.51
--- sitemap.xmap 2001/09/07 23:00:28 1.50
+++ sitemap.xmap 2001/09/18 14:47:00 1.51
@@ -101,7 +101,9 @@
<map:matcher name="wildcard" src="org.apache.cocoon.matching.WildcardURIMatcherFactory"/>
<map:matcher name="regexp" src="org.apache.cocoon.matching.RegexpURIMatcherFactory"/>
<map:matcher name="request" src="org.apache.cocoon.matching.RequestParamMatcher"/>
- <map:matcher name="sessionstate" src="org.apache.cocoon.matching.WildcardSessionStateMatcherFactory"/>
+ <map:matcher name="sessionstate" src="org.apache.cocoon.matching.WildcardSessionAttributeMatcherFactory">
+ <attribute-name>org.apache.cocoon.SessionState</attribute-name>
+ </map:matcher>
<map:matcher name="next-page" src="org.apache.cocoon.matching.WildcardParameterValueMatcherFactory">
<parameter-name>next-state</parameter-name>
</map:matcher>
@@ -162,7 +164,7 @@
<map:resource name="dynamic-page1">
<map:act type="session-state">
<map:parameter name="new-state" value="{../next-state}"/>
- <map:redirect-to resource="dynamic-page" target="{../target}/state{../../../state}{../../next-state}"/>
+ <map:redirect-to resource="dynamic-page" target="{../target}/state{../../../org.apache.cocoon.SessionState}{../../next-state}"/>
</map:act>
</map:resource>
@@ -580,25 +582,25 @@
<map:match pattern="session-state/example">
<map:act type="session-isvalid">
- <map:match type="sessionstate" pattern="1">
- <map:match type="next-page" pattern="1">
- <map:redirect-to resource="dynamic-page1" target="docs/samples/session-state"/>
- </map:match>
- <map:match type="next-page" pattern="2">
- <map:redirect-to resource="dynamic-page1" target="docs/samples/session-state"/>
+ <map:match type="sessionstate" pattern="1">
+ <map:match type="next-page" pattern="1">
+ <map:redirect-to resource="dynamic-page1" target="docs/samples/session-state"/>
+ </map:match>
+ <map:match type="next-page" pattern="2">
+ <map:redirect-to resource="dynamic-page1" target="docs/samples/session-state"/>
+ </map:match>
</map:match>
- </map:match>
- <map:match type="sessionstate" pattern="2">
- <map:match type="next-page" pattern="1">
- <map:redirect-to resource="dynamic-page1" target="docs/samples/session-state"/>
- </map:match>
- <map:match type="next-page" pattern="2">
- <map:redirect-to resource="dynamic-page1" target="docs/samples/session-state"/>
+ <map:match type="sessionstate" pattern="2">
+ <map:match type="next-page" pattern="1">
+ <map:redirect-to resource="dynamic-page1" target="docs/samples/session-state"/>
+ </map:match>
+ <map:match type="next-page" pattern="2">
+ <map:redirect-to resource="dynamic-page1" target="docs/samples/session-state"/>
+ </map:match>
</map:match>
- </map:match>
- <map:redirect-to resource="dynamic-page2" target="docs/samples/session-state/state0"/>
+ <map:redirect-to resource="dynamic-page2" target="docs/samples/session-state/state0"/>
</map:act>
<map:redirect-to resource="dynamic-page" target="docs/samples/session-state/start"/>
</map:match>
1.12 +1 -3 xml-cocoon2/src/org/apache/cocoon/Constants.java
Index: Constants.java
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/org/apache/cocoon/Constants.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- Constants.java 2001/08/30 19:15:43 1.11
+++ Constants.java 2001/09/18 14:47:00 1.12
@@ -10,7 +10,7 @@
/**
* @author <a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>
- * @version CVS $Revision: 1.11 $ $Date: 2001/08/30 19:15:43 $
+ * @version CVS $Revision: 1.12 $ $Date: 2001/09/18 14:47:00 $
*/
public interface Constants {
@@ -72,7 +72,5 @@
String CONTEXT_CONFIG_URL = "config-url";
boolean DESCRIPTOR_RELOADABLE_DEFAULT = true;
-
- String SESSION_STATE_ATTRIBUTE = "org.apache.cocoon.SessionState";
}
1.4 +31 -8 xml-cocoon2/src/org/apache/cocoon/selection/HeaderSelectorFactory.java
Index: HeaderSelectorFactory.java
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/org/apache/cocoon/selection/HeaderSelectorFactory.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- HeaderSelectorFactory.java 2001/08/20 13:55:16 1.3
+++ HeaderSelectorFactory.java 2001/09/18 14:47:00 1.4
@@ -22,7 +22,7 @@
* </table>
*
* @author <a href="mailto:haul@informatik.tu-darmstadt.de">Christian Haul</a>
- * @version CVS $Revision: 1.3 $ $Date: 2001/08/20 13:55:16 $
+ * @version CVS $Revision: 1.4 $ $Date: 2001/09/18 14:47:00 $
*/
public class HeaderSelectorFactory extends ParameterSelectorFactory {
@@ -45,13 +45,36 @@
}
StringBuffer sb = new StringBuffer();
- sb.append("String compareToString = null;")
- .append("if (param == null) {")
- .append(" compareToString = (String) XSPRequestHelper.getHeader(objectModel, \""+parameterName+"\");")
- .append("} else { ")
- .append(" compareToString = (String) XSPRequestHelper.getHeader(objectModel, param.getParameter(\"state-key\",\""+parameterName+"\"));")
- .append("}")
- .append("return compareToString != null && compareToString.equals (pattern);");
+ sb
+ .append("String compareToString = null;")
+ .append("if (param.getNames().length == 0) {");
+ if ( parameterName == null ) {
+ sb
+ .append(" getLogger().warn(\"No request header name and no default name given. FAILING\");")
+ .append("} else { ")
+ .append(" String parameterName = param.getParameter(\"parameter-name\", null);")
+ .append(" if ( parameterName == null ) {")
+ .append(" getLogger().warn(\"No request header name and no default name given. FAILING\");")
+ .append(" } else {")
+ .append(" compareToString = (String) XSPRequestHelper.getHeader(objectModel, parameterName);")
+ .append(" }");
+ } else {
+ sb
+ .append(" compareToString = (String) XSPRequestHelper.getHeader(objectModel, \""+parameterName+"\");")
+ .append("} else { ")
+ .append(" String parameterName = param.getParameter(\"parameter-name\", null);")
+ .append(" if ( parameterName == null ) {")
+ .append(" getLogger().warn(\"No request header name given, will use default\");")
+ .append(" parameterName = \""+parameterName+"\";")
+ .append(" }")
+ .append(" compareToString = (String) XSPRequestHelper.getHeader(objectModel, parameterName);");
+ }
+ sb
+ .append("}")
+ .append("if ( compareToString == null ) {")
+ .append(" getLogger().debug(\"request header not set\");")
+ .append("}")
+ .append("return compareToString != null && compareToString.equals (pattern);");
return sb.toString();
}
}
1.4 +31 -8 xml-cocoon2/src/org/apache/cocoon/selection/RequestSelectorFactory.java
Index: RequestSelectorFactory.java
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/org/apache/cocoon/selection/RequestSelectorFactory.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- RequestSelectorFactory.java 2001/08/20 13:55:16 1.3
+++ RequestSelectorFactory.java 2001/09/18 14:47:00 1.4
@@ -22,7 +22,7 @@
* </table>
*
* @author <a href="mailto:haul@informatik.tu-darmstadt.de">Christian Haul</a>
- * @version CVS $Revision: 1.3 $ $Date: 2001/08/20 13:55:16 $
+ * @version CVS $Revision: 1.4 $ $Date: 2001/09/18 14:47:00 $
*/
public class RequestSelectorFactory extends ParameterSelectorFactory {
@@ -45,13 +45,36 @@
}
StringBuffer sb = new StringBuffer();
- sb.append("String compareToString = null;")
- .append("if (param == null) {")
- .append(" compareToString = (String) XSPRequestHelper.getParameter(objectModel, \""+parameterName+"\",null);")
- .append("} else { ")
- .append(" compareToString = (String) XSPRequestHelper.getParameter(objectModel, param.getParameter(\"state-key\",\""+parameterName+"\"),null);")
- .append("}")
- .append("return compareToString != null && compareToString.equals (pattern);");
+ sb
+ .append("String compareToString = null;")
+ .append("if (param.getNames().length == 0) {");
+ if ( parameterName == null ) {
+ sb
+ .append(" getLogger().warn(\"No request parameter name and no default request parameter name given. FAILING\");")
+ .append("} else { ")
+ .append(" String parameterName = param.getParameter(\"parameter-name\", null);")
+ .append(" if ( parameterName == null ) {")
+ .append(" getLogger().warn(\"No request parameter name and no default request parameter name given. FAILING\");")
+ .append(" } else {")
+ .append(" compareToString = (String) XSPRequestHelper.getParameter(objectModel, parameterName, null);")
+ .append(" }");
+ } else {
+ sb
+ .append(" compareToString = (String) XSPRequestHelper.getParameter(objectModel, \""+parameterName+"\", null);")
+ .append("} else { ")
+ .append(" String parameterName = param.getParameter(\"parameter-name\", null);")
+ .append(" if ( parameterName == null ) {")
+ .append(" getLogger().warn(\"No request parameter name given, will use default\");")
+ .append(" parameterName = \""+parameterName+"\";")
+ .append(" }")
+ .append(" compareToString = (String) XSPRequestHelper.getParameter(objectModel, parameterName, null);");
+ }
+ sb
+ .append("}")
+ .append("if ( compareToString == null ) {")
+ .append(" getLogger().debug(\"request parameter not set\");")
+ .append("}")
+ .append("return compareToString != null && compareToString.equals (pattern);");
return sb.toString();
}
}
1.1 xml-cocoon2/src/org/apache/cocoon/selection/SessionAttributeSelectorFactory.java
Index: SessionAttributeSelectorFactory.java
===================================================================
/*****************************************************************************
* Copyright (C) The Apache Software Foundation. All rights reserved. *
* ------------------------------------------------------------------------- *
* This software is published under the terms of the Apache Software License *
* version 1.1, a copy of which has been included with this distribution in *
* the LICENSE file. *
*****************************************************************************/
package org.apache.cocoon.selection;
import org.apache.avalon.framework.configuration.ConfigurationException;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
/**
* This class generates source code to implement a selector that
* matches a string against an arbitrary session attribute.
*
* <p><b>Global and local configuration</b></p>
* <table border="1">
* <tr><td><code>attribute-name</code></td><td>String identifying the session attribute.</td></tr>
* </table>
*
* @author <a href="mailto:haul@informatik.tu-darmstadt.de">Christian Haul</a>
* @version CVS $Revision: 1.1 $ $Date: 2001/09/18 14:47:00 $ */
public class SessionAttributeSelectorFactory extends ParameterSelectorFactory {
public String generateMethodSource (NodeList conf)
throws ConfigurationException {
String attributeName = null;
int count = conf.getLength();
for(int k = 0; k < count;k++) {
Node node = conf.item(k);
if (node.getNodeName() != null &&
node.getNodeName().equals("attribute-name"))
{
Node textNode = node.getFirstChild();
if (textNode != null) {
attributeName = textNode.getNodeValue().trim();
}
}
}
StringBuffer sb = new StringBuffer();
sb
.append("String compareToString = null;")
.append("if (param.getNames().length == 0) {");
if ( attributeName == null ) {
sb
.append(" getLogger().warn(\"No session attribute and no default attribute given. FAILING\");")
.append("} else { ")
.append(" String attributeName = param.getParameter(\"attribute-name\", null);")
.append(" if ( attributeName == null ) {")
.append(" getLogger().warn(\"No session attribute and no default attribute given. FAILING\");")
.append(" } else {")
.append(" compareToString = (String) XSPRequestHelper.getSessionAttribute(objectModel, attributeName); ")
.append(" }");
} else {
sb
.append(" compareToString = (String) XSPRequestHelper.getSessionAttribute(objectModel, \""+attributeName+"\");")
.append("} else { ")
.append(" String attributeName = param.getParameter(\"attribute-name\", null);")
.append(" if ( attributeName == null ) {")
.append(" getLogger().warn(\"No session attribute given, will use default\");")
.append(" attributeName = \""+attributeName+"\";")
.append(" }")
.append(" compareToString = (String) XSPRequestHelper.getSessionAttribute(objectModel, attributeName); ");
}
sb
.append("}")
.append("if ( compareToString == null ) {")
.append(" getLogger().debug(\"Session attribute not set\");")
.append("}")
.append("return compareToString != null && compareToString.equals (pattern);");
return sb.toString();
}
}
1.4 +66 -14 xml-cocoon2/src/org/apache/cocoon/matching/WildcardHeaderMatcherFactory.java
Index: WildcardHeaderMatcherFactory.java
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/org/apache/cocoon/matching/WildcardHeaderMatcherFactory.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- WildcardHeaderMatcherFactory.java 2001/08/20 13:55:16 1.3
+++ WildcardHeaderMatcherFactory.java 2001/09/18 14:47:00 1.4
@@ -22,19 +22,43 @@
* </table>
*
* @author <a href="mailto:haul@informatik.tu-darmstadt.de">Christian Haul</a>
- * @version CVS $Revision: 1.3 $ $Date: 2001/08/20 13:55:16 $
+ * @version CVS $Revision: 1.4 $ $Date: 2001/09/18 14:47:00 $
*/
public class WildcardHeaderMatcherFactory extends WildcardURIMatcherFactory {
+ public void dumpConfig(NodeList conf)
+ { // dump config
+ if (conf != null) {
+ for (int i=0; i<conf.getLength(); i++) {
+ Node node = conf.item(i);
+ if (node!=null) {
+ if (node.hasChildNodes()){
+ getLogger().debug("<"+node.getNodeName()+">");
+ try {
+ this.dumpConfig(node.getChildNodes());
+ } catch (Exception e) {
+ getLogger().debug(e.toString()+e.getMessage());
+ }
+ getLogger().debug("</>");
+ } else {
+ getLogger().debug("<"+node.getNodeName()+"/>");
+ }
+ }
+ }
+ }
+ }
+
/**
* Generates the matcher method level source code
*/
public String generateMethodSource (NodeList conf)
throws ConfigurationException {
-
+
String parameterName = null;
+ this.dumpConfig(conf);
+
int count = conf.getLength();
for(int k = 0; k < count;k++) {
Node node = conf.item(k);
@@ -48,18 +72,46 @@
}
}
- return "HashMap map = new HashMap(1);" +
- "String theParameter = null;" +
- "if (parameters == null) {"+
- " theParameter = XSPRequestHelper.getHeader(objectModel, \""+parameterName+"\");" +
- " } else { " +
- " theParameter = XSPRequestHelper.getHeader(objectModel, parameters.getParameter(\"parameter-name\", \""+parameterName+"\"));" +
- " }; " +
- "if (theParameter != null && org.apache.cocoon.matching.helpers.WildcardURIMatcher.match (map, theParameter, pattern)) {" +
- "map.put(\""+parameterName+"\", theParameter);"+
- "return map;" +
- "} else {" +
- "return null;}";
+ StringBuffer sb = new StringBuffer();
+ sb
+ .append("HashMap map = new HashMap(1);")
+ .append("String parameterName = null;")
+ .append("String parameterValue = null;")
+ .append("if (parameters.getNames().length == 0) {");
+ if ( parameterName == null ) {
+ sb
+ .append(" getLogger().warn(\"No request header name and no default name given. FAILING\");")
+ .append("} else { ")
+ .append(" parameterName = parameters.getParameter(\"parameter-name\", null);")
+ .append(" if ( parameterName == null ) {")
+ .append(" getLogger().warn(\"No request header name and no default name given. FAILING\");")
+ .append(" } else {")
+ .append(" parameterValue = XSPRequestHelper.getHeader(objectModel, parameterName); ")
+ .append(" }");
+ } else {
+ sb
+ .append(" parameterName = \""+parameterName+"\";")
+ .append(" parameterValue = XSPRequestHelper.getHeader(objectModel, parameterName);")
+ .append("} else { ")
+ .append(" parameterName = parameters.getParameter(\"parameter-name\", null);")
+ .append(" if ( parameterName == null ) {")
+ .append(" getLogger().warn(\"No request header name given, will use default\");")
+ .append(" parameterName = \""+parameterName+"\";")
+ .append(" }")
+ .append(" parameterValue = XSPRequestHelper.getHeader(objectModel, parameterName); ");
+ }
+ sb
+ .append("}")
+ .append("if ( parameterValue == null ) {")
+ .append(" getLogger().debug(\"Request header not set\");")
+ .append("} else {")
+ .append(" if (org.apache.cocoon.matching.helpers.WildcardURIMatcher.match (map, parameterValue, pattern)) {")
+ .append(" map.put(parameterName, parameterValue ); ")
+ .append(" return map;")
+ .append(" }")
+ .append("}")
+ .append("return null;");
+ return sb.toString();
}
}
1.4 +41 -13 xml-cocoon2/src/org/apache/cocoon/matching/WildcardParameterValueMatcherFactory.java
Index: WildcardParameterValueMatcherFactory.java
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/org/apache/cocoon/matching/WildcardParameterValueMatcherFactory.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- WildcardParameterValueMatcherFactory.java 2001/08/20 13:55:16 1.3
+++ WildcardParameterValueMatcherFactory.java 2001/09/18 14:47:00 1.4
@@ -26,7 +26,7 @@
* </table>
*
* @author <a href="mailto:haul@informatik.tu-darmstadt.de">Christian Haul</a>
- * @version CVS $Revision: 1.3 $ $Date: 2001/08/20 13:55:16 $ */
+ * @version CVS $Revision: 1.4 $ $Date: 2001/09/18 14:47:00 $ */
public class WildcardParameterValueMatcherFactory extends WildcardURIMatcherFactory {
@@ -51,18 +51,46 @@
}
}
- return "HashMap map = new HashMap(1);" +
- "String theParameter = null; " +
- "if (parameters == null) {"+
- " theParameter = XSPRequestHelper.getParameter(objectModel, \""+parameterName+"\",null);" +
- " } else { " +
- " theParameter = XSPRequestHelper.getParameter(objectModel, parameters.getParameter(\"parameter-name\",\""+parameterName+"\"),null);" +
- " }; " +
- "if (theParameter != null && org.apache.cocoon.matching.helpers.WildcardURIMatcher.match (map, theParameter, pattern)) {" +
- "map.put(\""+parameterName+"\", theParameter);"+
- "return map;" +
- "} else {" +
- "return null;}";
+ StringBuffer sb = new StringBuffer();
+ sb
+ .append("HashMap map = new HashMap(1);")
+ .append("String parameterName = null;")
+ .append("String parameterValue = null;")
+ .append("if (parameters.getNames().length == 0) {");
+ if ( parameterName == null ) {
+ sb
+ .append(" getLogger().warn(\"No request parameter name and no default name given. FAILING\");")
+ .append("} else { ")
+ .append(" parameterName = parameters.getParameter(\"parameter-name\", null);")
+ .append(" if ( parameterName == null ) {")
+ .append(" getLogger().warn(\"No request parameter name and no default name given. FAILING\");")
+ .append(" } else {")
+ .append(" parameterValue = XSPRequestHelper.getParameter(objectModel, parameterName, null); ")
+ .append(" }");
+ } else {
+ sb
+ .append(" parameterName = \""+parameterName+"\";")
+ .append(" parameterValue = XSPRequestHelper.getParameter(objectModel, parameterName, null);")
+ .append("} else { ")
+ .append(" parameterName = parameters.getParameter(\"parameter-name\", null);")
+ .append(" if ( parameterName == null ) {")
+ .append(" getLogger().warn(\"No request parameter name given, will use default\");")
+ .append(" parameterName = \""+parameterName+"\";")
+ .append(" }")
+ .append(" parameterValue = XSPRequestHelper.getParameter(objectModel, parameterName, null); ");
+ }
+ sb
+ .append("}")
+ .append("if ( parameterValue == null ) {")
+ .append(" getLogger().debug(\"Request parameter not set\");")
+ .append("} else {")
+ .append(" if (org.apache.cocoon.matching.helpers.WildcardURIMatcher.match (map, parameterValue, pattern)) {")
+ .append(" map.put(parameterName, parameterValue ); ")
+ .append(" return map;")
+ .append(" }")
+ .append("}")
+ .append("return null;");
+ return sb.toString();
}
}
1.1 xml-cocoon2/src/org/apache/cocoon/matching/WildcardSessionAttributeMatcherFactory.java
Index: WildcardSessionAttributeMatcherFactory.java
===================================================================
/*****************************************************************************
* Copyright (C) The Apache Software Foundation. All rights reserved. *
* ------------------------------------------------------------------------- *
* This software is published under the terms of the Apache Software License *
* version 1.1, a copy of which has been included with this distribution in *
* the LICENSE file. *
*****************************************************************************/
package org.apache.cocoon.matching;
import org.apache.avalon.framework.configuration.ConfigurationException;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
/**
* This class generates source code which represents a specific pattern matcher
* for a session attribute.
*
* <p><b>Global and local configuration</b></p>
* <tableborder="1">
* <tr><td><code>attribute-name</code></td><td>String identifying the session attribute</td></tr>
* </table>
*
* @author <a href="mailto:haul@informatik.tu-darmstadt.de">Christian Haul</a>
* @version CVS $Revision: 1.1 $ $Date: 2001/09/18 14:47:00 $
*/
public class WildcardSessionAttributeMatcherFactory extends WildcardURIMatcherFactory {
/**
* Generates the matcher method level source code
*/
public String generateMethodSource (NodeList conf)
throws ConfigurationException {
String attributeName=null;
int count = conf.getLength();
for(int k = 0; k < count;k++) {
Node node = conf.item(k);
if (node.getNodeName() != null &&
node.getNodeName().equals("attribute-name"))
{
Node textNode = node.getFirstChild();
if (textNode != null) {
attributeName = textNode.getNodeValue().trim();
}
}
}
StringBuffer sb = new StringBuffer();
sb
.append("HashMap map = new HashMap(1);")
.append("String attributeName = null;")
.append("String attributeValue = null;")
.append("if (parameters.getNames().length == 0) {");
if ( attributeName == null ) {
sb
.append(" getLogger().warn(\"No session attribute and no default attribute given. FAILING\");")
.append("} else { ")
.append(" attributeName = parameters.getParameter(\"attribute-name\", null);")
.append(" if ( attributeName == null ) {")
.append(" getLogger().warn(\"No session attribute and no default attribute given. FAILING\");")
.append(" } else {")
.append(" attributeValue = (String) XSPRequestHelper.getSessionAttribute(objectModel, attributeName); ")
.append(" }");
} else {
sb
.append(" attributeName = \""+attributeName+"\";")
.append(" attributeValue = (String) XSPRequestHelper.getSessionAttribute(objectModel, attributeName);")
.append("} else { ")
.append(" attributeName = parameters.getParameter(\"attribute-name\", null);")
.append(" if ( attributeName == null ) {")
.append(" getLogger().warn(\"No session attribute given, will use default\");")
.append(" attributeName = \""+attributeName+"\";")
.append(" }")
.append(" attributeValue = (String) XSPRequestHelper.getSessionAttribute(objectModel, attributeName); ");
}
sb
.append("}")
.append("if ( attributeValue == null ) {")
.append(" getLogger().debug(\"Session attribute not set\");")
.append("} else {")
.append(" if (org.apache.cocoon.matching.helpers.WildcardURIMatcher.match (map, attributeValue, pattern)) {")
.append(" map.put(attributeName, attributeValue ); ")
.append(" return map;")
.append(" }")
.append("}")
.append("return null;");
return sb.toString();
}
}
1.5 +11 -12 xml-cocoon2/src/org/apache/cocoon/acting/SessionStateAction.java
Index: SessionStateAction.java
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/org/apache/cocoon/acting/SessionStateAction.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- SessionStateAction.java 2001/08/22 12:03:32 1.4
+++ SessionStateAction.java 2001/09/18 14:47:00 1.5
@@ -65,15 +65,14 @@
* </tr>
* </table>
*
- * @see org.apache.cocoon.matching.WildcardSessionStateMatcherFactory
- * @see org.apache.cocoon.selection.SessionStateSelectorFactory
+ * @see org.apache.cocoon.matching.WildcardSessionAttributeMatcherFactory
+ * @see org.apache.cocoon.selection.SessionAttributeSelectorFactory
*
* @author <a href="mailto:haul@informatik.tu-darmstadt.de">Christian Haul</a>
- * @version CVS $Id: SessionStateAction.java,v 1.4 2001/08/22 12:03:32 sylvain Exp $ */
+ * @version CVS $Id: SessionStateAction.java,v 1.5 2001/09/18 14:47:00 haul Exp $ */
public class SessionStateAction extends AbstractConfigurableAction implements ThreadSafe {
- private static String componentName = "REZEPTE SessionStateAction";
- protected String statekey = Constants.SESSION_STATE_ATTRIBUTE;
+ protected String statekey = "org.apache.cocoon.SessionState";
protected String newstate = null;
protected int sublevels = 0;
protected int mylevel = 0;
@@ -111,7 +110,7 @@
mylevel = par.getParameterAsInteger("state-level", mylevel);
if (newstate == null ) {
- getLogger().error(componentName + ": new-state is null");
+ getLogger().error("new-state is null");
return null;
}
@@ -124,29 +123,29 @@
if (sublevels == 0) {
oldstate = (String) session.getAttribute(statekey);
session.setAttribute(statekey, newstate);
- getLogger().debug(componentName+" : "+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(componentName+" : remove "+statekey+Integer.toString(i));
+ getLogger().debug("remove "+statekey+Integer.toString(i));
}
session.setAttribute( statekey + Integer.toString(mylevel), newstate);
- getLogger().debug(componentName+" : "+statekey+Integer.toString(mylevel)+"="+newstate);
+ getLogger().debug(statekey+Integer.toString(mylevel)+"="+newstate);
}
- getLogger().debug(componentName + " transition " + oldstate + " -> " + newstate);
+ getLogger().debug("transition " + oldstate + " -> " + newstate);
HashMap map = new HashMap(1);
map.put("newstate", newstate);
return map;
} else {
- getLogger().warn(componentName + ": A session object was not present or no longer valid");
+ getLogger().warn("A session object was not present or no longer valid");
return null;
}
} else {
- getLogger().warn(componentName + ": No request object");
+ getLogger().warn("No request object");
return null;
}
----------------------------------------------------------------------
In case of troubles, e-mail: webmaster@xml.apache.org
To unsubscribe, e-mail: cocoon-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: cocoon-cvs-help@xml.apache.org