<div>Hi all!!<br>&nbsp;<br>Im having some problems with calling functions one from another in .drl<br>&nbsp;<br>Here is some code snippet: </div>
<div><font color="#808000" size="2">
<p align="left">#created on: 2007.04.03</p></font><b><font color="#960000" size="2">
<p align="left">package</p></font></b><font size="2"> hr.combis.unimsg.ruleengine.rules.message
<p align="left"></p></font><font color="#808000" size="2">
<p align="left">#list any import classes here.</p></font><b><font color="#960000" size="2">
<p align="left">import</p></font></b><font size="2"> javax.mail.internet.MimeMessage;</font><b><font color="#960000" size="2">
<p align="left">import</p></font></b><font size="2"> javax.mail.internet.InternetAddress;</font><b><font color="#960000" size="2">
<p align="left">import</p></font></b><font size="2"> javax.mail.Message;</font><b><font color="#960000" size="2">
<p align="left">import</p></font></b><font size="2"> javax.mail.Header;</font><b><font color="#960000" size="2">
<p align="left">import</p></font></b><font size="2"> javax.mail.Multipart;</font><b><font color="#960000" size="2">
<p align="left">import</p></font></b><font size="2"> javax.mail.Part;
<p align="left"></p>
<p align="left">&nbsp;</p></font><b><font color="#960000" size="2">
<p align="left">import</p></font></b><font size="2"> java.util.Enumeration;</font><b><font color="#960000" size="2">
<p align="left">import</p></font></b><font size="2"> java.lang.String;</font><b><font color="#960000" size="2">
<p align="left">import</p></font></b><font size="2"> java.lang.Object;</font><b><font color="#960000" size="2">
<p align="left">import</p></font></b><font size="2"> java.lang.Integer;
<p align="left"></p></font><font color="#808000" size="2">
<p align="left">#declare any global variables here</p>
<p align="left">#global IMessageService messageService;</p></font><font size="2">
<p align="left"></p>
<p align="left">&nbsp;</p>
<p align="left">&nbsp;</p></font><b><font color="#960000" size="2">
<p align="left">rule</p></font></b><font size="2"> </font><font color="#008000" size="2">&quot;Initial rule&quot;</font><font size="2">
<p align="left"></p>
<p align="left"></p></font><b><font color="#960000" size="2">when</font></b><font size="2">
<p align="left"></p></font><font color="#808000" size="2">#conditions</font><font size="2">
<p align="left">msg : MimeMessage( )</p>
<p align="left"></p></font><b><font color="#960000" size="2">then</font></b><font size="2"> 
<p align="left"></p></font><font color="#808000" size="2">#actions</font><font size="2">
<p align="left">drools.setFocus(</p></font><font color="#008000" size="2">&quot;Content group&quot;</font><font size="2">); </font><b><font color="#960000" size="2">
<p align="left">end</p></font></b><font size="2">
<p align="left"></p></font><b><font color="#960000" size="2">
<p align="left">rule</p></font></b><font size="2"> </font><font color="#008000" size="2">&quot;Header parsing rule&quot;</font><font size="2">
<p align="left"></p></font><b><font color="#960000" size="2">agenda-group</font></b><font size="2"> </font><font color="#008000" size="2">&quot;Header group&quot;</font><font size="2"> 
<p align="left"></p></font><b><font color="#960000" size="2">when</font></b><font size="2">
<p align="left"></p></font><font color="#808000" size="2">#conditions</font><font size="2">
<p align="left">msg : MimeMessage( )</p>
<p align="left"></p></font><b><font color="#960000" size="2">then</font></b><font size="2"> 
<p align="left"></p></font><font color="#808000" size="2">#actions</font><font size="2">
<p align="left"></p></font><b><font color="#960000" size="2">if</font></b><font size="2"> (msg.getContent() != </font><b><font color="#960000" size="2">null</font></b><font size="2"> &amp;&amp; msg.getAllHeaders() != </font>
<b><font color="#960000" size="2">null</font></b><font size="2">){ 
<p align="left">System.out.println(</p></font><font color="#008000" size="2">&quot;TODO: header processing&quot;</font><font size="2">);
<p align="left">} </p></font><b><font color="#960000" size="2">
<p align="left">end</p></font></b><font size="2">
<p align="left"></p></font><b><font color="#960000" size="2">
<p align="left">rule</p></font></b><font size="2"> </font><font color="#008000" size="2">&quot;Content parsing rule&quot;</font><font size="2">
<p align="left"></p></font><b><font color="#960000" size="2">agenda-group</font></b><font size="2"> </font><font color="#008000" size="2">&quot;Content group&quot;</font><font size="2"> 
<p align="left"></p></font><b><font color="#960000" size="2">when</font></b><font size="2">
<p align="left"></p></font><font color="#808000" size="2">#conditions</font><font size="2">
<p align="left">msg : MimeMessage( )</p>
<p align="left"></p></font><b><font color="#960000" size="2">then</font></b><font size="2"> 
<p align="left"></p></font><font color="#808000" size="2">#actions </font><font size="2">
<p align="left"></p></font><b><font color="#960000" size="2">if</font></b><font size="2"> (msg.getContent() != </font><b><font color="#960000" size="2">null</font></b><font size="2">){
<p align="left"></p></font><b><font color="#960000" size="2">if</font></b><font size="2"> (msg.getContent() </font><b><font color="#960000" size="2">instanceof</font></b><font size="2"> Multipart){
<p align="left">System.out.println(</p></font><font color="#008000" size="2">&quot;mail je multipart&quot;</font><font size="2">);
<p align="left">Object body = msg.getContent();</p>
<p align="left">processMultipart((Multipart) body);</p>
<p align="left"></p>
<p align="left">}</p></font><b><font color="#960000" size="2">else</font></b><font size="2">{
<p align="left">System.out.println(</p></font><font color="#008000" size="2">&quot;mail je singlepart&quot;</font><font size="2">); 
<p align="left">singlePart(msg); </p>
<p align="left">}</p>
<p align="left">}</p>
<p align="left">drools.setFocus(</p></font><font color="#008000" size="2">&quot;Header group&quot;</font><font size="2">);</font><b><font color="#960000" size="2">
<p align="left">end</p></font></b><font size="2">
<p align="left"></p></font><b><font color="#960000" size="2">
<p align="left">function</p></font></b><font size="2"> </font><b><font color="#960000" size="2">void</font></b><font size="2"> singlePart(Part p) {
<p align="left"></p>
<p align="left">String fileName = p.getFileName( );</p>
<p align="left">String disposition = p.getDisposition( );</p>
<p align="left">String contentType = p.getContentType( );</p>
<p align="left"></p>
<p align="left"></p></font><b><font color="#960000" size="2">if</font></b><font size="2"> (contentType.toLowerCase( ).startsWith(</font><font color="#008000" size="2">&quot;multipart/&quot;</font><font size="2">)) {
<p align="left">System.out.println(</p></font><font color="#008000" size="2">&quot;Part ima svoje partove&quot;</font><font size="2">);
<p align="left">ProcessMultipart.processMultipart((Multipart) p.getContent( ) );</p>
<p align="left">}</p>
<p align="left">p.writeTo(System.out); </p>
<p align="left">}</p>
<p align="left"></p></font><b><font color="#960000" size="2">
<p align="left">function</p></font></b><font size="2"> </font><b><font color="#960000" size="2">void</font></b><font size="2"> processMultipart(Multipart mp){
<p align="left">System.out.println(</p></font><font color="#008000" size="2">&quot;procesiram multipart&quot;</font><font size="2">); 
<p align="left"></p></font><b><font color="#960000" size="2">for</font></b><font size="2"> (</font><b><font color="#960000" size="2">int</font></b><font size="2"> i = 0; i &lt; mp.getCount(); i++){
<p align="left">Part part = mp.getBodyPart(i);</p>
<p align="left">System.out.println(</p></font><font color="#008000" size="2">&quot;Procesiram part: &quot;</font><font size="2"> + i);
<p align="left">SinglePart.singlePart(part);</p>
<p align="left">}</p>
<p align="left">}</p></font><br><br>When i assert in working memory multipart message , the first is being called processMultipart() method, which then calls singlePart() method for each part and that works just fine. But, when singlePart needs to call processMultipart() again (thats just the way javamail api works), everything crashes with no specific explanation. Here is the part of log:
<br><br>ERROR 07 04 2007 12:36:05,031 - Bad error<br>com.ibm.ejs.container.UnknownLocalException:&nbsp; <br>&nbsp;at org.codehaus.janino.Parser.parseAdditiveExpression(Parser.java)<br>&nbsp;at org.codehaus.janino.Parser.parseShiftExpression
(Parser.java)<br>&nbsp;at org.codehaus.janino.Parser.parseRelationalExpression(Parser.java)<br>&nbsp;at org.codehaus.janino.Parser.parseEqualityExpression(Parser.java)<br>&nbsp;at org.codehaus.janino.Parser.parseAndExpression(Parser.java
)<br>&nbsp;at org.codehaus.janino.Parser.parseExclusiveOrExpression(Parser.java)<br>&nbsp;at org.codehaus.janino.Parser.parseInclusiveOrExpression(Parser.java)<br>&nbsp;at org.codehaus.janino.Parser.parseConditionalAndExpression(Parser.java
)<br>&nbsp;at org.codehaus.janino.Parser.parseConditionalOrExpression(Parser.java)<br>&nbsp;at org.codehaus.janino.Parser.parseConditionalExpression(Parser.java)<br>&nbsp;at org.codehaus.janino.Parser.parseAssignmentExpression(Parser.java
)<br>&nbsp;at org.codehaus.janino.Parser.parseExpression(Parser.java)<br>&nbsp;at org.codehaus.janino.Parser.parsePrimary(Parser.java)<br>&nbsp;at org.codehaus.janino.Parser.parseUnaryExpression(Parser.java)<br>&nbsp;at org.codehaus.janino.Parser.parseMultiplicativeExpression
(Parser.java)<br>&nbsp;at org.codehaus.janino.Parser.parseAdditiveExpression(Parser.java)<br>&nbsp;at org.codehaus.janino.Parser.parseShiftExpression(Parser.java)<br>&nbsp;at org.codehaus.janino.Parser.parseRelationalExpression(Parser.java
)<br>&nbsp;at org.codehaus.janino.Parser.parseEqualityExpression(Parser.java)<br>&nbsp;at org.codehaus.janino.Parser.parseAndExpression(Parser.java)<br>&nbsp;at org.codehaus.janino.Parser.parseExclusiveOrExpression(Parser.java)<br>&nbsp;at org.codehaus.janino.Parser.parseInclusiveOrExpression
(Parser.java)<br>&nbsp;at org.codehaus.janino.Parser.parseConditionalAndExpression(Parser.java)<br>&nbsp;at org.codehaus.janino.Parser.parseConditionalOrExpression(Parser.java)<br>&nbsp;at org.codehaus.janino.Parser.parseConditionalExpression
(Parser.java)<br>&nbsp;at org.codehaus.janino.Parser.parseAssignmentExpression(Parser.java)<br>&nbsp;at org.codehaus.janino.Parser.parseExpression(Parser.java)<br>&nbsp;at org.codehaus.janino.Parser.parseArgumentList(Parser.java)<br>&nbsp;at 
org.codehaus.janino.Parser.parseArguments(Parser.java)<br>&nbsp;at org.codehaus.janino.Parser.parsePrimary(Parser.java)<br>&nbsp;at org.codehaus.janino.Parser.parseUnaryExpression(Parser.java)<br><br>.......<br><br><br><br>Please, help. Thnx 
</div>