[jboss-jira] [JBoss JIRA] (DROOLS-387) NoSuchElementException on addKnowledgePackages when a "not" follows an "eval"
Jason Saint (JIRA)
issues at jboss.org
Sun Dec 29 13:39:33 EST 2013
[ https://issues.jboss.org/browse/DROOLS-387?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12933264#comment-12933264 ]
Jason Saint commented on DROOLS-387:
------------------------------------
I tried with 5.6.0.CR1 and the packages were added to the knowledge base with no exceptions. It also works with 6.0.0.CR5.
It looks like the underlying issue is fixed in the latest versions.
> NoSuchElementException on addKnowledgePackages when a "not" follows an "eval"
> -----------------------------------------------------------------------------
>
> Key: DROOLS-387
> URL: https://issues.jboss.org/browse/DROOLS-387
> Project: Drools
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Affects Versions: 5.5.0.Final
> Environment: java version "1.7.0_21"
> Reporter: Jason Saint
> Assignee: Mark Proctor
>
> I apologize if this has already been reported, but I did not see anything in search results for which this looked like a duplicate.
> With the following 2 rules, compiling the first and adding it to a knowledge base causes subsequent package additions to fail with a NoSuchElementException.
> rule "Problem"
> when
> eval(true == true)
> not String() from "Problem"
> then
> end
> rule "Test1"
> when
> $test : String() from "Test"
> then
> end
> The following java code will produce the exception on the second call to addKnowledgePackages (tried with Drools 5.4 and 5.5)
> {code}
> package com.chiprewards.droolsbug;
> import org.drools.KnowledgeBase;
> import org.drools.KnowledgeBaseFactory;
> import org.drools.builder.KnowledgeBuilder;
> import org.drools.builder.KnowledgeBuilderErrors;
> import org.drools.builder.KnowledgeBuilderFactory;
> import org.drools.io.Resource;
> import org.drools.builder.ResourceType;
> import org.drools.io.ResourceFactory;
> /**
> * Hello world!
> *
> */
> public class App
> {
> public static void main( String[] args )
> {
> KnowledgeBase kBase = KnowledgeBaseFactory.newKnowledgeBase();
> KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
>
> String problem_rule = "rule \"Problem\"\n when\n eval(true == true)\n not String() from \"Problem\"\n then\nend";
>
> Resource resource = ResourceFactory.newByteArrayResource(problem_rule.getBytes());
> kbuilder.add(resource, ResourceType.DRL);
> if(kbuilder.hasErrors()) {
> System.out.println("First rule had error parsing");
> System.exit(1);
> }
>
> kBase.addKnowledgePackages(kbuilder.getKnowledgePackages());
>
> //Add second rule
>
> String next_rule = "rule \"Test\"\n when\n String() from \"Test\"\n then\nend";
>
> resource = ResourceFactory.newByteArrayResource(next_rule.getBytes());
> kbuilder.add(resource, ResourceType.DRL);
> if(kbuilder.hasErrors()) {
> System.out.println("Second rule had error parsing");
> System.exit(1);
> }
>
> kBase.addKnowledgePackages(kbuilder.getKnowledgePackages());
> }
> }
> {code}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the jboss-jira
mailing list