<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Edson Tirelli wrote:
<blockquote
 cite="mid:e6dd5ba30802191211g66c9e55dv8175dc9ea463b049@mail.gmail.com"
 type="cite"><br>
&nbsp;&nbsp; Forgot to say that we are doing an effort to completely remove
shadow proxies in the next major version.<br>
</blockquote>
Yes i have a branch now that does not need shadow proxies at all. We
will probably recommend an&nbsp; AOP approach for those that need integrity
protection in a multi-threaded environment.<br>
<blockquote
 cite="mid:e6dd5ba30802191211g66c9e55dv8175dc9ea463b049@mail.gmail.com"
 type="cite"><br>
  <div><span class="gmail_quote">2008/2/19, Edson Tirelli &lt;<a
 moz-do-not-send="true" 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
 moz-do-not-send="true" 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 "mvel"<br>
      <br>
rule "Rule #1"<br>
when<br>
then<br>
&nbsp;&nbsp;&nbsp;&nbsp;insert(Collections.singletonMap("content", "hello"));<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'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 moz-do-not-send="true"
 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 moz-do-not-send="true"
 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 moz-do-not-send="true"
 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 moz-do-not-send="true"
 href="http://www.jboss.com">www.jboss.com</a>
  <pre wrap="">
<hr size="4" width="90%">
_______________________________________________
rules-users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a>
<a class="moz-txt-link-freetext" href="https://lists.jboss.org/mailman/listinfo/rules-users">https://lists.jboss.org/mailman/listinfo/rules-users</a>
  </pre>
</blockquote>
<br>
</body>
</html>