Hi,<br><br>I had a quick look, we make extensive use of String.startsWith(...) to parse the template. Indenting stuff isn't going to help that - unless we change to trim the String first.<br><br>Everybody is busy something crazy refactoring the world for 6.0... I suspect it's unlikely any of the core team will fix this anytime soon.. it could be the perfect opportunity for you to submit a simple Pull Request with the fix.<br>
<br>With kind regards,<br><br>Mike<br><br><div class="gmail_quote">On 13 December 2012 15:56, magnusv <span dir="ltr"><<a href="mailto:magnus.vojbacke@digitalroute.com" target="_blank">magnus.vojbacke@digitalroute.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Drools 5.5.0<br>
<br>
Indenting the "template header" or "rule" keywords in a template file will<br>
cause exceptions on expansion. I believe it might be related to this old<br>
JIRA issue: <a href="https://issues.jboss.org/browse/JBRULES-2786" target="_blank">https://issues.jboss.org/browse/JBRULES-2786</a><br>
<br>
"DecisionTableParseException" and "NullPointerException" are thrown. See<br>
example code and related stack traces below.<br>
<br>
<br>
Is this a bug in drools or is the template formatting intended to be this<br>
strict? Or am I doing something else wrong?<br>
<br>
<br>
=====================<br>
Indented template header:<br>
" template header<br>
age<br>
type<br>
log"<br>
<br>
Gives the exception:<br>
org.drools.template.parser.DecisionTableParseException: Missing header<br>
at<br>
org.drools.template.parser.DefaultTemplateContainer.parseTemplate(DefaultTemplateContainer.java:87)<br>
at<br>
org.drools.template.parser.DefaultTemplateContainer.<init>(DefaultTemplateContainer.java:47)<br>
at<br>
org.drools.decisiontable.ExternalSpreadsheetCompiler.compile(ExternalSpreadsheetCompiler.java:97)<br>
<br>
=====================<br>
Indented rule keyword:<br>
<br>
" rule "Cheese fans_@{row.rowNumber}"<br>
when<br>
Person(age == @{age})"<br>
<br>
Gives the exception:<br>
java.lang.NullPointerException<br>
at<br>
org.drools.template.parser.DefaultTemplateColumn.createCellCondition(DefaultTemplateColumn.java:67)<br>
at<br>
org.drools.template.parser.DefaultTemplateColumn.addCondition(DefaultTemplateColumn.java:90)<br>
at<br>
org.drools.template.parser.DefaultTemplateRuleBase.createColumnConditions(DefaultTemplateRuleBase.java:103)<br>
at<br>
org.drools.template.parser.DefaultTemplateRuleBase.createTemplateRule(DefaultTemplateRuleBase.java:96)<br>
at<br>
org.drools.template.parser.DefaultTemplateRuleBase.getDTRules(DefaultTemplateRuleBase.java:83)<br>
at<br>
org.drools.template.parser.DefaultTemplateRuleBase.<init>(DefaultTemplateRuleBase.java:62)<br>
at<br>
org.drools.template.parser.TemplateDataListener.<init>(TemplateDataListener.java:74)<br>
at<br>
org.drools.decisiontable.ExternalSpreadsheetCompiler.compile(ExternalSpreadsheetCompiler.java:99)<br>
<br>
<br>
<br>
<br>
--<br>
View this message in context: <a href="http://drools.46999.n3.nabble.com/Why-are-indented-keywords-in-template-causing-NPE-or-DecisionTableParseException-tp4021193.html" target="_blank">http://drools.46999.n3.nabble.com/Why-are-indented-keywords-in-template-causing-NPE-or-DecisionTableParseException-tp4021193.html</a><br>
Sent from the Drools: User forum mailing list archive at Nabble.com.<br>
_______________________________________________<br>
rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
</blockquote></div><br>