commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Phil Steitz" <p...@steitz.com>
Subject Re: [lang][PROPOSAL] How to best address Bug 25454
Date Sat, 13 Dec 2003 20:34:18 GMT
Gary Gregory wrote:
> Hello [lang],
> 
> Reference: http://nagoya.apache.org/bugzilla/show_bug.cgi?id=25454
> 
> Here is the pickle: 
> 
> CharSetUtils.translate(String,String,String) is deprecated in favor of
> StringUtils.replaceChars(String,String,String) but their behaviors are
> different. 
> 
> The choices as I see them are (compatibility issues noted are with lang
> /2.0/):
> 
> (1) Make StringUtils.replaceChars exactly like CharSetUtils.translate. 
> Pro: Backwards compatible with the Javadoc in CharSetUtils.translate.
> Con: Not Backwards compatible with the current StringUtils.replaceChars.
> 
> (2) Do (1) and add a new function ("replaceChars2" for the sake of this
> description) in StringUtils to do what replaceChars does now.
> Pro: Backwards compatible with the Javadoc in CharSetUtils.translate.
> Pro: Backwards compatible with the current StringUtils.replaceChars, it has
> not changed.
> Con: StringUtils now has 2 functions, replaceChars and "replaceChars2", do
> we need both?
> 
> (3) Point the Javadoc for the deprecated CharSetUtils.translate to a new
> StringUtils function replaceChars2.
> Pro: Backwards compatible with the current StringUtils.replaceChars, it has
> not changed.
> Con: Well... in theory, calls sites that have followed the deprecated
> instructions now will now be "incorrect" and will have to be changed again.
> 
> (4) "un-deprecate" CharSetUtils.translate(String,String,String) and say that
> both methods do different jobs.
> 
> Opinions please?
> 
> Thanks,
> Gary
>  

The rationale for deprecating CharSetUtils.translate() and the intended 
behavior of StringUtils.replaceChars() can be found here:

http://nagoya.apache.org/eyebrowse/ReadMsg?listName=commons-dev@jakarta.apache.org&msgId=785148


The example in the bug report looks like a bug to me, which should be 
fixed. I doubt seriously that anyone is relying on the following kind of 
bugged behavior:

StringUtils.replaceChars("abc", "abc", "cba") = "aba"

This results from the string being modified and re-searched in a loop over 
the search characters (so multiple "translations" may be applied, 
depending on the order of characters in the search string).

As long as the search and replace character strings have the same length, 
StringUtils.replaceChars() *should* produce the same results as 
CharSetUtils.translate().

I suggest, therefore

(5) Fix the bug in StringUtils.replaceChars() and improve the javadoc for 
this method.


Phil


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


Mime
View raw message