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