<br>&nbsp;&nbsp; Forgot to say that we are doing an effort to completely remove shadow proxies in the next major version.<br><br><div><span class="gmail_quote">2008/2/19, Edson Tirelli &lt;<a href="mailto:tirelli@post.com">tirelli@post.com</a>&gt;:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>&nbsp;&nbsp; Drools tries to create the ShadowProxy. The reason is that it does not know about the implementation... it just knows it is a Map and as so, it must be shadowed. Problem is that SingletonMap is either&nbsp; final or does not have a default constructor.<br>

&nbsp;&nbsp; My recommendation, besides opening a JIRA for this, is avoid inserting collections/maps directly as facts. The semantic for such facts is not clearly defined and it may cause undesired behavior.<br><br>&nbsp;&nbsp; []s<br>&nbsp;&nbsp; Edson<br>

<br><div><span class="gmail_quote">2008/2/19, Godmar Back &lt;<a href="mailto:godmar@gmail.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">godmar@gmail.com</a>&gt;:</span><div><span class="e" id="q_1183352161a7fa5d_1"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

Hi,<br><br>usings Drools 4.0.4 and MVEL 1.4, this simple rule:<br>---<br>package test;<br><br>import java.util.Collections;<br><br>dialect &quot;mvel&quot;<br><br>rule &quot;Rule #1&quot;<br>when<br>then<br>&nbsp;&nbsp;&nbsp;&nbsp;insert(Collections.singletonMap(&quot;content&quot;, &quot;hello&quot;));<br>

end<br>--<br><br>produces:<br>java.lang.IllegalAccessError: class<br>org.drools.shadow.java.util.Collections$SingletonMapShadowProxy cannot<br>access its superclass java.util.Collections$SingletonMap<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at java.lang.ClassLoader.defineClass1(Native Method)<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at java.lang.ClassLoader.defineClass(ClassLoader.java:620)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at org.drools.rule.MapBackedClassLoader.fastFindClass(MapBackedClassLoader.java:60)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at org.drools.rule.MapBackedClassLoader.loadClass(MapBackedClassLoader.java:79)<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at java.lang.ClassLoader.loadClass(ClassLoader.java:251)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at org.drools.reteoo.Rete$ClassObjectTypeConf.loadOrGenerateProxy(Rete.java:547)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at org.drools.reteoo.Rete$ClassObjectTypeConf.defineShadowProxyData(Rete.java:494)<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at org.drools.reteoo.Rete$ClassObjectTypeConf.&lt;init&gt;(Rete.java:461)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at org.drools.reteoo.Rete.assertObject(Rete.java:152)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at org.drools.reteoo.ReteooRuleBase.assertObject(ReteooRuleBase.java:192)<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at org.drools.reteoo.ReteooWorkingMemory.doInsert(ReteooWorkingMemory.java:71)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:909)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:881)<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at org.drools.base.DefaultKnowledgeHelper.insert(DefaultKnowledgeHelper.java:67)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at org.drools.base.DefaultKnowledgeHelper.insert(DefaultKnowledgeHelper.java:61)<br><br><br>It&#39;s not clear to me why Drools creates Proxies for such classes as<br>

java.util.Collections, or does MVEL do it?<br><br> - Godmar<br>_______________________________________________<br>rules-users mailing list<br><a href="mailto:rules-users@lists.jboss.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">rules-users@lists.jboss.org</a><br>

<a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">https://lists.jboss.org/mailman/listinfo/rules-users</a><br></blockquote></span></div>
</div><span class="sg"><br><br clear="all"><br>-- <br>&nbsp;&nbsp;Edson Tirelli<br>&nbsp;&nbsp;JBoss Drools Core Development<br>
&nbsp;&nbsp;Office: +55 11 3529-6000<br>&nbsp;&nbsp;Mobile: +55 11 9287-5646<br>&nbsp;&nbsp;JBoss, a division of Red Hat @ <a href="http://www.jboss.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">www.jboss.com</a>
</span></blockquote></div><br><br clear="all"><br>-- <br>&nbsp;&nbsp;Edson Tirelli<br>&nbsp;&nbsp;JBoss Drools Core Development<br>&nbsp;&nbsp;Office: +55 11 3529-6000<br>&nbsp;&nbsp;Mobile: +55 11 9287-5646<br>&nbsp;&nbsp;JBoss, a division of Red Hat @ <a href="http://www.jboss.com">www.jboss.com</a>