The feature was more important when we didn’t allow casting, but people still wanted to work with Maps and Lists.Map( this[key].age < 30)
Collections where defaulted to typefalse(false)
Now that we support inline casts, it can be argued that things should always be type safe:
Map( this[key]#Person.age < 30 )
It’s hard to change this now, without breaking backwards compatability.
The docs don’t say that it’s defaulted to false for collections, only that it’s useful for Collections. Someone want to submit a pull request fix for this?
Mark
java.util.Collections (and descendants) are not @typesafe by default,
I'll check the reason for that.
More generally, if a fact is declared as not @typesafe, the runtime
failure should be more graceful.
Davide
On 06/10/2014 01:26 PM, Wolfgang Laun wrote:
Consider:
class Foo { /*...*/ }
rule checkFoo
when
Foo( noSuchField > 0 )
then ... end
DRL compilation reports an error (Error: unable to resolve method ...)
and identifies rule, line and column, which is fine.
Now let's look at:
import java.util.ArrayList;
rule checkArrayList
when
ArrayList( noSuchField > 0 )
then ... end
The same DRL compiler (checked with 5.5.0 and 6.0.0) accepts this, and
there is a nasty exception thrown at runtime. This is inconvenient,
since the exception can be thrown by any code inserting an ArrayList
object, and the faulty rule isn't identified.
Why are certain classes second-rate?
-W
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users