[jboss-jira] [JBoss JIRA] Assigned: (JBRULES-586) DefaultExpander incorrectly strips leading and trailing spaces
Edson Tirelli (JIRA)
jira-events at lists.jboss.org
Thu Feb 15 15:31:30 EST 2007
[ http://jira.jboss.com/jira/browse/JBRULES-586?page=all ]
Edson Tirelli reassigned JBRULES-586:
-------------------------------------
Assignee: Edson Tirelli (was: Mark Proctor)
> DefaultExpander incorrectly strips leading and trailing spaces
> --------------------------------------------------------------
>
> Key: JBRULES-586
> URL: http://jira.jboss.com/jira/browse/JBRULES-586
> Project: JBoss Rules
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Components: Drl Parser/Builder
> Affects Versions: 3.0.5
> Reporter: Adam Lewandowski
> Assigned To: Edson Tirelli
>
> When using a DSL expander, token values with leading or trailing spaces get the spaces stripped when inserted into the target template. This causes the resulting rule definition to be incorrect.
> Example:
> DSL: [when]String is "{value}"=SomeFact(value=="{value}")
> Input string (note the trailing space): String is "blah "
> Expanded string (note the lack of a trailing space): SomeFact(value=="blah")
> The same thing occurs for leading spaces as well. Internal spaces are fine.
> Also interesting is that if there are more than one leading/trailing space, NLExpressionCompiler throws an IllegalArgumentException: Expression was not expandable: String is " blah"
> The problem seems to be in the org.drools.lang.dsl.template.Chunk class. It is stripping the leading/trailing spaces from values in the map populated by buildValueMap().
> Unit Test:
> import java.io.StringReader;
> import org.drools.lang.dsl.DefaultExpander;
> import junit.framework.TestCase;
> public class DroolsDslTemplateTest extends TestCase {
>
> private DefaultExpander expander;
> public void setUp() {
> String DSL = "[when]String is \"{value}\"=SomeFact(value==\"{value}\")";
> StringReader dslSrc = new StringReader(DSL);
> expander = new DefaultExpander(dslSrc);
> }
>
> public void testExpandNoSpaces() {
> String result = expander.expand("when", "String is \"blah\"");
> assertEquals("SomeFact(value==\"blah\")", result);
> }
> public void testExpandWithLeadingSpace() {
> String result = expander.expand("when", "String is \" blah\"");
> assertEquals("SomeFact(value==\" blah\")", result);
> }
> public void testExpandWithMultipleLeadingSpaces() {
> String result = expander.expand("when", "String is \" blah\"");
> assertEquals("SomeFact(value==\" blah\")", result);
> }
>
> public void testExpandWithTrailingSpace() {
> String result = expander.expand("when", "String is \" blah \"");
> assertEquals("SomeFact(value==\"blah \")", result);
> }
>
> public void testExpandWithMultipleTrailingSpaces() {
> String result = expander.expand("when", "String is \"blah \"");
> assertEquals("SomeFact(value==\"blah \")", result);
> }
>
> public void testExpandWithInternalSpace() {
> String result = expander.expand("when", "String is \"bl ah\"");
> assertEquals("SomeFact(value==\"bl ah\")", result);
> }
>
> public void testExpandWithMultipleInternalSpaces() {
> String result = expander.expand("when", "String is \"bl ah\"");
> assertEquals("SomeFact(value==\"bl ah\")", result);
> }
>
> }
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the jboss-jira
mailing list