[rules-users] Null-safe traversal of nested sparse maps?

Dave Schweisguth dave at schweisguth.org
Wed Sep 30 17:50:08 EDT 2009


Dear fellow Droolers,

[Sorry to repeat myself, but I thought this question might have gotten
missed at the bottom of my other one.]

One of my facts' properties, "attributes", is a Map of Map of String.
Unfortunately the second level of keys is sparse. If the attribute I want is
present,

Fact(attributes.KeyOne.KeyTwo == 42)

looks and works great. If KeyTwo is absent, however, I get

org.drools.RuntimeDroolsException: Exception executing predicate attributes.KeyOne.KeyTwo == 42 [...] Caused by: [Error: unable to resolve method: java.util.HashMap.KeyTwo() [arglength=0]] [Near : {... Unknown ....}]

The best syntax I've found which is null-safe is

Fact(attributes.KeyOne["KeyTwo"] == 42)

which works but hurts the eyes somewhat. I'm not clear whether MVEL-style
null-safe traversal should work here; my experiments suggest it does not.
Any suggestions?

Thanks,

-- 
| Dave Schweisguth                           http://schweisguth.org/~dave/ |
| Home: dave at schweisguth.org            Work: http://www.nileguide.com/ |
| For compliance with the NJ Right to Know Act: Contents partially unknown |



More information about the rules-users mailing list