Thank you Wolfgang,<br><br>your bug report is crystal clear as usual ;)<br>I'll try to reproduce and fix this asap.<br><br>Mario<br><br><div class="gmail_quote">On Thu, Jan 17, 2013 at 7:29 AM, Wolfgang Laun <span dir="ltr"><<a href="mailto:wolfgang.laun@gmail.com" target="_blank">wolfgang.laun@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">The error occurs when the following rule fires ;-)<br>
<br>
rule "error occurs"<br>
$fact1: Fact( $class: class )<br>
$fact2: Fact( class == $class, this != $fact1 )<br>
Field( $name: name, type == $class, modifiers == Modifier.PUBLIC )<br>
Rule( dialect == "mvel",<br>
$rule: name<br>
rightHandSide matches (".\\s*" + $name + "\\s*=\\s*\S+\\s*;" ) );<br>
then<br>
System.out.println( "When rule " + $rule + " fires, an exception occurs" );<br>
end<br>
<br>
In words:<br>
All the following conditions must be met:<br>
* WM contains at least two facts of the same type<br>
* there is a public field<br>
* the rule's dialect is set to MVEL<br>
* a rule's right hand side contains an assignment to the public field<br>
<br>
Occurs with versions 5.[2345].0<br>
<br>
-W<br>
<br>
<br>
On 16/01/2013, Chang Liu <<a href="mailto:CLiu@deltadentalmi.com">CLiu@deltadentalmi.com</a>> wrote:<br>
> A rule to repro this situation:<br>
><br>
> The rule:<br>
> ...<br>
> rule "Assignment In Action Test"<br>
> when<br>
> obj : Foo()<br>
> then<br>
> obj.x = 1;<br>
> System.out.println("Rule Fired!");<br>
> end<br>
> ...<br>
><br>
> Definition of class Foo:<br>
> public class Foo {<br>
> public int x;<br>
> public int getX() {<br>
> return x;<br>
> }<br>
> public void setX(int x) {<br>
> this.x = x;<br>
> }<br>
> }<br>
><br>
> Objects been inserted:<br>
> Foo foo1 = new Foo();<br>
> foo1.x = 0;<br>
> Foo foo2 = new Foo();<br>
> Foo2.x = 1000;<br>
><br>
> Note that if only one Foo object is inserted, things work fine. If more than<br>
> one Foo objects are inserted, we see this Exception:<br>
><br>
> Exception executing consequence for rule "Assignment In Action Test" in<br>
> com.sample: java.lang.RuntimeException: unable to access field<br>
> at<br>
> org.drools.runtime.rule.impl.DefaultConsequenceExceptionHandler.handleException(DefaultConsequenceExceptionHandler.java:39)<br>
> at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1283)<br>
> at org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:1209)<br>
> at org.drools.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1442)<br>
> at<br>
> org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:710)<br>
> at<br>
> org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:674)<br>
> at<br>
> org.drools.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:230)<br>
> at<br>
> com.sample.AssignmentInActionTestMain.main(AssignmentInActionTestMain.java:37)<br>
> Caused by: java.lang.RuntimeException: unable to access field<br>
> at<br>
> org.mvel2.optimizers.impl.refl.nodes.DynamicFieldAccessor.setValue(DynamicFieldAccessor.java:66)<br>
> at<br>
> org.mvel2.optimizers.impl.refl.nodes.IndexedVariableAccessor.setValue(IndexedVariableAccessor.java:43)<br>
> at<br>
> org.mvel2.compiler.CompiledAccExpression.setValue(CompiledAccExpression.java:59)<br>
> at<br>
> org.mvel2.ast.DeepAssignmentNode.getReducedValueAccelerated(DeepAssignmentNode.java:92)<br>
> at org.mvel2.MVELRuntime.execute(MVELRuntime.java:85)<br>
> at<br>
> org.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:126)<br>
> at org.mvel2.MVEL.executeExpression(MVEL.java:930)<br>
> at org.drools.base.mvel.MVELConsequence.evaluate(MVELConsequence.java:101)<br>
> at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1273)<br>
> ... 6 more<br>
> Caused by: java.lang.NullPointerException<br>
> at org.mvel2.DataConversion.convert(DataConversion.java:118)<br>
> at<br>
> org.mvel2.optimizers.impl.refl.nodes.DynamicFieldAccessor.setValue(DynamicFieldAccessor.java:61)<br>
> ... 14 more<br>
><br>
> -----Original Message-----<br>
> From: <a href="mailto:rules-users-bounces@lists.jboss.org">rules-users-bounces@lists.jboss.org</a><br>
> [mailto:<a href="mailto:rules-users-bounces@lists.jboss.org">rules-users-bounces@lists.jboss.org</a>] On Behalf Of Wolfgang Laun<br>
> Sent: Wednesday, January 16, 2013 10:35 AM<br>
> To: Rules Users List<br>
> Subject: Re: [rules-users] Exception executing consequence for rule xxx in<br>
> yyy: java.lang.RuntimeException: unable to access field<br>
><br>
> What's the type of $billingOutputRuleContext.retroPreviousBillAmount?<br>
><br>
> On 16/01/2013, magaram <<a href="mailto:magaram@deltadentalmi.com">magaram@deltadentalmi.com</a>> wrote:<br>
>> The behavior stated seems very erratic as other similar rules are<br>
>> executing.<br>
>> Also note that the fields in the consequence have a visibility of public.<br>
>> Are there any known issues surrounding this?<br>
>><br>
>><br>
>><br>
>> --<br>
>> View this message in context:<br>
>> <a href="http://drools.46999.n3.nabble.com/Exception-executing-consequence-for-" target="_blank">http://drools.46999.n3.nabble.com/Exception-executing-consequence-for-</a><br>
>> rule-xxx-in-yyy-java-lang-RuntimeException-unable-to-access-field-tp40<br>
>> 21553p4021576.html Sent from the Drools: User forum mailing list<br>
>> archive at Nabble.com.<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>
>><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>
><br>
> **********************************************************************<br>
> CONFIDENTIALITY NOTICE: The information contained in this email is intended<br>
> only for the person or entity to which it is addressed and may contain<br>
> confidential and/or privileged material. If you are not the intended<br>
> recipient, you are hereby notified that any unauthorized review, use,<br>
> dissemination, distribution or copying of this communication is prohibited<br>
> and may be subject to legal restriction or sanction. If you have received<br>
> this email in error, please notify the sender immediately to arrange for<br>
> return or destruction of the information and all copies. If you are the<br>
> intended recipient but do not wish to receive communications through this<br>
> medium, please advise the sender immediately. Thank you<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>
><br>
</blockquote></div><br>