You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by "Henning P. Schmiedehausen" <hp...@intermeta.de> on 2003/10/26 18:28:12 UTC

[DIGESTER] Fix xmlrules rule

According to the example in the xmlrules package-summary, adding a
programmatic rule to a XML digester rules file should work like this:

--- cut --
<digester-rules>
   <pattern value="root/foo">
     <include class="BarRuleCreator"/>
   </pattern>
 </digester-rules>
--- cut ---

--- cut ---
public class BarRuleCreator implements DigesterRulesSource {
    public void getRules(Digester digester) {
        digester.addObjectCreate("bar", "Bar");
    }
}
--- cut ---

In fact, it does not. One needs digester.addObjectCreate("/bar", "Bar");

because of this bug:

--- cut ---
Index: src/java/org/apache/commons/digester/xmlrules/DigesterRuleParser.java
===================================================================
RCS file: /home/cvs/jakarta-commons/digester/src/java/org/apache/commons/digester/xmlrules/DigesterRuleParser.java,v
retrieving revision 1.20
diff -u -b -r1.20 DigesterRuleParser.java
--- src/java/org/apache/commons/digester/xmlrules/DigesterRuleParser.java       23 Oct 2003 20:06:09 -0000      1.20
+++ src/java/org/apache/commons/digester/xmlrules/DigesterRuleParser.java       26 Oct 2003 17:18:55 -0000
@@ -447,7 +447,7 @@
          * pass through to this object.
          */
         public RulesPrefixAdapter(String patternPrefix, Rules rules) {
-            prefix = patternPrefix;
+            prefix = patternPrefix + "/";
             delegate = rules;
         }
--- cut ---

Please apply. Finding this cost me most of my sunday. :-)

	Regards
		Henning


-- 
Dipl.-Inf. (Univ.) Henning P. Schmiedehausen          INTERMETA GmbH
hps@intermeta.de        +49 9131 50 654 0   http://www.intermeta.de/

Java, perl, Solaris, Linux, xSP Consulting, Web Services 
freelance consultant -- Jakarta Turbine Development  -- hero for hire

"Dominate!! Dominate!! Eat your young and aggregate! I have grotty silicon!" 
      -- AOL CD when played backwards  (User Friendly - 200-10-15)

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org


Re: [DIGESTER] Fix xmlrules rule

Posted by "Henning P. Schmiedehausen" <hp...@intermeta.de>.
robert burrell donkin <ro...@blueyonder.co.uk> writes:

>hi henning

>i've committed an adapted version of the patch you supplied. my version 
>preserves the existing behaviour (for backwards compatibility) whilst also 
>allowing the documented behaviour, please remember to supply a test case 
>with any future next patches.

Yes, I've seen it. Thanks a lot. I was also thinking about "hey, let's
fix the documentation. ;-) ". Yes, test case next time. But digester
had already ruined most of the sunday because of this, so I was too
lazy. Will try to be better next time. =%-)

	Regards
		Henning


>- robert

>On Sunday, October 26, 2003, at 05:28 PM, Henning P. Schmiedehausen wrote:

>> According to the example in the xmlrules package-summary, adding a
>> programmatic rule to a XML digester rules file should work like this:
>>
>> --- cut --
>> <digester-rules>
>>    <pattern value="root/foo">
>>      <include class="BarRuleCreator"/>
>>    </pattern>
>>  </digester-rules>
>> --- cut ---
>>
>> --- cut ---
>> public class BarRuleCreator implements DigesterRulesSource {
>>     public void getRules(Digester digester) {
>>         digester.addObjectCreate("bar", "Bar");
>>     }
>> }
>> --- cut ---
>>
>> In fact, it does not. One needs digester.addObjectCreate("/bar", "Bar");
>>
>> because of this bug:
>>
>> --- cut ---
>> Index: 
>> src/java/org/apache/commons/digester/xmlrules/DigesterRuleParser.java
>> ===================================================================
>> RCS file: /home/cvs/jakarta-commons/digester/src/java/org/apache/commons/
>> digester/xmlrules/DigesterRuleParser.java,v
>> retrieving revision 1.20
>> diff -u -b -r1.20 DigesterRuleParser.java
>> --- src/java/org/apache/commons/digester/xmlrules/DigesterRuleParser.java 
>>       23 Oct 2003 20:06:09 -0000      1.20
>> +++ src/java/org/apache/commons/digester/xmlrules/DigesterRuleParser.java 
>>       26 Oct 2003 17:18:55 -0000
>> @@ -447,7 +447,7 @@
>>           * pass through to this object.
>>           */
>>          public RulesPrefixAdapter(String patternPrefix, Rules rules) {
>> -            prefix = patternPrefix;
>> +            prefix = patternPrefix + "/";
>>              delegate = rules;
>>          }
>> --- cut ---
>>
>> Please apply. Finding this cost me most of my sunday. :-)
>>
>> 	Regards
>> 		Henning
>>
>>
>> --
>> Dipl.-Inf. (Univ.) Henning P. Schmiedehausen          INTERMETA GmbH
>> hps@intermeta.de        +49 9131 50 654 0   http://www.intermeta.de/
>>
>> Java, perl, Solaris, Linux, xSP Consulting, Web Services
>> freelance consultant -- Jakarta Turbine Development  -- hero for hire
>>
>> "Dominate!! Dominate!! Eat your young and aggregate! I have grotty 
>> silicon!"
>>       -- AOL CD when played backwards  (User Friendly - 200-10-15)
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
>> For additional commands, e-mail: commons-dev-help@jakarta.apache.org
>>


>---------------------------------------------------------------------
>To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
>For additional commands, e-mail: commons-dev-help@jakarta.apache.org

-- 
Dipl.-Inf. (Univ.) Henning P. Schmiedehausen          INTERMETA GmbH
hps@intermeta.de        +49 9131 50 654 0   http://www.intermeta.de/

Java, perl, Solaris, Linux, xSP Consulting, Web Services 
freelance consultant -- Jakarta Turbine Development  -- hero for hire

"Dominate!! Dominate!! Eat your young and aggregate! I have grotty silicon!" 
      -- AOL CD when played backwards  (User Friendly - 200-10-15)

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org


Re: [DIGESTER] Fix xmlrules rule

Posted by robert burrell donkin <ro...@blueyonder.co.uk>.
hi henning

i've committed an adapted version of the patch you supplied. my version 
preserves the existing behaviour (for backwards compatibility) whilst also 
allowing the documented behaviour, please remember to supply a test case 
with any future next patches.

- robert

On Sunday, October 26, 2003, at 05:28 PM, Henning P. Schmiedehausen wrote:

> According to the example in the xmlrules package-summary, adding a
> programmatic rule to a XML digester rules file should work like this:
>
> --- cut --
> <digester-rules>
>    <pattern value="root/foo">
>      <include class="BarRuleCreator"/>
>    </pattern>
>  </digester-rules>
> --- cut ---
>
> --- cut ---
> public class BarRuleCreator implements DigesterRulesSource {
>     public void getRules(Digester digester) {
>         digester.addObjectCreate("bar", "Bar");
>     }
> }
> --- cut ---
>
> In fact, it does not. One needs digester.addObjectCreate("/bar", "Bar");
>
> because of this bug:
>
> --- cut ---
> Index: 
> src/java/org/apache/commons/digester/xmlrules/DigesterRuleParser.java
> ===================================================================
> RCS file: /home/cvs/jakarta-commons/digester/src/java/org/apache/commons/
> digester/xmlrules/DigesterRuleParser.java,v
> retrieving revision 1.20
> diff -u -b -r1.20 DigesterRuleParser.java
> --- src/java/org/apache/commons/digester/xmlrules/DigesterRuleParser.java 
>       23 Oct 2003 20:06:09 -0000      1.20
> +++ src/java/org/apache/commons/digester/xmlrules/DigesterRuleParser.java 
>       26 Oct 2003 17:18:55 -0000
> @@ -447,7 +447,7 @@
>           * pass through to this object.
>           */
>          public RulesPrefixAdapter(String patternPrefix, Rules rules) {
> -            prefix = patternPrefix;
> +            prefix = patternPrefix + "/";
>              delegate = rules;
>          }
> --- cut ---
>
> Please apply. Finding this cost me most of my sunday. :-)
>
> 	Regards
> 		Henning
>
>
> --
> Dipl.-Inf. (Univ.) Henning P. Schmiedehausen          INTERMETA GmbH
> hps@intermeta.de        +49 9131 50 654 0   http://www.intermeta.de/
>
> Java, perl, Solaris, Linux, xSP Consulting, Web Services
> freelance consultant -- Jakarta Turbine Development  -- hero for hire
>
> "Dominate!! Dominate!! Eat your young and aggregate! I have grotty 
> silicon!"
>       -- AOL CD when played backwards  (User Friendly - 200-10-15)
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: commons-dev-help@jakarta.apache.org
>


---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org