We have a number of add/remove rule tests, could you reproduce your problem, 
using the same classes and format as outlined in this test class. Ideally 
adding your reproducer as a single failing test method:
https://github.com/droolsjbpm/drools/blob/master/drools-compiler/src/test/java/org/drools/compiler/integrationtests/AddRemoveRulesTest.java

Creating JIRA’s and submitting pull requests.
http://docs.jboss.org/drools/release/5.6.0.Final/droolsjbpm-introduction-docs/html/gettingstarted.html

Mark
On 6 Jun 2014, at 09:12, tia <rabarijaonadomo...@gmail.com> wrote:

> Hello,
> 
> I'm trying to add a new rule on the fly like here:
> https://github.com/droolsjbpm/drools/blob/master/drools-compiler/src/test/java/org/drools/compiler/integrationtests/IncrementalCompilationTest.java#L158
> 
> Here is the method to add a rule, once the KieSession is created and
> configured: 
> public void addRule(String rule){
>               
>               KieServices ks= KieServices.Factory.get();
>               ReleaseId rid= ks.newReleaseId("org.kie", "businessrules", 
> "1.0");
> 
>               KieFileSystem kfs = ks.newKieFileSystem();
>               kfs.generateAndWritePomXML(rid);
>               kfs.write("src/main/resources/rule.drl",rule);
>               KieBuilder kb = ks.newKieBuilder(kfs).buildAll();
>               if( kb.getResults().hasMessages( 
> org.kie.api.builder.Message.Level.ERROR )
> ) {
>                       for( org.kie.api.builder.Message result : 
> kb.getResults().getMessages() )
> {
>                               System.err.println(result.getText());
>                       }
>               }       
>               InternalKieModule kieModule = (InternalKieModule) 
> ks.getRepository()
>                               .getKieModule(rid);
>               byte[] jar = kieModule.getBytes();
> 
>               Resource jarRes = ks.getResources().newByteArrayResource(jar);
>               ks.getRepository().addKieModule(jarRes);        
>               kieContainer.updateToVersion(rid);
>       }
> 
> But when I'm calling this method, I get the error below: 
> java.lang.NullPointerException
>       at org.drools.core.util.LinkedList.remove(LinkedList.java:168)
>       at
> org.drools.core.phreak.AddRemoveRule.mergeSegment(AddRemoveRule.java:938)
>       at
> org.drools.core.phreak.AddRemoveRule.correctSegmentOnSplitOnRemove(AddRemoveRule.java:377)
>       at 
> org.drools.core.phreak.AddRemoveRule.removeRule(AddRemoveRule.java:182)
>       at
> org.drools.core.reteoo.ReteooBuilder.removeTerminalNode(ReteooBuilder.java:171)
>       at 
> org.drools.core.reteoo.ReteooBuilder.removeRule(ReteooBuilder.java:165)
>       at
> org.drools.core.reteoo.ReteooRuleBase.removeRule(ReteooRuleBase.java:1406)
>       at
> org.drools.core.reteoo.ReteooRuleBase.removeObjectsGeneratedFromResource(ReteooRuleBase.java:1652)
>       at
> org.drools.compiler.compiler.PackageBuilder.removeObjectsGeneratedFromResource(PackageBuilder.java:3898)
>       at
> org.drools.compiler.kie.builder.impl.KieContainerImpl.updateToVersion(KieContainerImpl.java:114)
> 
> For the line : "kieContainer.updateToVersion(rid);"
> 
> But if I'm firing the rules once  (kieSession.fireAllRules();) before adding
> the new rule, I don't get the exception O_o
> 
> Someone has any idea why ?
> 
> thanks!
> 
> 
> 
> --
> View this message in context: 
> http://drools.46999.n3.nabble.com/NullPointerException-at-org-drools-compiler-kie-builder-impl-KieContainerImpl-updateToVersion-tp4029894.html
> Sent from the Drools: User forum mailing list archive at Nabble.com.
> _______________________________________________
> rules-users mailing list
> rules-users@lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users


_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users

Reply via email to