Hi all,<br><br>I came across this issue when trying out &#39;traits&#39; with POJOs (not declared types). An IllegalArgumentException is being thrown when I apply the third &#39;don&#39;. Here is how to reproduce:<br>as the POJO I am using the Message class that comes with the project created by the Eclipse plugin.<br>
now the rule file:<br><br>declare Message<br>  @Traitable<br>  <br>end<br><br>declare NiceMessage<br>  @format(trait)<br>  <br>end<br><br>rule load<br>    when<br>       <br>    then<br>        Message message = new Message();<br>
        message.setMessage(&quot;Hello World&quot;);<br>        insert(message);<br>        don(message, NiceMessage.class);<br>            <br>        Message unreadMessage = new Message();<br>        unreadMessage.setMessage(&quot;unread&quot;);<br>
        insert(unreadMessage);<br>        don(unreadMessage, NiceMessage.class);<br>            <br>        Message oldMessage = new Message();<br>        oldMessage.setMessage(&quot;old&quot;);<br>        insert(oldMessage);<br>
        System.out.println(&quot;don &quot; + oldMessage);<br>        don(oldMessage, NiceMessage.class); //<b>&lt;--- exception happens here</b><br>        System.out.println(&quot;wont reach this point&quot;);<br>end <br>
<br>When I run this and rule &#39;load&#39; fires the third &#39;don&#39; will throw the following exception:<br><br>Exception executing consequence for rule &quot;load&quot; in com.mycompany.app: java.lang.IllegalArgumentException: argument type mismatch<br>
    at org.drools.runtime.rule.impl.DefaultConsequenceExceptionHandler.handleException(DefaultConsequenceExceptionHandler.java:39)<br>    at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1101)<br>    at org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:1029)<br>
    at org.drools.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1251)<br>    at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:709)<br>    at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:673)<br>
    at org.drools.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:221)<br>    at com.mycompany.app.DroolsTest.main(DroolsTest.java:44)<br>Caused by: java.lang.IllegalArgumentException: argument type mismatch<br>
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)<br>    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)<br>    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)<br>
    at java.lang.reflect.Constructor.newInstance(Constructor.java:532)<br>    at org.drools.factmodel.traits.TraitFactory.getProxy(TraitFactory.java:92)<br>    at org.drools.base.DefaultKnowledgeHelper.don(DefaultKnowledgeHelper.java:502)<br>
    at org.drools.base.DefaultKnowledgeHelper.don(DefaultKnowledgeHelper.java:522)<br>    at com.mycompany.app.Rule_load_86ecf966a4c14d8486844cfae2e1e0d8.defaultConsequence(Rule_load_86ecf966a4c14d8486844cfae2e1e0d8.java:21)<br>
    at com.mycompany.app.Rule_load_86ecf966a4c14d8486844cfae2e1e0d8DefaultConsequenceInvokerGenerated.evaluate(Unknown Source)<br>    at com.mycompany.app.Rule_load_86ecf966a4c14d8486844cfae2e1e0d8DefaultConsequenceInvoker.evaluate(Unknown Source)<br>
    at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1091)<br>    ... 6 more<br><br>Am I doing something wrong or is this a bug. I am running with 5.4.0.Beta2.<br><br>BTW traits are a great piece of functionality. Thank you!<br>
<br>Best regards,<br>Michal<br>