java - Drools or vs and inside map check not work same way -


first drool examples work , parse should:

package teeest import java.util.arraylist; import java.util.hashmap; rule 'test_and_comprassion' when   $result:java.util.arraylist()   $e:java.util.hashmap('test' == this['test'] && 'test2' == this['test'])   $result.add(###def_id###l); end    package teeest import java.util.arraylist; import java.util.hashmap; rule 'test_or_const_right_comprassion' when   $result:java.util.arraylist()   $e:java.util.hashmap(this['test'] == 'test' || this['test'] == 'test2')   $result.add(###def_id###l); end; 

logic not matter here ;) it's example.
unfortunately second one, gives me error:

package teeest import java.util.arraylist; import java.util.hashmap; rule 'test_or_const_left_comprassion' when   $result:java.util.arraylist()   $e:java.util.hashmap('test' == this['test'] || 'test2' == this['test'])   $result.add(###def_id###l); end; 

the drool version use 5.6.0 final (the 6.x out of option now). had update cmpiler, able compile 5.6 under jdk8: org.eclipse.jdt.core.compiler:4.4.2

the way build knowledgebase is:

private static knowledgebase knowledgebase; public static void addtoknowledgebase(string drooldefinition) throws exception {     if(knowledgebase == null) {         createknowledgebase();     }     drooldefinition = drooldefinition.replaceall("###def_id###", "1");     knowledgebuilder build = knowledgebuilderfactory.newknowledgebuilder();      resource droolsrule = resourcefactory.newreaderresource(new stringreader(drooldefinition));     build.add(droolsrule, resourcetype.drl); //<-- error in there     handlebuildererrors(build);     knowledgebase.addknowledgepackages(build.getknowledgepackages()); }  public static void createknowledgebase() {     knowledgebuilder build = knowledgebuilderfactory.newknowledgebuilder();     knowledgebaseconfiguration configuration = knowledgebasefactory.newknowledgebaseconfiguration();     knowledgebase localknowledgebase = knowledgebasefactory.newknowledgebase(configuration);     localknowledgebase.addknowledgepackages(build.getknowledgepackages());     knowledgebase = localknowledgebase; } 

before used 5.2.1.final. in version many bugs. left side comprassion did not work. null == field gave error. 'string' == field || 'string2' == field gave error. in 5.6.0.final fixed. in latest 5.6.0.final. guess it's bug. not able change left side right side comprassion update 6.x version. 'this' buggable guess.
have ideas how work that?

stacktrace:

[line: 1, column: 1] @ org.mvel2.optimizers.impl.refl.reflectiveaccessoroptimizer.compilegetchain(reflectiveaccessoroptimizer.java:427) @ org.mvel2.optimizers.impl.refl.reflectiveaccessoroptimizer.optimizeaccessor(reflectiveaccessoroptimizer.java:140) @ org.mvel2.ast.astnode.optimize(astnode.java:159) @ org.mvel2.ast.astnode.getreducedvalueaccelerated(astnode.java:115) @ org.mvel2.mvelruntime.execute(mvelruntime.java:86) @ org.mvel2.compiler.compiledexpression.getdirectvalue(compiledexpression.java:123) @ org.mvel2.compiler.compiledexpression.getvalue(compiledexpression.java:119) @ org.mvel2.compiler.compiledexpression.getvalue(compiledexpression.java:113) @ org.mvel2.mvel.executeexpression(mvel.java:906) @ org.drools.rule.builder.patternbuilder.getfieldvalue(patternbuilder.java:1521) @ org.drools.rule.builder.patternbuilder.rewriteorexpressions(patternbuilder.java:762) @ org.drools.rule.builder.patternbuilder.buildexpression(patternbuilder.java:722) @ org.drools.rule.builder.patternbuilder.buildccddescr(patternbuilder.java:702) @ org.drools.rule.builder.patternbuilder.build(patternbuilder.java:653) @ org.drools.rule.builder.patternbuilder.processconstraintsandbinds(patternbuilder.java:507) @ org.drools.rule.builder.patternbuilder.build(patternbuilder.java:324) @ org.drools.rule.builder.patternbuilder.build(patternbuilder.java:135) @ org.drools.rule.builder.groupelementbuilder.build(groupelementbuilder.java:67) @ org.drools.rule.builder.rulebuilder.build(rulebuilder.java:85) @ org.drools.compiler.packagebuilder.addrule(packagebuilder.java:3230) @ org.drools.compiler.packagebuilder.compilerules(packagebuilder.java:1038) @ org.drools.compiler.packagebuilder.compileallrules(packagebuilder.java:946) @ org.drools.compiler.packagebuilder.addpackage(packagebuilder.java:938) @ org.drools.compiler.packagebuilder.addpackagefromdrl(packagebuilder.java:470) @ org.drools.compiler.packagebuilder.addknowledgeresource(packagebuilder.java:698) @ org.drools.builder.impl.knowledgebuilderimpl.add(knowledgebuilderimpl.java:51) @ org.drools.builder.impl.knowledgebuilderimpl.add(knowledgebuilderimpl.java:40) @ pl.drools.droolevaluationunittesthelper.addtoknowledgebase(droolevaluationunittesthelper.java:41) @ pl.drools.droolevaluationunittesthelper.drooltimertestfromfile(droolevaluationunittesthelper.java:81) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:62) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) @ java.lang.reflect.method.invoke(method.java:497) @ org.junit.runners.model.frameworkmethod$1.runreflectivecall(frameworkmethod.java:50) @ org.junit.internal.runners.model.reflectivecallable.run(reflectivecallable.java:12) @ org.junit.runners.model.frameworkmethod.invokeexplosively(frameworkmethod.java:47) @ org.junit.internal.runners.statements.invokemethod.evaluate(invokemethod.java:17) @ org.junit.runners.parentrunner.runleaf(parentrunner.java:325) @ org.junit.runners.blockjunit4classrunner.runchild(blockjunit4classrunner.java:78) @ org.junit.runners.blockjunit4classrunner.runchild(blockjunit4classrunner.java:57) @ org.junit.runners.parentrunner$3.run(parentrunner.java:290) @ org.junit.runners.parentrunner$1.schedule(parentrunner.java:71) @ org.junit.runners.parentrunner.runchildren(parentrunner.java:288) @ org.junit.runners.parentrunner.access$000(parentrunner.java:58) @ org.junit.runners.parentrunner$2.evaluate(parentrunner.java:268) @ org.junit.runners.parentrunner.run(parentrunner.java:363) @ org.junit.runner.junitcore.run(junitcore.java:137) @ com.intellij.junit4.junit4ideatestrunner.startrunnerwithargs(junit4ideatestrunner.java:117) @ com.intellij.junit4.junit4ideatestrunner.startrunnerwithargs(junit4ideatestrunner.java:42) @ com.intellij.rt.execution.junit.junitstarter.preparestreamsandstart(junitstarter.java:262) @ com.intellij.rt.execution.junit.junitstarter.main(junitstarter.java:84) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:62) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) @ java.lang.reflect.method.invoke(method.java:497) @ com.intellij.rt.execution.application.appmain.main(appmain.java:147) caused by: java.lang.nullpointerexception     @ org.mvel2.optimizers.impl.refl.reflectiveaccessoroptimizer.compilegetchain(reflectiveaccessoroptimizer.java:393)     ... 55 more [error: null pointer: this["test"]] [near : {... this["test"] ....}]              ^     [line: 1, column: 1]     @ org.mvel2.optimizers.impl.refl.reflectiveaccessoroptimizer.compilegetchain(reflectiveaccessoroptimizer.java:427)     @ org.mvel2.optimizers.impl.refl.reflectiveaccessoroptimizer.optimizeaccessor(reflectiveaccessoroptimizer.java:140)     @ org.mvel2.ast.astnode.optimize(astnode.java:159)     @ org.mvel2.ast.astnode.getreducedvalueaccelerated(astnode.java:115)     @ org.mvel2.mvelruntime.execute(mvelruntime.java:86)     @ org.mvel2.compiler.compiledexpression.getdirectvalue(compiledexpression.java:123)     @ org.mvel2.compiler.compiledexpression.getvalue(compiledexpression.java:119)     @ org.mvel2.compiler.compiledexpression.getvalue(compiledexpression.java:113)     @ org.mvel2.mvel.executeexpression(mvel.java:906)     @ org.drools.rule.builder.patternbuilder.getfieldvalue(patternbuilder.java:1521)     @ org.drools.rule.builder.patternbuilder.rewriteorexpressions(patternbuilder.java:762)     @ org.drools.rule.builder.patternbuilder.buildexpression(patternbuilder.java:722)     @ org.drools.rule.builder.patternbuilder.buildccddescr(patternbuilder.java:702)     @ org.drools.rule.builder.patternbuilder.build(patternbuilder.java:653)     @ org.drools.rule.builder.patternbuilder.processconstraintsandbinds(patternbuilder.java:507)     @ org.drools.rule.builder.patternbuilder.build(patternbuilder.java:324)     @ org.drools.rule.builder.patternbuilder.build(patternbuilder.java:135)     @ org.drools.rule.builder.groupelementbuilder.build(groupelementbuilder.java:67)     @ org.drools.rule.builder.rulebuilder.build(rulebuilder.java:85)     @ org.drools.compiler.packagebuilder.addrule(packagebuilder.java:3230)     @ org.drools.compiler.packagebuilder.compilerules(packagebuilder.java:1038)     @ org.drools.compiler.packagebuilder.compileallrules(packagebuilder.java:946)     @ org.drools.compiler.packagebuilder.addpackage(packagebuilder.java:938)     @ org.drools.compiler.packagebuilder.addpackagefromdrl(packagebuilder.java:470)     @ org.drools.compiler.packagebuilder.addknowledgeresource(packagebuilder.java:698)     @ org.drools.builder.impl.knowledgebuilderimpl.add(knowledgebuilderimpl.java:51)     @ org.drools.builder.impl.knowledgebuilderimpl.add(knowledgebuilderimpl.java:40)     @ pl.drools.droolevaluationunittesthelper.addtoknowledgebase(droolevaluationunittesthelper.java:41)     @ pl.drools.droolevaluationunittesthelper.drooltimertestfromfile(droolevaluationunittesthelper.java:81)     @ sun.reflect.nativemethodaccessorimpl.invoke0(native method)     @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:62)     @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43)     @ java.lang.reflect.method.invoke(method.java:497)     @ org.junit.runners.model.frameworkmethod$1.runreflectivecall(frameworkmethod.java:50)     @ org.junit.internal.runners.model.reflectivecallable.run(reflectivecallable.java:12)     @ org.junit.runners.model.frameworkmethod.invokeexplosively(frameworkmethod.java:47)     @ org.junit.internal.runners.statements.invokemethod.evaluate(invokemethod.java:17)     @ org.junit.runners.parentrunner.runleaf(parentrunner.java:325)     @ org.junit.runners.blockjunit4classrunner.runchild(blockjunit4classrunner.java:78)     @ org.junit.runners.blockjunit4classrunner.runchild(blockjunit4classrunner.java:57)     @ org.junit.runners.parentrunner$3.run(parentrunner.java:290)     @ org.junit.runners.parentrunner$1.schedule(parentrunner.java:71)     @ org.junit.runners.parentrunner.runchildren(parentrunner.java:288)     @ org.junit.runners.parentrunner.access$000(parentrunner.java:58)     @ org.junit.runners.parentrunner$2.evaluate(parentrunner.java:268)     @ org.junit.runners.parentrunner.run(parentrunner.java:363)     @ org.junit.runner.junitcore.run(junitcore.java:137)     @ com.intellij.junit4.junit4ideatestrunner.startrunnerwithargs(junit4ideatestrunner.java:117)     @ com.intellij.junit4.junit4ideatestrunner.startrunnerwithargs(junit4ideatestrunner.java:42)     @ com.intellij.rt.execution.junit.junitstarter.preparestreamsandstart(junitstarter.java:262)     @ com.intellij.rt.execution.junit.junitstarter.main(junitstarter.java:84)     @ sun.reflect.nativemethodaccessorimpl.invoke0(native method)     @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:62)     @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43)     @ java.lang.reflect.method.invoke(method.java:497)     @ com.intellij.rt.execution.application.appmain.main(appmain.java:147) caused by: java.lang.nullpointerexception     @ org.mvel2.optimizers.impl.refl.reflectiveaccessoroptimizer.compilegetchain(reflectiveaccessoroptimizer.java:393)     ... 55 more 


Comments

Popular posts from this blog

php - How to add and update images or image url in Volusion using Volusion API -

c# SetCompatibleTextRenderingDefault must be called before the first -

Laravel mail error `Swift_TransportException in StreamBuffer.php line 269: Connection could not be established with host smtp.gmail.com [ #0]` -