On Wed, May 11, 2011 at 9:51 PM, Afkham Azeez <az...@wso2.com> wrote:

> Cool. That should work with replaceAll.


I am a little confused. Does this mean ok to go with *String.replace* ?


>
> On Wed, May 11, 2011 at 9:44 PM, Sadeep Jayasumana <sad...@wso2.com>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%28java.lang.String,+java.lang.String%29>
>> Thanks,
>> Sadeep
>>
>>
>> On Wed, May 11, 2011 at 9:40 PM, Amila Maha Arachchi <ami...@wso2.com>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 <ami...@wso2.com>wrote:
>>>
>>>>
>>>>
>>>> On Wed, May 11, 2011 at 9:31 PM, Afkham Azeez <az...@wso2.com> 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 
>>>>> <ami...@wso2.com>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
>>>>>> Carbon-dev@wso2.org
>>>>>> 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: **az...@wso2.com* <az...@wso2.com>* 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
>>>>> stratos-...@wso2.org
>>>>> https://wso2.org/cgi-bin/mailman/listinfo/stratos-dev
>>>>>
>>>>>
>>>>
>>>
>>> _______________________________________________
>>> Carbon-dev mailing list
>>> Carbon-dev@wso2.org
>>> http://mail.wso2.org/cgi-bin/mailman/listinfo/carbon-dev
>>>
>>>
>>
>>
>> --
>> Sadeep Jayasumana
>>
>> Software Engineer
>> WSO2 Inc.
>> Email - sad...@wso2.com
>> 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: **az...@wso2.com* <az...@wso2.com>* 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
> Carbon-dev@wso2.org
> http://mail.wso2.org/cgi-bin/mailman/listinfo/carbon-dev
>
>
_______________________________________________
Carbon-dev mailing list
Carbon-dev@wso2.org
http://mail.wso2.org/cgi-bin/mailman/listinfo/carbon-dev

Reply via email to