Kaizar Laxmidhar
Kaizar Laxmidhar

Reputation: 869

Drools accessing generated java files

I am executing Drools rule through Mockito test. The rule fails at run time reporting the error with a line number of a java file having some long arbitrary name. It seems that Drools generates java files on the fly and injects into JVM. But when I search those files on my disc I don't find any. Is there a way I could store them on my disc?

Upvotes: 2

Views: 4580

Answers (1)

Kaizar Laxmidhar
Kaizar Laxmidhar

Reputation: 869

Got the solution:

You can dump the Drools generated java files in two ways.

1) Through command line:

-Ddrools.dump.dir="target/dumpDir"

e.g. I use maven command to execute the rule so it would be

mvn -Ddrools.dump.dir="target/dumpDir" -Dtest=DroolsRuleTest test

2) Through the API

public class FileKnowledgeBaseFactory implements KnowledgeBaseFactory {
    private Log log = LogFactory.getLog(FileKnowledgeBaseFactory.class);

    public KnowledgeBase load(String drlFullFilename) {
        KnowledgeBuilderConfiguration config = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration();
        config.setOption(DumpDirOption.get(new File("target/dumpDir")));

        KnowledgeBuilder knowledgeBuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(config);

        ....
        ....
    }
}

Upvotes: 11

Related Questions