You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cocoon.apache.org by Antonio Gallardo <ag...@agssa.net> on 2005/05/03 19:44:20 UTC

Re: Not changing things that work (was Re: svn commit: r165502 - /cocoon/trunk/src/java/org/apache/cocoon/transformation/TraxTransforme r.java)

On Mar, 3 de Mayo de 2005, 11:45, Sylvain Wallez dijo:
> Vadim Gritsenko wrote:
>
>> antonio@apache.org wrote:
>>
>>>
>>> Use BooleanUtils, use regexp for checking valid XSLT parameter names,
>>> fix docs.
>>>
>>> Modified:
>>> cocoon/trunk/src/java/org/apache/cocoon/transformation/TraxTransformer.java
>>>
>>> @@ -196,7 +199,10 @@
>>>
>>>      /** Exception that might occur during setConsumer */
>>>      private SAXException exceptionDuringSetConsumer;
>>> -    +
>>> +    /** Check if an expression is a valid XSLT Parameter Name **/
>>> +    private static final RE reValidXSLTParameterName = new
>>> RE("^[\\w][\\w\\d\\.-]*");
>>> +
>>>      /**
>>>       * Configure this transformer.
>>>       */
>>
>>
>> From RE Javadoc:
>>
>>  *    \w        Matches a "word" character (alphanumeric plus "_")
>>
>> \w includes numbers, so this RE is incorrect.
>>
>>
>>> @@ -483,26 +490,7 @@
>>>       * Test if the name is a valid parameter name for XSLT
>>>       */
>>>      static boolean isValidXSLTParameterName(String name) {
>>> -        if (name.length() == 0) {
>>> -            return false;
>>> -        }
>>> -
>>> -        char c = name.charAt(0);
>>> -        if (!(Character.isLetter(c) || c == '_')) {
>>> -            return false;
>>> -        }
>>> -
>>> -        for (int i = name.length()-1; i > 1; i--) {
>>> -            c = name.charAt(i);
>>> -            if (!(Character.isLetterOrDigit(c) ||
>>> -                c == '-' ||
>>> -                c == '_' ||
>>> -                c == '.')) {
>>> -                return false;
>>> -            }
>>> -        }
>>> -
>>> -        return true;
>>> +        return reValidXSLTParameterName.match(name);
>>>      }
>>>
>>>      /**
>>
>>
>> Given that org.apache.regexp.RE uses same test for \w:
>>
>>   ...
>>   (Character.isLetterOrDigit(c) || c == '_')
>>   ...
>>
>> And given that RE has more overhead, I wonder how many times slower
>> this new test is. What is improved, then? I don't think this snippet
>> had any bugs in it, and it was faster, so why not leave it as it is?
>
>
> Yes, why?

I just wanted to make the code more readable. I am reverting this now. Sorry.

Best Regards,

Antonio Gallardo

>
> Antonio, we know how much you love commons-lang, but really, why
> spending your and other's energy to add this additional dependency to
> existing code that has been running smoothly for years?
>
> If it ain't broken, don't fix it!
>
> Sylvain
>
> --
> Sylvain Wallez                        Anyware Technologies
> http://apache.org/~sylvain            http://anyware-tech.com
> Apache Software Foundation Member     Research & Technology Director
>