[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