<br>&nbsp;&nbsp; You must always use modifyRetract()+modifyInsert() as a pair of methods. So you must always do:<br><br>session.modifyRetract(accountHandle);<br>...<br>// change all you want in your accound<br>account.setBalance(300);<br>
...<br>session.modifyInsert(accountHandle, account);<br><br>&nbsp;&nbsp; []s<br>&nbsp;&nbsp; Edson<br><br><div class="gmail_quote">2008/11/21 keithnielsen <span dir="ltr">&lt;<a href="mailto:keithnielsen@discover.com">keithnielsen@discover.com</a>&gt;</span><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br>
I have the following test:<br>
<br>
public void testFireAllRules() {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;rulesManager = RulesManager.getInstance();<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;assertNotNull(rulesManager);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;StatefulSession session =<br>
rulesManager.getStatefulSession(&quot;com.dfs.dc.servicing.cms.cid.verification.test&quot;);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;assertNotNull(session);<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Account account = new Account();<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;account.setAccountNumber(&quot;6011006500000&quot;);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;account.setBalance(200);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;account.setDaysDelinquent(32);<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//insert a fact<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;FactHandle accountHandle = session.insert(account);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;System.out.println(accountHandle.toExternalForm());<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;session.fireAllRules();<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//insert a fact<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//FactHandle accountHandle2 = session.insert(account);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//System.out.println(accountHandle2.toExternalForm());<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;account.setBalance(300);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;session.modifyInsert(accountHandle, account);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;System.out.println(accountHandle.toExternalForm());<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;}<br>
<br>
When I call modifyInsert I receive a NullPointerException with the following<br>
stacktrace:<br>
<br>
java.lang.NullPointerException<br>
 &nbsp; &nbsp; &nbsp; &nbsp;at org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:169)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;at org.drools.reteoo.EntryPointNode.assertObject(EntryPointNode.java:143)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;at<br>
org.drools.common.AbstractWorkingMemory.modifyInsert(AbstractWorkingMemory.java:1226)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;at<br>
org.drools.common.AbstractWorkingMemory.modifyInsert(AbstractWorkingMemory.java:1183)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;at<br>
com.dfs.ecc.framework.client.rules.test.RulesManagerTest.testFireAllRules(RulesManagerTest.java:110)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;at java.lang.reflect.Method.invoke(Unknown Source)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;at<br>
org.junit.internal.runners.TestMethodRunner.executeMethodBody(TestMethodRunner.java:99)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;at<br>
org.junit.internal.runners.TestMethodRunner.runUnprotected(TestMethodRunner.java:81)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;at<br>
org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;at<br>
org.junit.internal.runners.TestMethodRunner.runMethod(TestMethodRunner.java:75)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;at<br>
org.junit.internal.runners.TestMethodRunner.run(TestMethodRunner.java:45)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;at<br>
org.junit.internal.runners.TestClassMethodsRunner.invokeTestMethod(TestClassMethodsRunner.java:66)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;at<br>
org.junit.internal.runners.TestClassMethodsRunner.run(TestClassMethodsRunner.java:35)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;at<br>
org.junit.internal.runners.TestClassRunner$1.runUnprotected(TestClassRunner.java:42)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;at<br>
org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;at<br>
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:45)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;at<br>
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;at<br>
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;at<br>
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;at<br>
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;at<br>
org.eclipse.pde.internal.junit.runtime.RemotePluginTestRunner.main(RemotePluginTestRunner.java:62)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;at<br>
org.eclipse.pde.internal.junit.runtime.CoreTestApplication.run(CoreTestApplication.java:23)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;at java.lang.reflect.Method.invoke(Unknown Source)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;at<br>
org.eclipse.equinox.internal.app.EclipseAppContainer.callMethodWithException(EclipseAppContainer.java:574)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;at<br>
org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:195)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;at<br>
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;at<br>
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;at<br>
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:382)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;at<br>
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;at java.lang.reflect.Method.invoke(Unknown Source)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;at org.eclipse.equinox.launcher.Main.run(Main.java:1236)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;at org.eclipse.equinox.launcher.Main.main(Main.java:1212)<br>
<br>
I have tried it with both shadow facts enabled and disabled (just fishing<br>
here)<br>
<br>
I checked the session and can see that the fact is there with the same ID<br>
after the fireAllRules has returned.<br>
<br>
An insert works fine but the modifyInsert does not.<br>
<br>
Thanks<br>
<font color="#888888">--<br>
View this message in context: <a href="http://www.nabble.com/NullPointerException-on-modifyInsert-tp20627245p20627245.html" target="_blank">http://www.nabble.com/NullPointerException-on-modifyInsert-tp20627245p20627245.html</a><br>

Sent from the drools - user mailing list archive at Nabble.com.<br>
<br>
_______________________________________________<br>
rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
</font></blockquote></div><br><br clear="all"><br>-- <br> &nbsp;Edson Tirelli<br> &nbsp;JBoss Drools Core Development<br> &nbsp;JBoss, a division of Red Hat @ <a href="http://www.jboss.com">www.jboss.com</a><br>