[jboss-jira] [JBoss JIRA] (DROOLS-4358) line separators in CONDITION column in spreadsheet are escaped

Toshiya Kobayashi (Jira) issues at jboss.org
Thu Jul 25 23:29:00 EDT 2019


    [ https://issues.jboss.org/browse/DROOLS-4358?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13763608#comment-13763608 ] 

Toshiya Kobayashi edited comment on DROOLS-4358 at 7/25/19 11:28 PM:
---------------------------------------------------------------------

Attached multilinesInCellsTest.zip which tests variations of this issue (run 'mvn test').  SpreadsheetCompiler generates DRL like this:
{noformat}
package com.redhat.example.business;
//generated from Decision Table
import org.drools.decisiontable.Person;
// rule values at C12, header at C7
rule "multiple lines in action_12"
	no-loop true
	when
		$fact:Person(name == "John",\nage >= 20)
	then
		modify($fact){
 setAge(30),
 setName(xxxx");
}
		System.out.println("okay");\nSystem.out.println("great");
System.out.println("  **  " +drools.getRule().getName() + ", $fact = " + $fact);
end
{noformat}

Expected DRL is:
{noformat}
package com.redhat.example.business;
//generated from Decision Table
import org.drools.decisiontable.Person;
// rule values at C12, header at C7
rule "multiple lines in action_12"
	no-loop true
	when
		$fact:Person(name == "John",age >= 20)
	then
		modify($fact){
 setAge(30),
 setName("ssss\nxxxx");
}
		System.out.println("okay");System.out.println("great");
System.out.println("  **  " +drools.getRule().getName() + ", $fact = " + $fact);
end
{noformat}



was (Author: tkobayashi):
Attached multilinesInConditionTest.zip which tests variations of this issue (run 'mvn test').  SpreadsheetCompiler generates DRL like this:
{noformat}
package com.redhat.example.business;
//generated from Decision Table
import org.drools.decisiontable.Person;
// rule values at C12, header at C7
rule "multiple lines in action_12"
	no-loop true
	when
		$fact:Person(name == "John",\nage >= 20)
	then
		modify($fact){
 setAge(30),
 setName(xxxx");
}
		System.out.println("okay");\nSystem.out.println("great");
System.out.println("  **  " +drools.getRule().getName() + ", $fact = " + $fact);
end
{noformat}

Expected DRL is:
{noformat}
package com.redhat.example.business;
//generated from Decision Table
import org.drools.decisiontable.Person;
// rule values at C12, header at C7
rule "multiple lines in action_12"
	no-loop true
	when
		$fact:Person(name == "John",age >= 20)
	then
		modify($fact){
 setAge(30),
 setName("ssss\nxxxx");
}
		System.out.println("okay");System.out.println("great");
System.out.println("  **  " +drools.getRule().getName() + ", $fact = " + $fact);
end
{noformat}


> line separators in CONDITION column  in spreadsheet are escaped
> ---------------------------------------------------------------
>
>                 Key: DROOLS-4358
>                 URL: https://issues.jboss.org/browse/DROOLS-4358
>             Project: Drools
>          Issue Type: Bug
>          Components: decision tables
>    Affects Versions: 7.24.0.Final
>            Reporter: Hiroko Miura
>            Assignee: Mario Fusco
>            Priority: Major
>              Labels: support
>         Attachments: multilinesInCellsTest.zip, multilinesInConditionTest.zip
>
>
> If there are several lines in a cell of CONDITION(LHS), line separators are escaped, and results in  build failure.
> Output from SpredSheetCompiler:
> {noformat}
> rule "multiple lines in action_12"
>     when
>         $fact:Person(name == "John",\nage >= 20)
>     then
>   ...
> end
> {noformat}
> Error when building:
> {noformat}
> java.lang.AssertionError: [7,30]: [ERR 101] Line 7:30 no viable alternative at input '\' in rule "multiple lines in action_12"
> [0,0]: Parser returned a null Package
> {noformat}
> Escaping should be done only for literal String?



--
This message was sent by Atlassian Jira
(v7.12.1#712002)



More information about the jboss-jira mailing list