
Author: seb Date: Mon Oct 9 20:08:52 2006 New Revision: 649 Modified: logback/trunk/logback-site/src/site/xdocTemplates/joran.xml logback/trunk/pom.xml logback/trunk/src/main/assembly/dist.xml Log: improved joran doc modified dist.xml to include core examples in core directory Modified: logback/trunk/logback-site/src/site/xdocTemplates/joran.xml ============================================================================== --- logback/trunk/logback-site/src/site/xdocTemplates/joran.xml (original) +++ logback/trunk/logback-site/src/site/xdocTemplates/joran.xml Mon Oct 9 20:08:52 2006 @@ -284,16 +284,27 @@ <a name="newRule" /> <h3>New-rule action</h3> -<p><em>More in-depths text to come</em></p> <p>Joran includes an action which allows the Joran interpreter to lean new rules on the fly while interpreting the XML file containing the new rules. See the <em>logback-core/examples/src/joran/newRule/</em> directory for sample code. </p> +<p>In this package, the <code>NewRuleCalculator</code> class contains +the same setup as we have seen so far, but for one line:</p> + +<source>ruleStore.addRule(new Pattern("/computation/new-rule"), new NewRuleAction());</source> + +<p>By adding this line, we ask Joran to allow new rules to be learnt +at parsing time. It works pretty much like the other rules: it has a +<code>begin()</code> and <code>end()</code> method, and is called each time +the parser finds a <em>new-rule</em> element.</p> + +<p>When called, the <code>begin()</code> method looks for a <em>pattern</em> +and a <em>actionClass</em> attribute. The action class is then instanciated +and added to the <code>RuleStore</code>, along with its corresponding pattern.</p> <a name="implicit" /> <h3>Implicit actions </h3> -<p><em>More in-depths text to come</em></p> <p>The rules defined thus far are called explicit rules because they require an explicit pattern, hence fixing the tag name of the elements for which they apply. @@ -346,6 +357,48 @@ directory for an example of an implicit action. </p> +<p>In that directory, you will find two actions, one xml file and one +class containing the setup of Joran.</p> + +<p>The <code>NOPAction</code> class does nothing. It is used to set +the context of the <em>foo</em> element, using that line:</p> + +<source>ruleStore.addRule(new Pattern("*/foo"), new NOPAction());</source> + +<p>After that, the implicit action, namely <code>PrintMeImplicitAction</code>, +is added to the <code>RuleStore</code>. This is done by simply adding a new +instance of the action to the <code>Joran interpreter</code></p> + +<source>ji.addImplicitAction(new PrintMeImplicitAction());</source> + +<p>When called, the <code>isApplicable()</code> method of <code>PrintMeImplicitAction</code> +checks the value of the <em>printme</em> attribute. If the value is <code>true</code>, +the implicit action is applicable: its <code>begin()</code> method will be called.</p> + +<p>The <em>implicit1.xml</em> file contains the following lines:</p> + +<source><foo> + + <xyz printme="true"> + <abc printme="true"/> + </xyz> + + <xyz/> + + <foo printme="true"/> + +</foo></source> + +<p>As one can see, the first element will be printed, since it has a <em>printme</em> +attribute, which bears the value <code>true</code>.</p> + +<p>The second element will not be printed, because no <em>printme</em> attibute is present.</p> + +<p>The last element will not be printed, although the required attribute is present. +This is because implicit rules are called only if no explicit rules are defined. Since +we added a <code>NOPAction</code> with the <em>*/foo</em> pattern, it will be used instead +of the <code>PrintMeImplicitAction</code>.</p> + <h3>Non goals</h3> <p>The Joran API is not intended to be used to parse documents with Modified: logback/trunk/pom.xml ============================================================================== --- logback/trunk/pom.xml (original) +++ logback/trunk/pom.xml Mon Oct 9 20:08:52 2006 @@ -193,7 +193,7 @@ <distributionManagement> <site> <id>pixie</id> - <url>scp://pixie/var/www/logback.qos.ch/htdocs/</url> + <url>scp://pixie/var/www/logback.qos.ch/htdocs/kidding/</url> </site> </distributionManagement> Modified: logback/trunk/src/main/assembly/dist.xml ============================================================================== --- logback/trunk/src/main/assembly/dist.xml (original) +++ logback/trunk/src/main/assembly/dist.xml Mon Oct 9 20:08:52 2006 @@ -110,7 +110,7 @@ <!-- Core Examples --> <fileSet> <directory>logback-core/examples/</directory> - <outputDirectory>/examples/</outputDirectory> + <outputDirectory>logback-core/examples/</outputDirectory> </fileSet> <!-- Website -->