Cool. That should work with replaceAll.

On Wed, May 11, 2011 at 9:44 PM, Sadeep Jayasumana <[email protected]> wrote:

> Hi,
>
> Quoting from [1] - *Note that backslashes (\) and dollar signs ($) in the
> replacement string may cause the results to be different than if it were
> being treated as a literal replacement string; see Matcher.replaceAll. Use
> Matcher.quoteReplacement(java.lang.String) to suppress the special meaning
> of these characters, if desired.*
>
> [1] 
> http://download.oracle.com/javase/6/docs/api/java/lang/String.html#replaceAll(java.lang.String,
> java.lang.String)
>
>
> <http://download.oracle.com/javase/6/docs/api/java/lang/String.html#replaceAll(java.lang.String,+java.lang.String)>
> Thanks,
> Sadeep
>
>
> On Wed, May 11, 2011 at 9:40 PM, Amila Maha Arachchi <[email protected]>wrote:
>
>> 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
>>
>>
>
>
> --
> Sadeep Jayasumana
>
> Software Engineer
> WSO2 Inc.
> Email - [email protected]
> Mobile - +94 77 22 66 507
>



-- 
*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*
_______________________________________________
Carbon-dev mailing list
[email protected]
http://mail.wso2.org/cgi-bin/mailman/listinfo/carbon-dev

Reply via email to