[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