[rules-users] Issue with Trait feature

braveheart85 andrea.pacifico.85 at gmail.com
Fri Sep 13 08:37:46 EDT 2013


Hello, 

I'm just trying trait feature with simple example. 
I want trait a PersonData object with a SubjectData trait. My DLR is: 

package general 

import com.sample.PersonData 

declare trait SubjectData 
        
        identifierCode : String 
        selected : boolean 
end 

rule "PersonToSubject" 

        when 
                $p : PersonData(  ) 
        then 
                SubjectData s = don( $p, SubjectData.class, true); 
end 

and my PersonData class is: 

package com.sample; 

import java.util.ArrayList; 
import java.util.List; 

public class PersonData { 

    protected String identifierCode; 
    protected List<String> addressList; 
    protected boolean isSelected; 

    public String getIdentifierCode() { 
        return identifierCode; 
    } 
    public void setIdentifierCode(String value) { 
        this.identifierCode = value; 
    } 

    public List<String> getAddressList() { 
        if (addressList == null) { 
            addressList = new ArrayList<String>(); 
        } 
        return this.addressList; 
    } 

        public boolean isSelected() { 
                return isSelected; 
        } 

        public void setSelected(boolean isSelected) { 
                this.isSelected = isSelected; 
        } 
} 

when i run the engine i get an ugly exception: 

Exception executing consequence for rule "PersonToSubject" in general:
org.drools.RuntimeDroolsException: Field/method 'addressList' not found for
class 'org.titan.registry.PersonDataWrapper' 
        at
org.drools.runtime.rule.impl.DefaultConsequenceExceptionHandler.handleException(DefaultConsequenceExceptionHandler.java:39) 
        at
org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1297) 
        at
org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:1221) 
        at
org.drools.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1456) 
        at
org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:710) 
        at
org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:674) 
        at
org.drools.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:230) 
        at com.sample.DroolsTest.main(DroolsTest.java:143) 
Caused by: org.drools.RuntimeDroolsException: Field/method 'addressList' not
found for class 'org.titan.registry.PersonDataWrapper' 
        at
org.drools.base.ClassFieldAccessorFactory.getClassFieldWriter(ClassFieldAccessorFactory.java:199) 
        at
org.drools.base.ClassFieldAccessorCache$CacheEntry.getWriteAccessor(ClassFieldAccessorCache.java:187) 
        at
org.drools.base.ClassFieldAccessorCache.getWriteAcessor(ClassFieldAccessorCache.java:116) 
        at
org.drools.base.ClassFieldAccessorStore.wire(ClassFieldAccessorStore.java:439) 
        at
org.drools.base.ClassFieldAccessorStore.getAccessor(ClassFieldAccessorStore.java:219) 
        at
org.drools.factmodel.traits.TraitFactory.buildWrapperClassDefinition(TraitFactory.java:405) 
        at
org.drools.factmodel.traits.TraitFactory.getCoreWrapper(TraitFactory.java:367) 
        at
org.drools.base.DefaultKnowledgeHelper.asTraitable(DefaultKnowledgeHelper.java:560) 
        at
org.drools.base.DefaultKnowledgeHelper.applyTrait(DefaultKnowledgeHelper.java:542) 
        at
org.drools.base.DefaultKnowledgeHelper.don(DefaultKnowledgeHelper.java:521) 
        at
general.Rule_PersonToSubject_38ef6f901e5f401e805934fa0a2576c9.defaultConsequence(Rule_PersonToSubject_38ef6f901e5f401e805934fa0a2576c9.java:7) 
        at
general.Rule_PersonToSubject_38ef6f901e5f401e805934fa0a2576c9DefaultConsequenceInvokerGenerated.evaluate(Unknown
Source) 
        at
general.Rule_PersonToSubject_38ef6f901e5f401e805934fa0a2576c9DefaultConsequenceInvoker.evaluate(Unknown
Source) 
        at
org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1287) 
        ... 6 more 

Seem to be an issue with java.util.List that is contained within PersonData,
even if the list (addressList) is not selected from SubjectData trait. 

Thanks in advance 
Best regards 

Andrea



--
View this message in context: http://drools.46999.n3.nabble.com/Issue-with-Trait-feature-tp4025937.html
Sent from the Drools: User forum mailing list archive at Nabble.com.


More information about the rules-users mailing list