Hi Michal,<div>You need to change this:</div><div>declare NiceMessage<br> @format(trait)<br> <br>end</div><div><br></div><div>to this:</div><div><br></div><div><span class="Apple-style-span" style="border-collapse:collapse;color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px">declare </span><span class="Apple-style-span" style="border-collapse:collapse;color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px">trait </span><span class="Apple-style-span" style="border-collapse:collapse;color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px">NiceMessage</span></div>
<div><span class="Apple-style-span" style="border-collapse:collapse;color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px"> ..<br>end</span><br><div><br></div><div><br></div><div>Cheers</div><div><br><div class="gmail_quote">
2012/2/29 Michal Bali <span dir="ltr"><<a href="mailto:michalbali@gmail.com">michalbali@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi all,<br><br>I came across this issue when trying out 'traits' with POJOs (not declared types). An IllegalArgumentException is being thrown when I apply the third 'don'. 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("Hello World");<br> insert(message);<br> don(message, NiceMessage.class);<br> <br> Message unreadMessage = new Message();<br> unreadMessage.setMessage("unread");<br>
insert(unreadMessage);<br> don(unreadMessage, NiceMessage.class);<br> <br> Message oldMessage = new Message();<br> oldMessage.setMessage("old");<br> insert(oldMessage);<br>
System.out.println("don " + oldMessage);<br> don(oldMessage, NiceMessage.class); //<b><--- exception happens here</b><br> System.out.println("wont reach this point");<br>end <br>
<br>When I run this and rule 'load' fires the third 'don' will throw the following exception:<br><br>Exception executing consequence for rule "load" 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>
<br>_______________________________________________<br>
rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br> - MyJourney @ <a href="http://salaboy.wordpress.com" target="_blank">http://salaboy.wordpress.com</a><div> - Co-Founder @ <a href="http://www.jugargentina.org" target="_blank">http://www.jugargentina.org</a><br>
- Co-Founder @ <a href="http://www.jbug.com.ar" target="_blank">http://www.jbug.com.ar</a><br> <br> - Salatino "Salaboy" Mauricio -</div><br>
</div></div>