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

Reply via email to