<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Verdana
}
--></style>
</head>
<body class='hmmessage'>
I have successfully used DRLParser with several DRL files, except when they include the 'contains' syntax.&nbsp; My code for parsing DRL and then dumping into XML, is below:<br><br>public class DroolsDumper {<br><br>&nbsp;&nbsp;&nbsp; public static final void main(String[] args) throws DroolsParserException {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; DrlParser parser = new DrlParser();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PackageDescr descr = parser.parse(new InputStreamReader(DroolsDumper.class.getResourceAsStream("/source.drl" )));<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Dump to xml rule.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; XmlDumper dumper = new XmlDumper();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String result = dumper.dump(descr);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(result); <br>}}<br><br>This code returns the following error when the DRL includes 'contains' syntax:<br><br>Exception in thread "main" java.lang.NullPointerException<br>&nbsp;&nbsp;&nbsp; at org.drools.xml.XmlDumper.visitPackageDescr(XmlDumper.java:224)<br>&nbsp;&nbsp;&nbsp; at org.drools.xml.XmlDumper.dump(XmlDumper.java:71)<br>&nbsp;&nbsp;&nbsp; at com.sample.DroolsDumper.main(DroolsDumper.java:19)<br><br>This code works fine with the following DRL (whether I dump the parsed DRL into XML or back into DRL):<br><br>rule 'cart rule'<br>dialect "mvel"<br>when<br>Cart ()<br>then<br>System.out.println("Hello World");<br>end <br><br>But it returns the above error when the same DRL includes 'contains':<br><br>rule 'cart rule'<br>
dialect "mvel"<br>
when<br>
Cart (skus contains (123))<br>
then<br>
System.out.println("Hello World");<br>
end <br><br>The DRL works fine in test scenarios and my cart class's array is declared simply as follows:<br><br>package shopping;<br>import java.util.ArrayList;<br>public class Cart {<br>public ArrayList&lt;Integer&gt; skus = new ArrayList&lt;Integer&gt;();<br>public ArrayList&lt;Integer&gt; getSkus() {<br>&nbsp;&nbsp;&nbsp; return skus;<br>}<br>public void setSkus(ArrayList&lt;Integer&gt; skus) {<br>&nbsp;&nbsp;&nbsp; this.skus = skus;<br>}<br>}<br>                                               </body>
</html>