Re: [lang] StrSubstitutor - a dollar sign before a variable
Gotcha! Now I can understand the escape character means: Ignore the following variable reference. Thank you so much for the explanation with a good solution. Cheers, Woonsan On Thu, Jul 23, 2015 at 2:42 PM, Anthony Brice anthonybr...@lateachiever.com wrote: Sorry, the second sentence in the first paragraph should read: When you change the default escape character, you don't need to use it _to_ get a dollar sign before a variable reference in your interpolated string. To explain a little more, consider what happens to $${amount} when you're using StrSubstitutor's default escape character. StrSubstitutor sees that you've got a variable reference (${amount}), and that you've got the escape character ($) before it, so it replaces $${amount} with ${amount}. Now consider what happens to $${amount} when you've set StrSubstitutor's escape character to something other than the default. StrSubstitutor sees the variable reference (${amount}), notes that the character ($) before the variable reference is _not_ the user-defined escape character, and so replaces ${amount} with the appropriate value form the map. Regards, Anthony Brice On Thu, Jul 23, 2015 at 11:24 AM, Anthony Brice anthonybr...@lateachiever.com wrote: The escape character just tells StrSubstitutor Ignore the following variable reference. When you change the default escape character, you don't need to use it get a dollar sign before a variable reference in your interpolated string. Try the following: @Test public void testReplaceEscapingDollarSign() { values.put(amount, 20.00); final StrSubstitutor sub = new StrSubstitutor(values); sub.setEscapeChar(''); String replaceTemplate = The ${animal} jumps over the ${target}.; String expectedResult = The ${animal} jumps over the lazy dog.; String replacedResult = sub.replace(replaceTemplate); assertEquals(expectedResult, replacedResult); replaceTemplate = The ${animal} paid $${amount} to jump over the ${target}.; expectedResult = The quick brown fox paid $20.00 to jump over the lazy dog.; replacedResult = sub.replace(replaceTemplate); assertEquals(expectedResult, replacedResult); } Regards, Anthony Brice On Thu, Jul 23, 2015 at 7:42 AM, Woonsan Ko woon...@apache.org wrote: Sorry, the example was incomplete. It should be like this: @Test public void testReplaceEscapingDollarSign() { values.put(amount, 20.00); final StrSubstitutor sub = new StrSubstitutor(values); sub.setEscapeChar(''); String replaceTemplate = The ${animal} jumps over the ${target}.; String expectedResult = The ${animal} jumps over the lazy dog.; String replacedResult = sub.replace(replaceTemplate); assertEquals(expectedResult, replacedResult); replaceTemplate = The ${animal} paid $${amount} to jump over the ${target}.; expectedResult = The quick brown fox paid $20.00 to jump over the lazy dog.; replacedResult = sub.replace(replaceTemplate); assertEquals(expectedResult, replacedResult); } The second assertion failed. So, it seems working in case of ${animal}, but not working in case of $${amount}. testReplaceEscapingDollarSign(org.apache.commons.lang3.text.StrSubstitutorTest) Time elapsed: 0.009 sec FAILURE! org.junit.ComparisonFailure: expected:...uick brown fox paid []$20.00 to jump over ... but was:...uick brown fox paid []$20.00 to jump over ... Regards, Woonsan On Thu, Jul 23, 2015 at 10:28 AM, Woonsan Ko woon...@apache.org wrote: Hi Anthony, Putting '$20.00' into the map is not an option in my use case, so I tried to use a different escape character. But it doesn't seem to be working either (another bug?): @Test public void testReplaceEscapingDollarSign() { values.put(amount, 20.00); final StrSubstitutor sub = new StrSubstitutor(values); sub.setEscapeChar(''); String replaceTemplate = The ${animal} jumps over the ${target}.; String expectedResult = The ${animal} jumps over the lazy dog.; String replacedResult = sub.replace(replaceTemplate); assertEquals(expectedResult, replacedResult); //... } It fails like this: org.junit.ComparisonFailure: expected:...uick brown fox paid []$20.00 to jump over ... but was:...uick brown fox paid []$20.00 to jump over ... at org.junit.Assert.assertEquals(Assert.java:115) at org.junit.Assert.assertEquals(Assert.java:144) at org.apache.commons.lang3.text.StrSubstitutorTest.testReplaceEscapingDollarSign(StrSubstitutorTest.java:182) I think I'd better file a bug regard to escape character handling. Regards, Woonsan On Wed, Jul 22, 2015 at 9:12 PM, Anthony Brice anthonybr...@lateachiever.com wrote: It's not a bug---that's a feature! :p From the javadoc: If
[dbcp] Abandon Connection - not Logging in standalone
Hello, I noticed that with Oracle drivers you cannot kill a busy connection by closing it (since close(), _getPC(), isOpen() and stmt.close() all will synchronize on the (busy) physical connection. I noticed this in a custom persistence layer, so I thought to check out if DBCP handles this situation. I have a test program here: https://gist.github.com/ecki/345ee08ac97820972fe7 First of all it does not log DBCP messages. I am not sure what is needed to get it going. As you can see in the output the deliberate debug() message is printed so the general LogFactory should be set up. When I run the program with acfg.setRemoveAbandonedTimeout(12) it suceeds, since the c3 is only idle for 10s. When I run it with (4) it will (so it seems) close the connection and I get a exception on next use. However I dont see a log message about the abandoned connection and the usage tracking. Ideas? A second thing, from the abandoned tracker I had the impression the usage is counted at the begin of exec. So if a execution takes 20s as in my case, it should be considered abandoned. But it seems not to be the case. Is it recognizing it is busy when the exec does not return? If this is the case, is there also a way to kill/destroy connections beeing used too long? Gruss Bernd - To unsubscribe, e-mail: user-unsubscr...@commons.apache.org For additional commands, e-mail: user-h...@commons.apache.org
Re: [lang] StrSubstitutor - a dollar sign before a variable
No problem! I'm happy to have helped. Happy substituting! Cheers, Anthony Brice On Thu, Jul 23, 2015 at 1:23 PM, Woonsan Ko woon...@apache.org wrote: Gotcha! Now I can understand the escape character means: Ignore the following variable reference. Thank you so much for the explanation with a good solution. Cheers, Woonsan On Thu, Jul 23, 2015 at 2:42 PM, Anthony Brice anthonybr...@lateachiever.com wrote: Sorry, the second sentence in the first paragraph should read: When you change the default escape character, you don't need to use it _to_ get a dollar sign before a variable reference in your interpolated string. To explain a little more, consider what happens to $${amount} when you're using StrSubstitutor's default escape character. StrSubstitutor sees that you've got a variable reference (${amount}), and that you've got the escape character ($) before it, so it replaces $${amount} with ${amount}. Now consider what happens to $${amount} when you've set StrSubstitutor's escape character to something other than the default. StrSubstitutor sees the variable reference (${amount}), notes that the character ($) before the variable reference is _not_ the user-defined escape character, and so replaces ${amount} with the appropriate value form the map. Regards, Anthony Brice On Thu, Jul 23, 2015 at 11:24 AM, Anthony Brice anthonybr...@lateachiever.com wrote: The escape character just tells StrSubstitutor Ignore the following variable reference. When you change the default escape character, you don't need to use it get a dollar sign before a variable reference in your interpolated string. Try the following: @Test public void testReplaceEscapingDollarSign() { values.put(amount, 20.00); final StrSubstitutor sub = new StrSubstitutor(values); sub.setEscapeChar(''); String replaceTemplate = The ${animal} jumps over the ${target}.; String expectedResult = The ${animal} jumps over the lazy dog.; String replacedResult = sub.replace(replaceTemplate); assertEquals(expectedResult, replacedResult); replaceTemplate = The ${animal} paid $${amount} to jump over the ${target}.; expectedResult = The quick brown fox paid $20.00 to jump over the lazy dog.; replacedResult = sub.replace(replaceTemplate); assertEquals(expectedResult, replacedResult); } Regards, Anthony Brice On Thu, Jul 23, 2015 at 7:42 AM, Woonsan Ko woon...@apache.org wrote: Sorry, the example was incomplete. It should be like this: @Test public void testReplaceEscapingDollarSign() { values.put(amount, 20.00); final StrSubstitutor sub = new StrSubstitutor(values); sub.setEscapeChar(''); String replaceTemplate = The ${animal} jumps over the ${target}.; String expectedResult = The ${animal} jumps over the lazy dog.; String replacedResult = sub.replace(replaceTemplate); assertEquals(expectedResult, replacedResult); replaceTemplate = The ${animal} paid $${amount} to jump over the ${target}.; expectedResult = The quick brown fox paid $20.00 to jump over the lazy dog.; replacedResult = sub.replace(replaceTemplate); assertEquals(expectedResult, replacedResult); } The second assertion failed. So, it seems working in case of ${animal}, but not working in case of $${amount}. testReplaceEscapingDollarSign(org.apache.commons.lang3.text.StrSubstitutorTest) Time elapsed: 0.009 sec FAILURE! org.junit.ComparisonFailure: expected:...uick brown fox paid []$20.00 to jump over ... but was:...uick brown fox paid []$20.00 to jump over ... Regards, Woonsan On Thu, Jul 23, 2015 at 10:28 AM, Woonsan Ko woon...@apache.org wrote: Hi Anthony, Putting '$20.00' into the map is not an option in my use case, so I tried to use a different escape character. But it doesn't seem to be working either (another bug?): @Test public void testReplaceEscapingDollarSign() { values.put(amount, 20.00); final StrSubstitutor sub = new StrSubstitutor(values); sub.setEscapeChar(''); String replaceTemplate = The ${animal} jumps over the ${target}.; String expectedResult = The ${animal} jumps over the lazy dog.; String replacedResult = sub.replace(replaceTemplate); assertEquals(expectedResult, replacedResult); //... } It fails like this: org.junit.ComparisonFailure: expected:...uick brown fox paid []$20.00 to jump over ... but was:...uick brown fox paid []$20.00 to jump over ... at org.junit.Assert.assertEquals(Assert.java:115) at org.junit.Assert.assertEquals(Assert.java:144) at
Re: [lang] StrSubstitutor - a dollar sign before a variable
Hi Anthony, Putting '$20.00' into the map is not an option in my use case, so I tried to use a different escape character. But it doesn't seem to be working either (another bug?): @Test public void testReplaceEscapingDollarSign() { values.put(amount, 20.00); final StrSubstitutor sub = new StrSubstitutor(values); sub.setEscapeChar(''); String replaceTemplate = The ${animal} jumps over the ${target}.; String expectedResult = The ${animal} jumps over the lazy dog.; String replacedResult = sub.replace(replaceTemplate); assertEquals(expectedResult, replacedResult); //... } It fails like this: org.junit.ComparisonFailure: expected:...uick brown fox paid []$20.00 to jump over ... but was:...uick brown fox paid []$20.00 to jump over ... at org.junit.Assert.assertEquals(Assert.java:115) at org.junit.Assert.assertEquals(Assert.java:144) at org.apache.commons.lang3.text.StrSubstitutorTest.testReplaceEscapingDollarSign(StrSubstitutorTest.java:182) I think I'd better file a bug regard to escape character handling. Regards, Woonsan On Wed, Jul 22, 2015 at 9:12 PM, Anthony Brice anthonybr...@lateachiever.com wrote: It's not a bug---that's a feature! :p From the javadoc: If this character ['$'] is placed before a variable reference, this reference is ignored and won't be replaced. So even when you use three dollar signs, you still have a variable reference (${amount}) with the escape character placed before it, thus the variable reference will not be replaced. To achieve your desired effect, I think you either have to put the dollar sign in the mapping (e.g., values.put(amount, $20.00), use different delimiters, or just set a different escape character. Regards, Anthony Brice On Wed, Jul 22, 2015 at 2:50 PM, Woonsan Ko woon...@apache.org wrote: Hi there, I tried to use the following, expecting ...ick brown fox paid $20.00 to jump over the la…: // In org.apache.commons.lang3.text.StrSubstitutorTest.java locally // after cloning https://github.com/woonsan/commons-lang. @Test public void testReplaceEscapingDollarSign() { values.put(amount, 20.00); doTestReplace(The quick brown fox paid $20.00 to jump over the lazy dog., The ${animal} paid $$${amount} to jump over the ${target}., true); } (I put double dollar signs like $$${amount} because $ is the default escape character.) But, the result was:...ick brown fox paid $${amount} to jump over the la…. Is it a bug or did I miss something? Regards, Woonsan - To unsubscribe, e-mail: user-unsubscr...@commons.apache.org For additional commands, e-mail: user-h...@commons.apache.org - To unsubscribe, e-mail: user-unsubscr...@commons.apache.org For additional commands, e-mail: user-h...@commons.apache.org
Re: [lang] StrSubstitutor - a dollar sign before a variable
Sorry, the example was incomplete. It should be like this: @Test public void testReplaceEscapingDollarSign() { values.put(amount, 20.00); final StrSubstitutor sub = new StrSubstitutor(values); sub.setEscapeChar(''); String replaceTemplate = The ${animal} jumps over the ${target}.; String expectedResult = The ${animal} jumps over the lazy dog.; String replacedResult = sub.replace(replaceTemplate); assertEquals(expectedResult, replacedResult); replaceTemplate = The ${animal} paid $${amount} to jump over the ${target}.; expectedResult = The quick brown fox paid $20.00 to jump over the lazy dog.; replacedResult = sub.replace(replaceTemplate); assertEquals(expectedResult, replacedResult); } The second assertion failed. So, it seems working in case of ${animal}, but not working in case of $${amount}. testReplaceEscapingDollarSign(org.apache.commons.lang3.text.StrSubstitutorTest) Time elapsed: 0.009 sec FAILURE! org.junit.ComparisonFailure: expected:...uick brown fox paid []$20.00 to jump over ... but was:...uick brown fox paid []$20.00 to jump over ... Regards, Woonsan On Thu, Jul 23, 2015 at 10:28 AM, Woonsan Ko woon...@apache.org wrote: Hi Anthony, Putting '$20.00' into the map is not an option in my use case, so I tried to use a different escape character. But it doesn't seem to be working either (another bug?): @Test public void testReplaceEscapingDollarSign() { values.put(amount, 20.00); final StrSubstitutor sub = new StrSubstitutor(values); sub.setEscapeChar(''); String replaceTemplate = The ${animal} jumps over the ${target}.; String expectedResult = The ${animal} jumps over the lazy dog.; String replacedResult = sub.replace(replaceTemplate); assertEquals(expectedResult, replacedResult); //... } It fails like this: org.junit.ComparisonFailure: expected:...uick brown fox paid []$20.00 to jump over ... but was:...uick brown fox paid []$20.00 to jump over ... at org.junit.Assert.assertEquals(Assert.java:115) at org.junit.Assert.assertEquals(Assert.java:144) at org.apache.commons.lang3.text.StrSubstitutorTest.testReplaceEscapingDollarSign(StrSubstitutorTest.java:182) I think I'd better file a bug regard to escape character handling. Regards, Woonsan On Wed, Jul 22, 2015 at 9:12 PM, Anthony Brice anthonybr...@lateachiever.com wrote: It's not a bug---that's a feature! :p From the javadoc: If this character ['$'] is placed before a variable reference, this reference is ignored and won't be replaced. So even when you use three dollar signs, you still have a variable reference (${amount}) with the escape character placed before it, thus the variable reference will not be replaced. To achieve your desired effect, I think you either have to put the dollar sign in the mapping (e.g., values.put(amount, $20.00), use different delimiters, or just set a different escape character. Regards, Anthony Brice On Wed, Jul 22, 2015 at 2:50 PM, Woonsan Ko woon...@apache.org wrote: Hi there, I tried to use the following, expecting ...ick brown fox paid $20.00 to jump over the la…: // In org.apache.commons.lang3.text.StrSubstitutorTest.java locally // after cloning https://github.com/woonsan/commons-lang. @Test public void testReplaceEscapingDollarSign() { values.put(amount, 20.00); doTestReplace(The quick brown fox paid $20.00 to jump over the lazy dog., The ${animal} paid $$${amount} to jump over the ${target}., true); } (I put double dollar signs like $$${amount} because $ is the default escape character.) But, the result was:...ick brown fox paid $${amount} to jump over the la…. Is it a bug or did I miss something? Regards, Woonsan - To unsubscribe, e-mail: user-unsubscr...@commons.apache.org For additional commands, e-mail: user-h...@commons.apache.org - To unsubscribe, e-mail: user-unsubscr...@commons.apache.org For additional commands, e-mail: user-h...@commons.apache.org
Re: [lang] StrSubstitutor - a dollar sign before a variable
On Thu, Jul 23, 2015 at 4:21 AM, Jörg Schaible joerg.schai...@swisspost.com wrote: Hi Woonsan, Woonsan Ko wrote: Hi there, I tried to use the following, expecting ...ick brown fox paid $20.00 to jump over the la…: // In org.apache.commons.lang3.text.StrSubstitutorTest.java locally // after cloning https://github.com/woonsan/commons-lang. @Test public void testReplaceEscapingDollarSign() { values.put(amount, 20.00); doTestReplace(The quick brown fox paid $20.00 to jump over the lazy dog., The ${animal} paid $$${amount} to jump over the ${target}., true); } (I put double dollar signs like $$${amount} because $ is the default escape character.) But, the result was:...ick brown fox paid $${amount} to jump over the la…. Is it a bug or did I miss something? I'd call it a bug. You escaped the first dollar sign properly. I think so, too. I've just filed a bug: - https://issues.apache.org/jira/browse/LANG-1158 Cheers, Woonsan Cheers, Jörg - To unsubscribe, e-mail: user-unsubscr...@commons.apache.org For additional commands, e-mail: user-h...@commons.apache.org - To unsubscribe, e-mail: user-unsubscr...@commons.apache.org For additional commands, e-mail: user-h...@commons.apache.org
Re: [lang] StrSubstitutor - a dollar sign before a variable
The escape character just tells StrSubstitutor Ignore the following variable reference. When you change the default escape character, you don't need to use it get a dollar sign before a variable reference in your interpolated string. Try the following: @Test public void testReplaceEscapingDollarSign() { values.put(amount, 20.00); final StrSubstitutor sub = new StrSubstitutor(values); sub.setEscapeChar(''); String replaceTemplate = The ${animal} jumps over the ${target}.; String expectedResult = The ${animal} jumps over the lazy dog.; String replacedResult = sub.replace(replaceTemplate); assertEquals(expectedResult, replacedResult); replaceTemplate = The ${animal} paid $${amount} to jump over the ${target}.; expectedResult = The quick brown fox paid $20.00 to jump over the lazy dog.; replacedResult = sub.replace(replaceTemplate); assertEquals(expectedResult, replacedResult); } Regards, Anthony Brice On Thu, Jul 23, 2015 at 7:42 AM, Woonsan Ko woon...@apache.org wrote: Sorry, the example was incomplete. It should be like this: @Test public void testReplaceEscapingDollarSign() { values.put(amount, 20.00); final StrSubstitutor sub = new StrSubstitutor(values); sub.setEscapeChar(''); String replaceTemplate = The ${animal} jumps over the ${target}.; String expectedResult = The ${animal} jumps over the lazy dog.; String replacedResult = sub.replace(replaceTemplate); assertEquals(expectedResult, replacedResult); replaceTemplate = The ${animal} paid $${amount} to jump over the ${target}.; expectedResult = The quick brown fox paid $20.00 to jump over the lazy dog.; replacedResult = sub.replace(replaceTemplate); assertEquals(expectedResult, replacedResult); } The second assertion failed. So, it seems working in case of ${animal}, but not working in case of $${amount}. testReplaceEscapingDollarSign(org.apache.commons.lang3.text.StrSubstitutorTest) Time elapsed: 0.009 sec FAILURE! org.junit.ComparisonFailure: expected:...uick brown fox paid []$20.00 to jump over ... but was:...uick brown fox paid []$20.00 to jump over ... Regards, Woonsan On Thu, Jul 23, 2015 at 10:28 AM, Woonsan Ko woon...@apache.org wrote: Hi Anthony, Putting '$20.00' into the map is not an option in my use case, so I tried to use a different escape character. But it doesn't seem to be working either (another bug?): @Test public void testReplaceEscapingDollarSign() { values.put(amount, 20.00); final StrSubstitutor sub = new StrSubstitutor(values); sub.setEscapeChar(''); String replaceTemplate = The ${animal} jumps over the ${target}.; String expectedResult = The ${animal} jumps over the lazy dog.; String replacedResult = sub.replace(replaceTemplate); assertEquals(expectedResult, replacedResult); //... } It fails like this: org.junit.ComparisonFailure: expected:...uick brown fox paid []$20.00 to jump over ... but was:...uick brown fox paid []$20.00 to jump over ... at org.junit.Assert.assertEquals(Assert.java:115) at org.junit.Assert.assertEquals(Assert.java:144) at org.apache.commons.lang3.text.StrSubstitutorTest.testReplaceEscapingDollarSign(StrSubstitutorTest.java:182) I think I'd better file a bug regard to escape character handling. Regards, Woonsan On Wed, Jul 22, 2015 at 9:12 PM, Anthony Brice anthonybr...@lateachiever.com wrote: It's not a bug---that's a feature! :p From the javadoc: If this character ['$'] is placed before a variable reference, this reference is ignored and won't be replaced. So even when you use three dollar signs, you still have a variable reference (${amount}) with the escape character placed before it, thus the variable reference will not be replaced. To achieve your desired effect, I think you either have to put the dollar sign in the mapping (e.g., values.put(amount, $20.00), use different delimiters, or just set a different escape character. Regards, Anthony Brice On Wed, Jul 22, 2015 at 2:50 PM, Woonsan Ko woon...@apache.org wrote: Hi there, I tried to use the following, expecting ...ick brown fox paid $20.00 to jump over the la…: // In org.apache.commons.lang3.text.StrSubstitutorTest.java locally // after cloning https://github.com/woonsan/commons-lang. @Test public void testReplaceEscapingDollarSign() { values.put(amount, 20.00); doTestReplace(The quick brown fox paid $20.00 to jump over the lazy dog., The ${animal} paid $$${amount} to jump over the ${target}., true); } (I put double dollar signs like $$${amount} because $ is the default escape character.) But, the result was:...ick
Re: [lang] StrSubstitutor - a dollar sign before a variable
Hi Woonsan, Woonsan Ko wrote: Hi there, I tried to use the following, expecting ...ick brown fox paid $20.00 to jump over the la…: // In org.apache.commons.lang3.text.StrSubstitutorTest.java locally // after cloning https://github.com/woonsan/commons-lang. @Test public void testReplaceEscapingDollarSign() { values.put(amount, 20.00); doTestReplace(The quick brown fox paid $20.00 to jump over the lazy dog., The ${animal} paid $$${amount} to jump over the ${target}., true); } (I put double dollar signs like $$${amount} because $ is the default escape character.) But, the result was:...ick brown fox paid $${amount} to jump over the la…. Is it a bug or did I miss something? I'd call it a bug. You escaped the first dollar sign properly. Cheers, Jörg - To unsubscribe, e-mail: user-unsubscr...@commons.apache.org For additional commands, e-mail: user-h...@commons.apache.org