Sorry, It turned out to be a programming mistake. The charge.parent object was not added to the WorkingMemory. It would be nice to have an error message instead of a generic NullPointerException.
Thanks, Alan Ho > _____________________________________________ > From: Ho, Alan > Sent: Saturday, March 04, 2006 10:53 AM > To: '[email protected]' > Subject: Asserting / Modifying Objects in Drools 2.5 in the Java > Annotations Semantic Module > > Hi, > > How do you assert / modify objects with the Java Annotations Semantic Module ? > > I've tried following the example on the web using the "knowledge helper", but > I get a bunch of null exceptions. > > My code looks like: > > > @Consequence > public void consequence(KnowledgeHelper knowledgeHelper, > @Fact("Charge") Charge charge) { > System.out.println("Adding Charge to item :" + charge.parent); > charge.parent.shippingCharges.add(charge); > > try { > knowledgeHelper.modifyObject(charge.parent); > } catch (Exception e) { > // TODO Auto-generated catch block > e.printStackTrace(); > } > } > > > The Exception that I see is: > > java.lang.NullPointerException > at > org.drools.reteoo.WorkingMemoryImpl.removeObject(WorkingMemoryImpl.java:484) > at > org.drools.reteoo.WorkingMemoryImpl.modifyObject(WorkingMemoryImpl.java:520) > at > org.drools.spi.DefaultKnowledgeHelper.modifyObject(DefaultKnowledgeHelper.java:77) > at > com.amazon.shipping.rules.DefaultShippingRules$EnforceChargeRule.consequence(DefaultShippingRules.java:79) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) > at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) > at java.lang.reflect.Method.invoke(Unknown Source) > at > org.drools.spring.pojorule.RuleReflectMethod.invokeMethod(RuleReflectMethod.java:83) > at > org.drools.spring.pojorule.PojoConsequence.invoke(PojoConsequence.java:67) > at org.drools.reteoo.AgendaItem.fire(AgendaItem.java:168) > at org.drools.reteoo.Agenda.fireNextItem(Agenda.java:476) > at > org.drools.reteoo.WorkingMemoryImpl.fireAllRules(WorkingMemoryImpl.java:256) > at > org.drools.reteoo.WorkingMemoryImpl.fireAllRules(WorkingMemoryImpl.java:271) > : > : > : > : > : > > > Any ideas ? > > Regards, > Alan Ho
