[rules-users] Function compilation error

Krunoslav Sabljak krunoslav.sabljak at gmail.com
Sat Apr 7 10:07:52 EDT 2007


Hi all!!

Im having some problems with calling functions one from another in .drl

Here is some code snippet:

#created on: 2007.04.03
*

package* hr.combis.unimsg.ruleengine.rules.message

#list any import classes here.
*

import* javax.mail.internet.MimeMessage;
*

import* javax.mail.internet.InternetAddress;
*

import* javax.mail.Message;
*

import* javax.mail.Header;
*

import* javax.mail.Multipart;
*

import* javax.mail.Part;


*

import* java.util.Enumeration;
*

import* java.lang.String;
*

import* java.lang.Object;
*

import* java.lang.Integer;

#declare any global variables here

#global IMessageService messageService;




*

rule* "Initial rule"

*when
*

#conditions

msg : MimeMessage( )

*then*

#actions

drools.setFocus("Content group");
*

end
*

*

rule* "Header parsing rule"

*agenda-group* "Header group"

*when
*

#conditions

msg : MimeMessage( )

*then*

#actions

*if* (msg.getContent() != *null* && msg.getAllHeaders() != *null*){

System.out.println("TODO: header processing");

}
*

end
*

*

rule* "Content parsing rule"

*agenda-group* "Content group"

*when
*

#conditions

msg : MimeMessage( )

*then*

#actions

*if* (msg.getContent() != *null*){

*if* (msg.getContent() *instanceof* Multipart){

System.out.println("mail je multipart");

Object body = msg.getContent();

processMultipart((Multipart) body);

}*else*{

System.out.println("mail je singlepart");

singlePart(msg);

}

}

drools.setFocus("Header group");
*

end
*

*

function* *void* singlePart(Part p) {

String fileName = p.getFileName( );

String disposition = p.getDisposition( );

String contentType = p.getContentType( );

*if* (contentType.toLowerCase( ).startsWith("multipart/")) {

System.out.println("Part ima svoje partove");

ProcessMultipart.processMultipart((Multipart) p.getContent( ) );

}

p.writeTo(System.out);

}

*

function* *void* processMultipart(Multipart mp){

System.out.println("procesiram multipart");

*for* (*int* i = 0; i < mp.getCount(); i++){

Part part = mp.getBodyPart(i);

System.out.println("Procesiram part: " + i);

SinglePart.singlePart(part);

}

}


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:

ERROR 07 04 2007 12:36:05,031 - Bad error
com.ibm.ejs.container.UnknownLocalException:
 at org.codehaus.janino.Parser.parseAdditiveExpression(Parser.java)
 at org.codehaus.janino.Parser.parseShiftExpression(Parser.java)
 at org.codehaus.janino.Parser.parseRelationalExpression(Parser.java)
 at org.codehaus.janino.Parser.parseEqualityExpression(Parser.java)
 at org.codehaus.janino.Parser.parseAndExpression(Parser.java)
 at org.codehaus.janino.Parser.parseExclusiveOrExpression(Parser.java)
 at org.codehaus.janino.Parser.parseInclusiveOrExpression(Parser.java)
 at org.codehaus.janino.Parser.parseConditionalAndExpression(Parser.java)
 at org.codehaus.janino.Parser.parseConditionalOrExpression(Parser.java)
 at org.codehaus.janino.Parser.parseConditionalExpression(Parser.java)
 at org.codehaus.janino.Parser.parseAssignmentExpression(Parser.java)
 at org.codehaus.janino.Parser.parseExpression(Parser.java)
 at org.codehaus.janino.Parser.parsePrimary(Parser.java)
 at org.codehaus.janino.Parser.parseUnaryExpression(Parser.java)
 at org.codehaus.janino.Parser.parseMultiplicativeExpression(Parser.java)
 at org.codehaus.janino.Parser.parseAdditiveExpression(Parser.java)
 at org.codehaus.janino.Parser.parseShiftExpression(Parser.java)
 at org.codehaus.janino.Parser.parseRelationalExpression(Parser.java)
 at org.codehaus.janino.Parser.parseEqualityExpression(Parser.java)
 at org.codehaus.janino.Parser.parseAndExpression(Parser.java)
 at org.codehaus.janino.Parser.parseExclusiveOrExpression(Parser.java)
 at org.codehaus.janino.Parser.parseInclusiveOrExpression(Parser.java)
 at org.codehaus.janino.Parser.parseConditionalAndExpression(Parser.java)
 at org.codehaus.janino.Parser.parseConditionalOrExpression(Parser.java)
 at org.codehaus.janino.Parser.parseConditionalExpression(Parser.java)
 at org.codehaus.janino.Parser.parseAssignmentExpression(Parser.java)
 at org.codehaus.janino.Parser.parseExpression(Parser.java)
 at org.codehaus.janino.Parser.parseArgumentList(Parser.java)
 at org.codehaus.janino.Parser.parseArguments(Parser.java)
 at org.codehaus.janino.Parser.parsePrimary(Parser.java)
 at org.codehaus.janino.Parser.parseUnaryExpression(Parser.java)

.......



Please, help. Thnx
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20070407/ace4043b/attachment.html 


More information about the rules-users mailing list