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:[EMAIL PROTECTED]";>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:[EMAIL PROTECTED]";>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:[EMAIL PROTECTED]";>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:[EMAIL PROTECTED]";>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:[EMAIL PROTECTED]";>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:[EMAIL PROTECTED]";>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:[EMAIL PROTECTED]";>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:[EMAIL PROTECTED]";>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:     [EMAIL PROTECTED]
To unsubscribe, e-mail:          [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to