Edson Tirelli wrote:

Forgot to say that we are doing an effort to completely remove shadow proxies in the next major version.
Yes i have a branch now that does not need shadow proxies at all. We will probably recommend an AOP approach for those that need integrity protection in a multi-threaded environment.

2008/2/19, Edson Tirelli <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>:


       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  final or does not have a default constructor.
       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.

       []s
       Edson

    2008/2/19, Godmar Back <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>:

        Hi,

        usings Drools 4.0.4 and MVEL 1.4, this simple rule:
        ---
        package test;

        import java.util.Collections;

        dialect "mvel"

        rule "Rule #1"
        when
        then
            insert(Collections.singletonMap("content", "hello"));
        end
        --

        produces:
        java.lang.IllegalAccessError: class
        org.drools.shadow.java.util.Collections$SingletonMapShadowProxy
        cannot
        access its superclass java.util.Collections$SingletonMap
                at java.lang.ClassLoader.defineClass1(Native Method)
                at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
                at
        
org.drools.rule.MapBackedClassLoader.fastFindClass(MapBackedClassLoader.java:60)
                at
        
org.drools.rule.MapBackedClassLoader.loadClass(MapBackedClassLoader.java:79)
                at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
                at
        
org.drools.reteoo.Rete$ClassObjectTypeConf.loadOrGenerateProxy(Rete.java:547)
                at
        
org.drools.reteoo.Rete$ClassObjectTypeConf.defineShadowProxyData(Rete.java:494)
                at
        org.drools.reteoo.Rete$ClassObjectTypeConf.<init>(Rete.java:461)
                at org.drools.reteoo.Rete.assertObject(Rete.java:152)
                at
        org.drools.reteoo.ReteooRuleBase.assertObject(ReteooRuleBase.java:192)
                at
        
org.drools.reteoo.ReteooWorkingMemory.doInsert(ReteooWorkingMemory.java:71)
                at
        
org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:909)
                at
        
org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:881)
                at
        
org.drools.base.DefaultKnowledgeHelper.insert(DefaultKnowledgeHelper.java:67)
                at
        
org.drools.base.DefaultKnowledgeHelper.insert(DefaultKnowledgeHelper.java:61)


        It's not clear to me why Drools creates Proxies for such
        classes as
        java.util.Collections, or does MVEL do it?

        - Godmar
        _______________________________________________
        rules-users mailing list
        rules-users@lists.jboss.org <mailto:rules-users@lists.jboss.org>
        https://lists.jboss.org/mailman/listinfo/rules-users




-- Edson Tirelli
      JBoss Drools Core Development
      Office: +55 11 3529-6000
      Mobile: +55 11 9287-5646
JBoss, a division of Red Hat @ www.jboss.com <http://www.jboss.com>



--
  Edson Tirelli
  JBoss Drools Core Development
  Office: +55 11 3529-6000
  Mobile: +55 11 9287-5646
  JBoss, a division of Red Hat @ www.jboss.com <http://www.jboss.com>
------------------------------------------------------------------------

_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users

_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users

Reply via email to