[jboss-jira] [JBoss JIRA] Closed: (JBRULES-805) Array of object not supported by contains
Edson Tirelli (JIRA)
jira-events at lists.jboss.org
Thu May 3 21:38:30 EDT 2007
[ http://jira.jboss.com/jira/browse/JBRULES-805?page=all ]
Edson Tirelli closed JBRULES-805.
---------------------------------
Fix Version/s: 4.0.0.MR2
Resolution: Done
Thank you for reporting and suggesting the fix.
Let us know if you have any other problem plz.
> Array of object not supported by contains
> ------------------------------------------
>
> Key: JBRULES-805
> URL: http://jira.jboss.com/jira/browse/JBRULES-805
> Project: JBoss Rules
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Environment: linux, java1.4
> Reporter: ahmed yehdih
> Assigned To: Edson Tirelli
> Fix For: 4.0.0.MR2
>
> Original Estimate: 1 hour
> Remaining Estimate: 1 hour
>
> when the array is an array of object like String we get
> java.lang.ClassCastException
> at org.drools.base.evaluators.ObjectFactory$ObjectContainsEvaluator.evaluate(ObjectFactory.java:386)
> at org.drools.rule.LiteralRestriction.isAllowed(LiteralRestriction.java:61)
> at org.drools.rule.LiteralConstraint.isAllowed(LiteralConstraint.java:82)
> at org.drools.reteoo.AlphaNode.assertObject(AlphaNode.java:140)
> at org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:317)
> at org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:183)
> at org.drools.reteoo.Rete.assertObject(Rete.java:121)
> at org.drools.reteoo.ReteooRuleBase.assertObject(ReteooRuleBase.java:196)
> at org.drools.reteoo.ReteooWorkingMemory.doAssertObject(ReteooWorkingMemory.java:70)
> at org.drools.common.AbstractWorkingMemory.assertObject(AbstractWorkingMemory.java:727)
> at org.drools.common.AbstractWorkingMemory.assertObject(AbstractWorkingMemory.java:551)
> example: assume we have a class message
> class Message{
> String [] mess;
> }
> rule "test"
> when
> Message(mess contains "HELLO")
> then
> ..
> end
> the reason is the test in the org.drools.base.ValueType class
> else if ( clazz.isAssignableFrom( Object[].class ) ) {
> return ValueType.ARRAY_TYPE; the test will be satisfied only for array of java.lang.Object and not for others object
> a simple solution is to modify this test in
> else if ( clazz.isArray() && clazz.getComponentType() instanceof Object) {
> return ValueType.ARRAY_TYPE;
--
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
More information about the jboss-jira
mailing list