[ 
https://issues.apache.org/jira/browse/LANG-875?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joanne Polsky updated LANG-875:
-------------------------------

    Attachment: LANG-875-moretests1.patch

Hi Seth,

I've added another patch, LANG-875-moretests1.patch, with those additional 
tests that you mentioned.

The code is working as designed but maybe it's not consistent with the other 
methods.

I was treating null as empty string.  Since all non empty strings start/end 
with empty string technically the return result will simply be the same string 
supplied.  These methods are essentially useless if someone puts empty or null 
strings in the list of suffixes/prefixes. For instance,
appendIfMissing("file", ".txt", new CharSequence[]{null}) = "file"

I was looking at endsWith method and it seems like they don't treat null and 
empty string the same:

assertFalse("endsWith(FOOBAR, null)", StringUtils.endsWith(FOOBAR, 
(String)null));
assertTrue("endsWith(FOOBAR, \"\")",  StringUtils.endsWith(FOOBAR, ""));

That change could involve simply falling back to whatever endsWith returns -

Replacing:
7125                 if (isEmpty(s) || endsWith(str, s, ignoreCase)) {

With:
7125                 if (endsWith(str, s, ignoreCase)) {

Let me know what you think?

                
> StringUtils: Include methods for appending suffix or prepending a prefix if 
> not already present
> -----------------------------------------------------------------------------------------------
>
>                 Key: LANG-875
>                 URL: https://issues.apache.org/jira/browse/LANG-875
>             Project: Commons Lang
>          Issue Type: Improvement
>          Components: lang.*
>    Affects Versions: 3.1
>            Reporter: Joanne Polsky
>            Priority: Minor
>             Fix For: 3.2
>
>         Attachments: LANG-875-moretests1.patch, LANG-875-noany.patch, 
> LANG-875.patch
>
>
> StringUtils has various methods to checking and removing a substring from the 
> start/end of a string but nothing for appending.  These methods will append a 
> suffix to the end or prepend a prefix to the start of the string if not 
> already present.
> The methods would include:
> - appendIfMissing
> - appendIfMissingAny
> - appendIfMissingIgnoreCase
> - appendIfMissingAnyIgnoreCase
> - prependIfMissing
> - prependIfMissingAny
> - prependIfMissingIgnoreCase
> - prependIfMissingAnyIgnoreCase

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to