Uploaded image for project: 'JBRULES'
  1. JBRULES
  2. JBRULES-1264

NPE at BaseObjectClassFieldExtractor.getLongValue with null fields

This issue belongs to an archived project. You can view it, but you can't modify it. Learn more

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Major Major
    • 4.0.3, 5.0.0.M1
    • 4.0.2
    • None
    • None
    • Hide

      Set alphaNodeHashingThreshold to really large number like 99999.

      Show
      Set alphaNodeHashingThreshold to really large number like 99999.

      Removing one of the three rules magically solves the problem.

      java.lang.NullPointerException
      at org.drools.base.extractors.BaseObjectClassFieldExtractor.getLongValue(BaseObjectClassFieldExtractor.java:106)
      at org.drools.base.ClassFieldExtractor.getLongValue(ClassFieldExtractor.java:203)
      at org.drools.reteoo.CompositeObjectSinkAdapter$HashKey.setValue(CompositeObjectSinkAdapter.java:467)
      at org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:292)
      at org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:153)
      at org.drools.reteoo.Rete.assertObject(Rete.java:177)
      at org.drools.reteoo.ReteooRuleBase.assertObject(ReteooRuleBase.java:201)
      at org.drools.reteoo.ReteooWorkingMemory.doInsert(ReteooWorkingMemory.java:71)
      at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:886)
      at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:858)
      at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:659)
      at com.sample.DroolsTest.main(DroolsTest.java:21)

      package com.sample;

      import java.io.InputStreamReader;
      import java.io.Reader;

      import org.drools.RuleBase;
      import org.drools.RuleBaseFactory;
      import org.drools.WorkingMemory;
      import org.drools.compiler.PackageBuilder;
      import org.drools.rule.Package;

      public class DroolsTest
      {

      public static final void main(String[] args)
      {
      try

      { RuleBase ruleBase = readRule(); WorkingMemory workingMemory = ruleBase.newStatefulSession(); workingMemory.insert(new Attribute()); workingMemory.insert(new Message()); workingMemory.fireAllRules(); }

      catch (Throwable t)

      { t.printStackTrace(); }

      }

      private static RuleBase readRule() throws Exception

      { Reader source = new InputStreamReader(DroolsTest.class.getResourceAsStream("/Sample.drl")); PackageBuilder builder = new PackageBuilder(); builder.addPackageFromDrl(source); Package pkg = builder.getPackage(); RuleBase ruleBase = RuleBaseFactory.newRuleBase(); ruleBase.addPackage(pkg); return ruleBase; }

      public static class Message

      { //empty }

      public static class Attribute
      {

      public Integer getValue()

      { return null; }

      }

      }

      package com.sample

      import com.sample.DroolsTest.Message;
      import com.sample.DroolsTest.Attribute;

      rule "rule_1"

      when
      Message()
      Attribute(value == 1)
      then
      System.err.println("case 1");
      end

      rule "rule_2"

      when
      Message()
      Attribute(value == 2)
      then
      System.err.println("case 2");
      end

      rule "rule_3"

      when
      Message()
      $a:Attribute(value == 3)
      then
      System.err.println("case 3");
      end

              mproctor@redhat.com Mark Proctor
              agattik Alexandre Gattiker (Inactive)
              Archiver:
              rhn-support-ceverson Clark Everson

                Created:
                Updated:
                Resolved:
                Archived: