[jboss-jira] [JBoss JIRA] Created: (JBRULES-2621) NPE due to activation.getDeclarationValue( declId )

Wolfgang Laun (JIRA) jira-events at lists.jboss.org
Mon Aug 9 02:53:49 EDT 2010


NPE due to activation.getDeclarationValue( declId )
---------------------------------------------------

                 Key: JBRULES-2621
                 URL: https://jira.jboss.org/browse/JBRULES-2621
             Project: Drools
          Issue Type: Bug
      Security Level: Public (Everyone can see)
          Components: drools-api
    Affects Versions: 5.1.0.FINAL
            Reporter: Wolfgang Laun
            Assignee: Mark Proctor
             Fix For: 5.1.1.FINAL


Trying to access the declarations and their values of an activation, as used during ActivationEvent logging:

   List<String> declIds = );
   for( String declId: activation.getDeclarationIDs( ){
      Object declVal = activation.getDeclarationValue( declId );
      // ...
   }

If, however, a fact is retracted, this code, when executed for an AfterActivationFiredEvent, throws a NPE when declId is a binding for a component of the retracted fact.

The optimum solution would be to not get such useless bindings in the List<String> returned by getDeclarationIDs() which is in AgendaItem.java. I have added the if-statement. The following code is untested:

    public List<String> getDeclarationIDs() {
        Declaration[] declArray = this.getRule().getDeclarations();
        List<String> declarations = new ArrayList<String>();
        for( Declaration decl : declArray ) {
            // return only "sound" declaration IDs
            if( this.tuple.get( decl ).getObject() != null ){
                declarations.add( decl.getIdentifier() );
            }
        }
        return Collections.unmodifiableList( declarations );
    }


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the jboss-jira mailing list