[rules-users] NPE with enum?

Mark Proctor mproctor at codehaus.org
Mon Dec 24 11:27:51 EST 2007


The 'and' is redundant, it's implicitely implied for top level patterns

      $rt: ResourceType( )
      $perm: ResourceTypePermission( accessType != AccessType.READ ) from $rt.permissions
      com.christws.entities.Role($rolename: name) from $perm.role
      Role(name == $rolename)

Can you make a small self contained test and upload it as a jira for us.

Thanks

Mark

Andrew Robinson wrote:
> I have an enumeration called AccessType:
> public enum AccessType
> {
>   READ,
>   UPDATE,
>   DELETE
> }
>
> In a rule, I have:
>       $rt: ResourceType( )
>       and $perm: ResourceTypePermission( accessType != AccessType.READ
> ) from $rt.permissions
>       and com.christws.entities.Role($rolename: name) from $perm.role
>       and Role(name == $rolename)
>
> I am getting the following exception:
> java.lang.NullPointerException
> 	at org.drools.base.com.christws.entities.ResourceTypePermission7859095$getAccessType.getValue(Unknown
> Source)
> 	at org.drools.base.ClassFieldExtractor.getValue(ClassFieldExtractor.java:127)
> 	at org.drools.base.evaluators.ObjectFactory$ObjectNotEqualEvaluator.evaluate(ObjectFactory.java:175)
> 	at org.drools.rule.LiteralRestriction.isAllowed(LiteralRestriction.java:61)
> 	at org.drools.rule.LiteralConstraint.isAllowed(LiteralConstraint.java:82)
> 	at org.drools.reteoo.FromNode.assertTuple(FromNode.java:73)
> 	at org.drools.reteoo.SingleTupleSinkAdapter.propagateAssertTuple(SingleTupleSinkAdapter.java:20)
> 	at org.drools.reteoo.JoinNode.assertObject(JoinNode.java:149)
> 	at org.drools.reteoo.SingleObjectSinkAdapter.propagateAssertObject(SingleObjectSinkAdapter.java:22)
> 	at org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:153)
> 	at org.drools.reteoo.Rete.assertObject(Rete.java:177)
> 	at org.drools.reteoo.ReteooRuleBase.assertObject(ReteooRuleBase.java:192)
> 	at org.drools.reteoo.ReteooWorkingMemory.doInsert(ReteooWorkingMemory.java:71)
> 	at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:886)
> 	at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:858)
> 	at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:659)
> 	at org.jboss.seam.security.RuleBasedIdentity.hasPermission(RuleBasedIdentity.java:143)
> 	at org.jboss.seam.security.Identity.checkPermission(Identity.java:474)
>
> The accessType is not null (checked with the debugger). Do you know
> why I would be getting this? If it matters, the getAccessType method
> and the accessType field are defined in an abstract super class of
> ResourceTypePermission (ResourceTypePermission extends RolePermission
> extends Permission which has the field)
>
> drools version 4.0.3
>
> -Andrew
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>   




More information about the rules-users mailing list