[
https://issues.jboss.org/browse/DROOLS-8?page=com.atlassian.jira.plugin.s...
]
Peter Hilton updated DROOLS-8:
------------------------------
Description:
I get a {{java.lang.VerifyError}} when I use {{don}} to add a trait to an instance of a
fact type declared in Java with a field whose type is {{long}}:
{code}
java.lang.VerifyError: (class: org/drools/factmodel/traits/ExamMarkWrapper, method:
getValue signature: ()J) Stack size too large
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2427)
at java.lang.Class.privateGetPublicMethods(Class.java:2547)
at java.lang.Class.getMethods(Class.java:1410)
at
org.drools.core.util.asm.ClassFieldInspector.processClassWithoutByteCode(ClassFieldInspector.java:140)
at
org.drools.core.util.asm.ClassFieldInspector.<init>(ClassFieldInspector.java:85)
at
org.drools.core.util.asm.ClassFieldInspector.<init>(ClassFieldInspector.java:66)
at
org.drools.base.ClassFieldAccessorFactory.getClassFieldReader(ClassFieldAccessorFactory.java:109)
at
org.drools.base.ClassFieldAccessorCache$CacheEntry.getReadAccessor(ClassFieldAccessorCache.java:169)
at
org.drools.base.ClassFieldAccessorCache.getReadAcessor(ClassFieldAccessorCache.java:102)
at org.drools.base.ClassFieldAccessorStore.wire(ClassFieldAccessorStore.java:434)
at org.drools.base.ClassFieldAccessorStore.getAccessor(ClassFieldAccessorStore.java:218)
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 org.drools.base.DefaultKnowledgeHelper.don(DefaultKnowledgeHelper.java:594)
at
org.drools.factmodel.traits.Rule_testTraitFieldTypePrimitive_1a1b19e093984aefbb595c793975b053.defaultConsequence(Rule_testTraitFieldTypePrimitive_1a1b19e093984aefbb595c793975b053.java:7)
at
org.drools.factmodel.traits.Rule_testTraitFieldTypePrimitive_1a1b19e093984aefbb595c793975b053DefaultConsequenceInvokerGenerated.evaluate(Unknown
Source)
at
org.drools.factmodel.traits.Rule_testTraitFieldTypePrimitive_1a1b19e093984aefbb595c793975b053DefaultConsequenceInvoker.evaluate(Unknown
Source)
at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1287)
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 org.drools.factmodel.traits.TraitTest.testTraitFieldTypePrimitive(TraitTest.java:37)
{code}
This is using the following DRL and model:
{code}
package org.drools.factmodel.traits;
declare trait PassMark
end
rule "testTraitFieldTypePrimitive"
when
$mark : ExamMark()
then
don($mark, PassMark.class);
end
{code}
{code:java}
package org.drools.factmodel.traits;
/**
* A student examination grade - marks out of ten, used as an example of a fact type whose
field has a primitive type.
*/
public class ExamMark {
private long value;
public long getValue() {
return value;
}
public void setValue(long value) {
if (value < 0 || value > 10) {
throw new IllegalArgumentException("Not a valid grade: " + value);
}
this.value = value;
}
}
{code}
The test is based on {{org.drools.factmodel.traits.TraitTest}}:
{code:java}
@Test
public void testTraitFieldTypePrimitive() {
String source =
"org/drools/factmodel/traits/testTraitFieldTypePrimitive.drl";
StatefulKnowledgeSession session = getSession( source );
session.insert(new ExamMark());
session.fireAllRules();
}
{code}
was:
I get a {{java.lang.VerifyError}} when I use {{don}} to add a trait to an instance of a
fact type declared in Java with a field whose type is {{long}}:
{code}
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2427)
at java.lang.Class.privateGetPublicMethods(Class.java:2547)
at java.lang.Class.getMethods(Class.java:1410)
at
org.drools.core.util.asm.ClassFieldInspector.processClassWithoutByteCode(ClassFieldInspector.java:140)
at
org.drools.core.util.asm.ClassFieldInspector.<init>(ClassFieldInspector.java:85)
at
org.drools.core.util.asm.ClassFieldInspector.<init>(ClassFieldInspector.java:66)
at
org.drools.base.ClassFieldAccessorFactory.getClassFieldReader(ClassFieldAccessorFactory.java:109)
at
org.drools.base.ClassFieldAccessorCache$CacheEntry.getReadAccessor(ClassFieldAccessorCache.java:169)
at
org.drools.base.ClassFieldAccessorCache.getReadAcessor(ClassFieldAccessorCache.java:102)
at org.drools.base.ClassFieldAccessorStore.wire(ClassFieldAccessorStore.java:434)
at org.drools.base.ClassFieldAccessorStore.getAccessor(ClassFieldAccessorStore.java:218)
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 org.drools.base.DefaultKnowledgeHelper.don(DefaultKnowledgeHelper.java:594)
at
org.drools.factmodel.traits.Rule_testTraitFieldTypePrimitive_143d623ff57642cf9f0a23414105029d.defaultConsequence(Rule_testTraitFieldTypePrimitive_143d623ff57642cf9f0a23414105029d.java:7)
at
org.drools.factmodel.traits.Rule_testTraitFieldTypePrimitive_143d623ff57642cf9f0a23414105029dDefaultConsequenceInvokerGenerated.evaluate(Unknown
Source)
at
org.drools.factmodel.traits.Rule_testTraitFieldTypePrimitive_143d623ff57642cf9f0a23414105029dDefaultConsequenceInvoker.evaluate(Unknown
Source)
at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1287)
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 org.drools.factmodel.traits.TraitTest.testTraitFieldTypePrimitive(TraitTest.java:37)
{code}
This is using the following DRL and model:
{code}
package org.drools.factmodel.traits;
declare trait PassMark
end
rule "testTraitFieldTypePrimitive"
when
$mark : ExamMark()
then
don($mark, PassMark.class);
end
{code}
{code:java}
package org.drools.factmodel.traits;
/**
* A student examination grade - marks out of ten, used as an example of a fact type whose
field has a primitive type.
*/
public class ExamMark {
private long value;
public long getValue() {
return value;
}
public void setValue(long value) {
if (value < 0 || value > 10) {
throw new IllegalArgumentException("Not a valid grade: " + value);
}
this.value = value;
}
}
{code}
The test is based on {{org.drools.factmodel.traits.TraitTest}}:
{code:java}
@Test
public void testTraitFieldTypePrimitive() {
String source =
"org/drools/factmodel/traits/testTraitFieldTypePrimitive.drl";
StatefulKnowledgeSession session = getSession( source );
session.insert(new ExamMark());
session.fireAllRules();
}
{code}
Traits: java.lang.VerifyError when you don a trait on a JavaBean with
primitive field type
------------------------------------------------------------------------------------------
Key: DROOLS-8
URL:
https://issues.jboss.org/browse/DROOLS-8
Project: Drools
Issue Type: Bug
Security Level: Public(Everyone can see)
Environment: Drools 5.5.0.Final
Reporter: Peter Hilton
Assignee: Mark Proctor
Labels: traits
I get a {{java.lang.VerifyError}} when I use {{don}} to add a trait to an instance of a
fact type declared in Java with a field whose type is {{long}}:
{code}
java.lang.VerifyError: (class: org/drools/factmodel/traits/ExamMarkWrapper, method:
getValue signature: ()J) Stack size too large
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2427)
at java.lang.Class.privateGetPublicMethods(Class.java:2547)
at java.lang.Class.getMethods(Class.java:1410)
at
org.drools.core.util.asm.ClassFieldInspector.processClassWithoutByteCode(ClassFieldInspector.java:140)
at
org.drools.core.util.asm.ClassFieldInspector.<init>(ClassFieldInspector.java:85)
at
org.drools.core.util.asm.ClassFieldInspector.<init>(ClassFieldInspector.java:66)
at
org.drools.base.ClassFieldAccessorFactory.getClassFieldReader(ClassFieldAccessorFactory.java:109)
at
org.drools.base.ClassFieldAccessorCache$CacheEntry.getReadAccessor(ClassFieldAccessorCache.java:169)
at
org.drools.base.ClassFieldAccessorCache.getReadAcessor(ClassFieldAccessorCache.java:102)
at org.drools.base.ClassFieldAccessorStore.wire(ClassFieldAccessorStore.java:434)
at
org.drools.base.ClassFieldAccessorStore.getAccessor(ClassFieldAccessorStore.java:218)
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 org.drools.base.DefaultKnowledgeHelper.don(DefaultKnowledgeHelper.java:594)
at
org.drools.factmodel.traits.Rule_testTraitFieldTypePrimitive_1a1b19e093984aefbb595c793975b053.defaultConsequence(Rule_testTraitFieldTypePrimitive_1a1b19e093984aefbb595c793975b053.java:7)
at
org.drools.factmodel.traits.Rule_testTraitFieldTypePrimitive_1a1b19e093984aefbb595c793975b053DefaultConsequenceInvokerGenerated.evaluate(Unknown
Source)
at
org.drools.factmodel.traits.Rule_testTraitFieldTypePrimitive_1a1b19e093984aefbb595c793975b053DefaultConsequenceInvoker.evaluate(Unknown
Source)
at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1287)
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 org.drools.factmodel.traits.TraitTest.testTraitFieldTypePrimitive(TraitTest.java:37)
{code}
This is using the following DRL and model:
{code}
package org.drools.factmodel.traits;
declare trait PassMark
end
rule "testTraitFieldTypePrimitive"
when
$mark : ExamMark()
then
don($mark, PassMark.class);
end
{code}
{code:java}
package org.drools.factmodel.traits;
/**
* A student examination grade - marks out of ten, used as an example of a fact type
whose field has a primitive type.
*/
public class ExamMark {
private long value;
public long getValue() {
return value;
}
public void setValue(long value) {
if (value < 0 || value > 10) {
throw new IllegalArgumentException("Not a valid grade: " + value);
}
this.value = value;
}
}
{code}
The test is based on {{org.drools.factmodel.traits.TraitTest}}:
{code:java}
@Test
public void testTraitFieldTypePrimitive() {
String source =
"org/drools/factmodel/traits/testTraitFieldTypePrimitive.drl";
StatefulKnowledgeSession session = getSession( source );
session.insert(new ExamMark());
session.fireAllRules();
}
{code}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see:
http://www.atlassian.com/software/jira