[jboss-jira] [JBoss JIRA] Updated: (JBRULES-2621) NPE due to activation.getDeclarationValue( declId )
Mark Proctor (JIRA)
jira-events at lists.jboss.org
Tue May 17 17:16:01 EDT 2011
[ https://issues.jboss.org/browse/JBRULES-2621?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Mark Proctor updated JBRULES-2621:
----------------------------------
Fix Version/s: 5.3.0.M1
(was: 5.2.0.CR1)
Moving this one to Drools 5.3 for now. Discussed with edson and would like to think on this more. We aren't sure if filtering is correct, maybe an sSValid or getFactHandle( String ).
> NPE due to activation.getDeclarationValue( declId )
> ---------------------------------------------------
>
> Key: JBRULES-2621
> URL: https://issues.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: Edson Tirelli
> Fix For: 5.3.0.M1
>
>
> 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.
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the jboss-jira
mailing list