haul        01/11/26 01:19:51

  Modified:    webapp   sitemap.xmap
               src/org/apache/cocoon/sitemap AbstractSitemap.java
               src/org/apache/cocoon/matching
                        WildcardSessionAttributeMatcher.java
               src/org/apache/cocoon/matching/helpers WildcardHelper.java
                        WildcardURIMatcher.java
               src/org/apache/cocoon/components/language/markup/sitemap/java
                        sitemap.xsl
  Log:
  - Fixed stateful examples
  - WildcardSessionAttributeMatcher hasn't declared to implement configurable (fixed)
  - Added complete string in {0} for Wildcard(URI)?Matcher in addition to matches in 
{1}...
  - Added <map:dump-parameters/> in sitemap + method in AbstractSitemap to print out 
current
    sitemap parameters to log. Nice for debugging sitemaps + educational.
  
  Revision  Changes    Path
  1.63      +29 -14    xml-cocoon2/webapp/sitemap.xmap
  
  Index: sitemap.xmap
  ===================================================================
  RCS file: /home/cvs/xml-cocoon2/webapp/sitemap.xmap,v
  retrieving revision 1.62
  retrieving revision 1.63
  diff -u -r1.62 -r1.63
  --- sitemap.xmap      2001/11/23 09:25:55     1.62
  +++ sitemap.xmap      2001/11/26 09:19:51     1.63
  @@ -143,7 +143,7 @@
     necessity, matchers can be nested while chaining does not work.
     Related concepts are selectors and actions. 
   
  -  Since this is important, let me repeat it: Selectors are executed
  +  Since this is important, let me repeat it: Matchers are executed
     during pipeline setup.
   -->
   
  @@ -203,7 +203,11 @@
     pipelines. Use them to update databases, check external resources
     etc. The execution may fail or complete successfully. Only if the
     execution was successful, the pipeline fragment contained inside is
  -  used within the pipeline.
  +  used within the pipeline. Related concepts are matchers and
  +  selectors.
  +
  +  Since this is important, let me repeat it: Actions are executed
  +  during pipeline setup.
   -->
   
     <map:actions>
  @@ -268,9 +272,20 @@
     </map:resource>
   
     <map:resource name="dynamic-page1">
  +     <map:dump-parameters/>
  +     <!-- print all current sitemap parameters to log -->
        <map:act type="session-state">
  -        <map:parameter name="new-state" value="{../next-state}"/>
  -        <map:redirect-to resource="dynamic-page" 
target="{../target}/state{../../../org.apache.cocoon.SessionState}{../../next-state}"/>
  +        <map:parameter name="new-state" value="{../0}"/>
  +        <!-- 
  +           use the complete string that was matched as a parameter. Compare
  +           this with @target below. There the third sitemap parameter refers to
  +           the very same string. Very this by looking at the log. This
  +           irritating effect stems from the fact, that the above map:parameter
  +           belongs conceptually still to the parent element while all other
  +           nested tags are, well, nested.
  +        -->
  +          <map:dump-parameters/>
  +        <map:redirect-to resource="dynamic-page" 
target="{../target}/state{../../../0}{../../0}"/>
        </map:act>
     </map:resource>
   
  @@ -332,7 +347,7 @@
   
     You may have as many pipelines in your sitemap as you like. However,
     it seems that the only purposes would be to specify different error
  -  handlers or mount subsitemaps.
  +  handlers.
   -->
   
    <map:pipelines>
  @@ -770,6 +785,7 @@
   
      <!-- =========================== Dynamic ================================ -->
      <map:match pattern="xsp/*">
  +    <map:dump-parameters/>
       <map:generate type="serverpages" src="docs/samples/xsp/{1}.xsp"/>
       <map:transform src="stylesheets/dynamic-page2html.xsl">
           <map:parameter name="view-source" value="docs/samples/xsp/{1}.xsp"/>
  @@ -866,32 +882,31 @@
         <!--
            This example like the next one show, that matches can be
            nested and don't need to match on URIs alone. By using a
  -      session attribute or the referer header for matches it is
  +         session attribute or the referer header for matches it is
            easy to model a state machine with the sitemap.
   
  -      There are user documents on this.
  +         There are user documents on this.
         -->
         <map:act type="session-isvalid">
           <!-- if session is valid ... -->
   
           <map:match type="sessionstate" pattern="1">
  -        <!-- if a specific session attribute matches pattern "1" -->
  +           <!-- if a specific session attribute matches pattern "1" -->
              <map:match type="next-page" pattern="1">
  -                   <map:redirect-to resource="dynamic-page1" 
target="docs/samples/session-state"/>
  -                   <!-- by redirecting to this resource, the rest
  -                        of this fragment here is irrelevant -->
  +              <map:redirect-to resource="dynamic-page1" 
target="docs/samples/session-state"/>
  +              <!-- by redirecting to this resource, the rest of this fragment here 
is irrelevant -->
              </map:match>
              <map:match type="next-page" pattern="2">
  -                   <map:redirect-to resource="dynamic-page1" 
target="docs/samples/session-state"/>
  +              <map:redirect-to resource="dynamic-page1" 
target="docs/samples/session-state"/>
              </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: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:redirect-to resource="dynamic-page1" 
target="docs/samples/session-state"/>
              </map:match>
           </map:match>
   
  
  
  
  1.20      +27 -1     xml-cocoon2/src/org/apache/cocoon/sitemap/AbstractSitemap.java
  
  Index: AbstractSitemap.java
  ===================================================================
  RCS file: /home/cvs/xml-cocoon2/src/org/apache/cocoon/sitemap/AbstractSitemap.java,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- AbstractSitemap.java      2001/10/11 07:28:23     1.19
  +++ AbstractSitemap.java      2001/11/26 09:19:51     1.20
  @@ -42,12 +42,13 @@
   import java.util.ArrayList;
   import java.util.List;
   import java.util.Map;
  +import java.util.Iterator;
   
   /**
    * Base class for generated <code>Sitemap</code> classes
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Giacomo Pati</a>
  - * @version CVS $Revision: 1.19 $ $Date: 2001/10/11 07:28:23 $
  + * @version CVS $Revision: 1.20 $ $Date: 2001/11/26 09:19:51 $
    */
   public abstract class AbstractSitemap extends AbstractLoggable implements Sitemap, 
Disposable, ThreadSafe {
       private Context context;
  @@ -319,6 +320,31 @@
               getLogger().error("AbstractSitemap:substitute()", e);
               throw new PatternException("error occurred during evaluation of 
expression \"" + expr + "\" at position " +
                   (i + 1) + "\n" + e.getMessage());
  +        }
  +    }
  +
  +    /** 
  +     * Dumps all sitemap parameters to log
  +     */
  +    protected void dumpParameters(List list) {
  +        if (getLogger().isDebugEnabled()) {
  +            StringBuffer sb=new StringBuffer();
  +            if (!list.isEmpty()) {
  +                sb.append("\nCurrent Sitemap Parameters:\n");
  +                String path="";
  +                for (int i=list.size()-1; i>=0; i--) {
  +                    Map map=(Map)list.get(i);
  +                    Iterator keys = map.keySet().iterator();
  +                    while (keys.hasNext()) {
  +                        String key = (String)keys.next();
  +                        sb.append(path)
  +                            .append("PARAM: '").append(key)
  +                            .append("' VALUE: 
'").append(map.get(key)).append("'\n");
  +                    }
  +                    path="../"+path;
  +                }
  +            }
  +            getLogger().debug(sb.toString());
           }
       }
   
  
  
  
  1.3       +6 -2      
xml-cocoon2/src/org/apache/cocoon/matching/WildcardSessionAttributeMatcher.java
  
  Index: WildcardSessionAttributeMatcher.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/matching/WildcardSessionAttributeMatcher.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- WildcardSessionAttributeMatcher.java      2001/10/22 10:17:46     1.2
  +++ WildcardSessionAttributeMatcher.java      2001/11/26 09:19:51     1.3
  @@ -26,15 +26,19 @@
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Christian Haul</a>
    * @author <a href="mailto:[EMAIL PROTECTED]";>Sylvain Wallez</a>
  - * @version CVS $Revision: 1.2 $ $Date: 2001/10/22 10:17:46 $
  + * @version CVS $Revision: 1.3 $ $Date: 2001/11/26 09:19:51 $
    */
   
  -public class WildcardSessionAttributeMatcher extends WildcardURIMatcher {
  +public class WildcardSessionAttributeMatcher 
  +    extends WildcardURIMatcher 
  +    implements Configurable
  +{
   
       private String defaultParam;
   
       public void configure(Configuration config) throws ConfigurationException {
           this.defaultParam = config.getChild("attribute-name").getValue(null);
  +     getLogger().debug("attribute-name is = '"+this.defaultParam+"'");
       }
   
       protected String getMatchString(Map objectModel, Parameters parameters) {
  
  
  
  1.2       +4 -1      
xml-cocoon2/src/org/apache/cocoon/matching/helpers/WildcardHelper.java
  
  Index: WildcardHelper.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/matching/helpers/WildcardHelper.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- WildcardHelper.java       2001/10/19 15:28:45     1.1
  +++ WildcardHelper.java       2001/11/26 09:19:51     1.2
  @@ -18,7 +18,7 @@
    * @author <a href="mailto:[EMAIL PROTECTED]";>Giacomo Pati</a>
    * @author <a href="mailto:[EMAIL PROTECTED]";>Stefano Mazzocchi</a>
    * @author <a href="mailto:[EMAIL PROTECTED]";>Berin Loritsch</a>
  - * @version CVS $Revision: 1.1 $ $Date: 2001/10/19 15:28:45 $
  + * @version CVS $Revision: 1.2 $ $Date: 2001/11/26 09:19:51 $
    */
   public class WildcardHelper {
   
  @@ -152,6 +152,9 @@
   
           // The matching count
           int mcount = 0;
  +
  +        // We want the complete data be in {0}
  +        map.put(Integer.toString(mcount),data);
   
           // First check for MATCH_BEGIN
           boolean matchBegin = false;
  
  
  
  1.3       +4 -1      
xml-cocoon2/src/org/apache/cocoon/matching/helpers/WildcardURIMatcher.java
  
  Index: WildcardURIMatcher.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/matching/helpers/WildcardURIMatcher.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- WildcardURIMatcher.java   2001/10/19 15:28:45     1.2
  +++ WildcardURIMatcher.java   2001/11/26 09:19:51     1.3
  @@ -17,7 +17,7 @@
    *         (Apache Software Foundation, Exoffice Technologies)
    * @author <a href="mailto:[EMAIL PROTECTED]";>Giacomo Pati</a>
    * @author <a href="mailto:[EMAIL PROTECTED]";>Stefano Mazzocchi</a>
  - * @version CVS $Revision: 1.2 $ $Date: 2001/10/19 15:28:45 $
  + * @version CVS $Revision: 1.3 $ $Date: 2001/11/26 09:19:51 $
    * @deprecated renamed to WildcardHelper
    */
   public class WildcardURIMatcher {
  @@ -64,6 +64,9 @@
   
           // The matching count
           int mcount = 0;
  +
  +        // We want the complete data be in {0}
  +        map.put(Integer.toString(mcount),data);
   
           // First check for MATCH_BEGIN
           boolean matchBegin = false;
  
  
  
  1.48      +7 -1      
xml-cocoon2/src/org/apache/cocoon/components/language/markup/sitemap/java/sitemap.xsl
  
  Index: sitemap.xsl
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/components/language/markup/sitemap/java/sitemap.xsl,v
  retrieving revision 1.47
  retrieving revision 1.48
  diff -u -r1.47 -r1.48
  --- sitemap.xsl       2001/11/14 22:43:43     1.47
  +++ sitemap.xsl       2001/11/26 09:19:51     1.48
  @@ -126,7 +126,7 @@
        *
        * @author &lt;a href="mailto:[EMAIL PROTECTED]"&gt;Giacomo Pati&lt;/a&gt;
        * @author &lt;a href="mailto:[EMAIL PROTECTED]"&gt;Berin Loritsch&lt;/a&gt;
  -     * @version CVS $Id: sitemap.xsl,v 1.47 2001/11/14 22:43:43 giacomo Exp $
  +     * @version CVS $Id: sitemap.xsl,v 1.48 2001/11/26 09:19:51 haul Exp $
        */
       public class <xsl:value-of select="@file-name"/> extends AbstractSitemap {
         static final String LOCATION = "<xsl:value-of select="translate(@file-path, 
'/', '.')"/>.<xsl:value-of select="@file-name"/>";
  @@ -1614,6 +1614,12 @@
         }
       </xsl:for-each>
     </xsl:template>
  +
  +  <!-- nice for debugging: print all kown sitemap parameters to log -->
  +  <xsl:template match="map:dump-parameters">
  +    this.dumpParameters(listOfMaps);
  +  </xsl:template>
  +
   
     <!-- this template is used to setup a individual sitemap component before putting 
it into a pipeline -->
     <xsl:template name="setup-component">
  
  
  

----------------------------------------------------------------------
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