Hi, On Wed, May 11, 2011 at 10:09 PM, Amila Maha Arachchi <[email protected]>wrote:
> > > On Wed, May 11, 2011 at 9:51 PM, Afkham Azeez <[email protected]> wrote: > >> Cool. That should work with replaceAll. > > > I am a little confused. Does this mean ok to go with *String.replace* ? > I guess so. Java API documentation says that replaceAll() will not give what we expect if the second argument contains backslashes or dollar signs. Thanks, Sadeep > >> >> 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%28java.lang.String,+java.lang.String%29> >>> 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 >> >> > > _______________________________________________ > 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
_______________________________________________ Carbon-dev mailing list [email protected] http://mail.wso2.org/cgi-bin/mailman/listinfo/carbon-dev
