On Mon, 26 Nov 2001, Carsten Ziegeler wrote: > Hi, > > do we really need an explicit "debug" statement, like > "<map:dump-parameters/>"? > I think we shouldn't extend the sitemap language in this way. The next > thing people ask for is to have a <map:dump-components> and so on. > Why not simply always debugging it, if the log level is debug?
I fully support Carsten here. We should not augment the sitemap Schema with debugging stuff. The logging interface should give you enough power to show you what's wrong. Giacomo > The other thing is, we are very short before the next release, so we > should change is less as possible. Bug fixes are of course always > acceptable. > > Carsten > > > > -----Original Message----- > > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]] > > Sent: Monday, November 26, 2001 10:20 AM > > To: [EMAIL PROTECTED] > > Subject: cvs commit: > > xml-cocoon2/src/org/apache/cocoon/components/language/markup/sitemap/jav > > a sitemap.xsl > > > > > > 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/WildcardSessionAttribut > > eMatcher.java > > > > Index: WildcardSessionAttributeMatcher.java > > =================================================================== > > RCS file: > > /home/cvs/xml-cocoon2/src/org/apache/cocoon/matching/WildcardSessi > > onAttributeMatcher.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/Wildc > > ardHelper.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/Wildc > > ardURIMatcher.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/sitem > > ap/java/sitemap.xsl > > > > Index: sitemap.xsl > > =================================================================== > > RCS file: > > /home/cvs/xml-cocoon2/src/org/apache/cocoon/components/language/ma > > rkup/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 <a > > href="mailto:[EMAIL PROTECTED]">Giacomo Pati</a> > > * @author <a > > href="mailto:[EMAIL PROTECTED]">Berin Loritsch</a> > > - * @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] > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, email: [EMAIL PROTECTED] > > > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, email: [EMAIL PROTECTED]