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]>: > > 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 > 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
_______________________________________________ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users