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 -

javascript - IE9 error '$'is not defined -