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