You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "ASF GitHub Bot (JIRA)" <ji...@apache.org> on 2014/04/13 16:07:15 UTC

[jira] [Commented] (LANG-948) Exception while using ExtendedMessageFormat and escaping braces

    [ https://issues.apache.org/jira/browse/LANG-948?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13967824#comment-13967824 ] 

ASF GitHub Bot commented on LANG-948:
-------------------------------------

GitHub user Andrey-Khobnya opened a pull request:

    https://github.com/apache/commons-lang/pull/19

    Fix LANG-948

    Hi all!
    This is fix for bug LANG-948.
    
    Changes with explanations:
    1) Method ```ExtendedMessageFormat.appendQuotedString()``` returned when finds first quote character. This is obviously wrong because quoted string start with quote character and method must consume whole quoted string. I added handling of first quote character at the beginning of method. Also, it doesn't make sense to handle escaped quotes because ```super.applyPattern(stripCustom.toString())``` will called below in ```applyPattern()```. Thus, last argument should be ```false``` when calling ```appendQuotedString()```.
    
    2) Quoted string must start with quote character in ```appendQuotedString()```. And at this moment method is used this way. I added assertion to check and document this.
    
    3) Thus, method ```appendQuotedString()``` is called with last argument always ```false```. It doesn't make sense to handle escaped quotes in ```appendQuotedString()``` because they will be handled in ```super.applyPattern()```. Thus, I deleted this parameter and code for handling escaped quotes.

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/Andrey-Khobnya/commons-lang fix-948

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/commons-lang/pull/19.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #19
    
----
commit 86e64df6ce7e879c5f608aa7276c251377574f56
Author: Andrey Khobnya <an...@khobnya.me>
Date:   2014-04-13T12:36:07Z

    Fix LANG-948

commit 0f9222d5cccbe27fbda5ab9b97b231162e4b089b
Author: Andrey Khobnya <an...@khobnya.me>
Date:   2014-04-13T12:42:02Z

    Add assertion in ExtendedMessageFormat.appendQuotedString() to check and
    document proper usage

commit 4d372f3ce65087c8863332c74c2563a165d7aa12
Author: Andrey Khobnya <an...@khobnya.me>
Date:   2014-04-13T12:49:28Z

    It doesn't make sense to handle escaped quotes in
    ExtendedMessageFormat.appendQuotedString() because they will be handled
    in super.applyPattern()

----


> Exception while using ExtendedMessageFormat and escaping braces
> ---------------------------------------------------------------
>
>                 Key: LANG-948
>                 URL: https://issues.apache.org/jira/browse/LANG-948
>             Project: Commons Lang
>          Issue Type: Bug
>          Components: lang.text.*
>    Affects Versions: 3.2, 3.2.1
>            Reporter: Nicolò Chieffo
>             Fix For: Patch Needed
>
>         Attachments: TestExtendedMessageFormat.java, TestExtendedMessageFormat2.java
>
>
> Exception while trying to format a string containing escaped braces
> {code}
> Exception in thread "main" java.lang.IllegalArgumentException: Invalid format argument index at position 7: }
> 	at org.apache.commons.lang3.text.ExtendedMessageFormat.readArgumentIndex(ExtendedMessageFormat.java:357)
> 	at org.apache.commons.lang3.text.ExtendedMessageFormat.applyPattern(ExtendedMessageFormat.java:167)
> 	at org.apache.commons.lang3.text.ExtendedMessageFormat.<init>(ExtendedMessageFormat.java:128)
> 	at org.apache.commons.lang3.text.ExtendedMessageFormat.<init>(ExtendedMessageFormat.java:113)
> 	at test.TestExtendedMessageFormat.main(TestExtendedMessageFormat.java:16)
> {code}
> I will attach a source



--
This message was sent by Atlassian JIRA
(v6.2#6252)