I am having the same problem as described in this post:
http://www.nabble.com/The-effect-of-not-using-shadow-facts-tp11652637p11708600.html

The problem is, there really was no solution mentioned. Here is my collections class that I am asserting into working memory:

public class NamedCollection<T> extends LinkedList<T>{

  public NamedCollection(String name){
       super();
       this.name = name;
   }

   public String getName(){
       return name;
   }
/**
    *
    */
   private static final long serialVersionUID = -457439174592908333L;
   private String name;
@Override
   public int hashCode() {
       final int prime = 31;
       int result = super.hashCode();
       result = prime * result + ((name == null) ? 0 : name.hashCode());
       return result;
   }

   @Override
   public boolean equals(Object obj) {
       if (this == obj)
           return true;
       if (!super.equals(obj))
           return false;
       if (getClass() != obj.getClass())
           return false;
       final NamedCollection other = (NamedCollection) obj;
       if (name == null) {
           if (other.name != null)
               return false;
       } else if (!name.equals(other.name))
           return false;
       return true;
   }
}

I get the following error when inserting this fact into memory:
org.drools.RuntimeDroolsException: Error creating shadow fact for object: []
   at org.drools.reteoo.Rete$ClassObjectTypeConf.getShadow(Rete.java:628)
   at org.drools.reteoo.Rete.assertObject(Rete.java:166)
at org.drools.reteoo.ReteooRuleBase.assertObject(ReteooRuleBase.java:192) 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.base.DefaultKnowledgeHelper.insert(DefaultKnowledgeHelper.java:60) at org.drools.base.DefaultKnowledgeHelper.insert(DefaultKnowledgeHelper.java:54) at sequitem.quanteq.ruleflow.Rule_Explode_Globals_0.consequence(Rule_Explode_Globals_0.java:15) at sequitem.quanteq.ruleflow.Rule_Explode_Globals_0ConsequenceInvoker.evaluate(Rule_Explode_Globals_0ConsequenceInvoker.java:22) at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:550)
   at org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:514)
at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:462) at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:424) at sequitem.quanteq.rules.engine.StatefulEngine.execute(StatefulEngine.java:50) at sequitem.quanteq.rules.engine.StatefulEngine.execute(StatefulEngine.java:24) at sequitem.quanteq.rules.RandomMarketEntryRulesTest.testRandomMarketEntryRules(RandomMarketEntryRulesTest.java:56)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at junit.framework.TestCase.runTest(TestCase.java:168)
   at junit.framework.TestCase.runBare(TestCase.java:134)
   at junit.framework.TestResult$1.protect(TestResult.java:110)
   at junit.framework.TestResult.runProtected(TestResult.java:128)
   at junit.framework.TestResult.run(TestResult.java:113)
   at junit.framework.TestCase.run(TestCase.java:124)
   at junit.framework.TestSuite.runTest(TestSuite.java:232)
   at junit.framework.TestSuite.run(TestSuite.java:227)
   at junit.textui.TestRunner.doRun(TestRunner.java:116)
   at junit.textui.TestRunner.doRun(TestRunner.java:109)
   at junit.textui.TestRunner.run(TestRunner.java:77)
   at junit.textui.TestRunner.run(TestRunner.java:62)
at sequitem.quanteq.rules.RandomMarketEntryRulesTest.main(RandomMarketEntryRulesTest.java:64)
Caused by: java.lang.NullPointerException
   at java.util.LinkedList.clear(LinkedList.java:292)E

at sequitem.quanteq.rules.engine.NamedCollectionShadowProxy.updateProxy(Unknown Source) at sequitem.quanteq.rules.engine.NamedCollectionShadowProxy.setShadowedObject(Unknown Source)
   at org.drools.reteoo.Rete$ClassObjectTypeConf.getShadow(Rete.java:626)
   ... 33 more
Time: 67.75
There was 1 error:
1) testRandomMarketEntryRules(sequitem.quanteq.rules.RandomMarketEntryRulesTest)org.drools.spi.ConsequenceException: org.drools.RuntimeDroolsException: Error creating shadow fact for object: [] at org.drools.base.DefaultConsequenceExceptionHandler.handleException(DefaultConsequenceExceptionHandler.java:14) at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:553)
   at org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:514)
at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:462) at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:424) at sequitem.quanteq.rules.engine.StatefulEngine.execute(StatefulEngine.java:50) at sequitem.quanteq.rules.engine.StatefulEngine.execute(StatefulEngine.java:24) at sequitem.quanteq.rules.RandomMarketEntryRulesTest.testRandomMarketEntryRules(RandomMarketEntryRulesTest.java:56)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at sequitem.quanteq.rules.RandomMarketEntryRulesTest.main(RandomMarketEntryRulesTest.java:64) Caused by: org.drools.RuntimeDroolsException: Error creating shadow fact for object: []
   at org.drools.reteoo.Rete$ClassObjectTypeConf.getShadow(Rete.java:628)
   at org.drools.reteoo.Rete.assertObject(Rete.java:166)
at org.drools.reteoo.ReteooRuleBase.assertObject(ReteooRuleBase.java:192) 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.base.DefaultKnowledgeHelper.insert(DefaultKnowledgeHelper.java:60) at org.drools.base.DefaultKnowledgeHelper.insert(DefaultKnowledgeHelper.java:54) at sequitem.quanteq.ruleflow.Rule_Explode_Globals_0.consequence(Rule_Explode_Globals_0.java:15) at sequitem.quanteq.ruleflow.Rule_Explode_Globals_0ConsequenceInvoker.evaluate(Rule_Explode_Globals_0ConsequenceInvoker.java:22) at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:550)
   ... 23 more
Caused by: java.lang.NullPointerException
   at java.util.LinkedList.clear(LinkedList.java:292)
at sequitem.quanteq.rules.engine.NamedCollectionShadowProxy.updateProxy(Unknown Source) at sequitem.quanteq.rules.engine.NamedCollectionShadowProxy.setShadowedObject(Unknown Source)
   at org.drools.reteoo.Rete$ClassObjectTypeConf.getShadow(Rete.java:626)
   ... 33 more
_______________________________________________
rules-users mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/rules-users

Reply via email to