[
http://jira.jboss.com/jira/browse/JBRULES-459?page=all ]
Edson Tirelli resolved JBRULES-459.
-----------------------------------
Fix Version/s: 3.0.5
Resolution: Done
There were actually 2 problems:
1. The NPE on ArrayEqualEvaluator
2. Proper support for array attributes in ClassFieldExtractorFactory generated classes
Fixed both and added tests. Although, I would still like to see the code for the
Result.getValue() method to make sure I didn't missed any scenario.
Commited to 3.0.x branch in revision #6018:
----------------
Sending drools-compiler/src/test/java/org/drools/Primitives.java
Sending
drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java
Sending
drools-compiler/src/test/resources/org/drools/integrationtests/null_constraint.drl
Sending drools-core/src/main/java/org/drools/base/ClassFieldExtractorFactory.java
Sending drools-core/src/main/java/org/drools/base/evaluators/ArrayFactory.java
Sending drools-core/src/test/java/org/drools/base/ClassFieldExtractorTest.java
Sending drools-core/src/test/java/org/drools/base/EvaluatorFactoryTest.java
Sending drools-core/src/test/java/org/drools/util/asm/TestBean.java
Transmitting file data ........
Committed revision 6018.
----------------
Commited to trunk in revision #6019:
----------------
Sending drools-compiler/src/test/java/org/drools/Primitives.java
Sending
drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java
Sending
drools-compiler/src/test/resources/org/drools/integrationtests/null_constraint.drl
Sending drools-core/src/main/java/org/drools/base/ClassFieldExtractorFactory.java
Sending drools-core/src/main/java/org/drools/base/evaluators/ArrayFactory.java
Sending drools-core/src/test/java/org/drools/base/ClassFieldExtractorTest.java
Sending drools-core/src/test/java/org/drools/base/EvaluatorFactoryTest.java
Sending drools-core/src/test/java/org/drools/util/asm/TestBean.java
Transmitting file data ........
Committed revision 6019.
----------------
Thanks for reporting and please let me know if you have any other problem.
Literal constraint using 'null' triggers a NPE.
-----------------------------------------------
Key: JBRULES-459
URL:
http://jira.jboss.com/jira/browse/JBRULES-459
Project: JBoss Rules
Issue Type: Bug
Security Level: Public(Everyone can see)
Affects Versions: 3.0.4
Environment: Windows XP SP2.
Reporter: Serge Brisson
Assigned To: Edson Tirelli
Fix For: 3.0.5
The following triggers the problem:
rule "Drops null results"
when
$result: Result(value == null)
then
retract($result);
end
Stack trace:
java.lang.NullPointerException
at org.drools.base.evaluators.ArrayFactory$ArrayEqualEvaluator.evaluate(Unknown Source)
at org.drools.rule.LiteralConstraint.isAllowed(Unknown Source)
at org.drools.reteoo.AlphaNode.assertObject(Unknown Source)
at org.drools.reteoo.ObjectSource.propagateAssertObject(Unknown Source)
at org.drools.reteoo.ObjectTypeNode.assertObject(Unknown Source)
at org.drools.reteoo.Rete.assertObject(Unknown Source)
at org.drools.reteoo.ReteooRuleBase.assertObject(Unknown Source)
at org.drools.reteoo.ReteooWorkingMemory.doAssertObject(Unknown Source)
at org.drools.common.AbstractWorkingMemory.assertObject(Unknown Source)
at org.drools.common.AbstractWorkingMemory.assertObject(Unknown Source)
at org.drools.jsr94.rules.StatelessRuleSessionImpl.executeRules(Unknown Source)
at org.drools.jsr94.rules.StatelessRuleSessionImpl.executeRules(Unknown Source)
at
org.rvpf.rules.ServiceProviderTests.testStatelessSession(ServiceProviderTests.java:130)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:552)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:411)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:785)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:114)
at org.testng.TestRunner.privateRun(TestRunner.java:695)
at org.testng.TestRunner.run(TestRunner.java:574)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:241)
at org.testng.SuiteRunner.run(SuiteRunner.java:145)
at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:901)
at org.testng.TestNG.runSuitesLocally(TestNG.java:863)
at org.testng.TestNG.run(TestNG.java:613)
at org.rvpf.tests.FrameworkTests.main(FrameworkTests.java:132)
The following is a successful work-around:
rule "Drops null results"
when
$result: Result()
eval($result.getValue() == null)
then
retract($result);
end
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira