Found this in the internet.

http://www.velocityreviews.com/forums/t295371-string-replaceall-and-regex-question.html

On Wed, May 11, 2011 at 9:39 PM, Amila Maha Arachchi <[email protected]>wrote:

>
>
> On Wed, May 11, 2011 at 9:31 PM, Afkham Azeez <[email protected]> wrote:
>
>> replaceAll takes a regex as the first parameter. The second parameter is
>> just a normal String. So, unless the key contains special characters, this
>> cannot fail. Also, the replace method takes two characters as parameters, or
>> 2 CharSequences. So, replace & replaceAll have different behaviors.
>
>
> This failed when the second string has special characters.
>
>>
>>
>> On Wed, May 11, 2011 at 9:19 PM, Amila Maha Arachchi <[email protected]>wrote:
>>
>>> Hi,
>>>
>>> Theres this code segment in org.wso2.carbon.email.sender component.
>>>
>>> public static String replacePlaceHolders(String text, Map<String, String>
>>> userParameters) {
>>>         if (userParameters != null) {
>>>             for (Map.Entry<String, String> entry :
>>> userParameters.entrySet()) {
>>>                 String key = entry.getKey();
>>>                 *text = text.replaceAll("\\{" + key + "\\}",
>>> entry.getValue());*
>>>             }
>>>         }
>>>         return text;
>>>     }
>>>
>>>
>>> Above String.replaceAll() method throws exceptions when there are special
>>> characters in the string which is being replaced with. i.e. In the above
>>> sample it is entry.getValue(). An example is the $ sign. This can be avoided
>>> by using \\$. But it is a headache.
>>>
>>
>> Can you give us an example for key and entryValue, and if possible the
>> exception stacktrace?
>>
>
> key: subscription-charges
> entryValues: Multitenancy Medium $50
>
> Here is the stacktrace.
>
> [2011-05-11 19:56:42,999] ERROR
> {org.wso2.carbon.billing.core.handlers.EmailSendingHandler} -  Error in
> sending the bill for the customer. customer: d.com, invoice id:19
> java.lang.IndexOutOfBoundsException: No group 5   *<== Here, it breaks at
> $50. Thats why the 5 is there.If the values was $10, it would say No group
> 1.*
>     at java.util.regex.Matcher.group(Matcher.java:470)
>     at java.util.regex.Matcher.appendReplacement(Matcher.java:737)
>     at java.util.regex.Matcher.replaceAll(Matcher.java:813)
>     at java.lang.String.replaceAll(String.java:2189)
>     at
> org.wso2.carbon.email.sender.util.Util.replacePlaceHolders(Util.java:97)
>     at
> org.wso2.carbon.email.sender.api.EmailSender.getMessageBody(EmailSender.java:106)
>     at
> org.wso2.carbon.email.sender.api.EmailSender.sendEmail(EmailSender.java:55)
>     at
> org.wso2.carbon.billing.core.handlers.EmailSendingHandler.execute(EmailSendingHandler.java:82)
>     at
> org.wso2.carbon.billing.core.BillingEngine.generateBill(BillingEngine.java:77)
>     at
> org.wso2.carbon.billing.core.BillingEngine.generateBill(BillingEngine.java:59)
>     at
> org.wso2.carbon.billing.core.scheduler.BillingJob.execute(BillingJob.java:42)
>     at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
>     at
> org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:529)
>
>
>>
>>
>>>
>>> Instead, String.replace() can be used and* it too replaces all the
>>> occurrences* of the string being replaced. i.e. We can use
>>>
>>> *text = text.replace("{" + key + "}", entry.getValue());
>>>
>>> *Therefore, is it ok that I change the above method with the latter
>>> mentioned one.
>>>
>>> Thanks,
>>> AmilaM.
>>> *
>>> *
>>> _______________________________________________
>>> Carbon-dev mailing list
>>> [email protected]
>>> http://mail.wso2.org/cgi-bin/mailman/listinfo/carbon-dev
>>>
>>>
>>
>>
>> --
>> *Afkham Azeez*
>> Director of Architecture; WSO2, Inc.; http://wso2.com
>> Member; Apache Software Foundation; http://www.apache.org/
>> * <http://www.apache.org/>**
>> email: **[email protected]* <[email protected]>* cell: +94 77 3320919
>> blog: **http://blog.afkham.org* <http://blog.afkham.org>*
>> twitter: **http://twitter.com/afkham_azeez*<http://twitter.com/afkham_azeez>
>> *
>> linked-in: **http://lk.linkedin.com/in/afkhamazeez*
>> *
>> *
>> *Lean . Enterprise . Middleware*
>>
>>
>> _______________________________________________
>> Stratos-dev mailing list
>> [email protected]
>> https://wso2.org/cgi-bin/mailman/listinfo/stratos-dev
>>
>>
>
_______________________________________________
Carbon-dev mailing list
[email protected]
http://mail.wso2.org/cgi-bin/mailman/listinfo/carbon-dev

Reply via email to