[rules-users] Re: Using JDK dynamic proxies as facts

Mark Proctor mproctor at codehaus.org
Fri Jul 13 09:32:35 EDT 2007


That is not the only thing that determines shadowing. If you look the 
shadowing is actually determined here:
            if ( !ruleBase.getConfiguration().isShadowProxy() || cls == 
null || !ruleBase.getConfiguration().isShadowed( cls.getName() ) ) {
                return;
            }
By default shadowing is turned on for all (none final) bjects, except 
stuff in the org.drools namespace, you have to set exclusion lists.too. 
So if your package has a null namespace it will still attempt to shadow it.

Mark

Chris West wrote:
> OK, I just solved my own problem.  My proxy had no package, since the 
> jdk based proxy is only in a package if it has at least 1 non public 
> interface, according to the javadoc.
>
> The suspect code beginning on line 333 is:
>
>             String pkgName = cls.getPackage().getName();
>             if ( "org.drools.reteoo".equals( pkgName ) || 
> "org.drools.base".equals( pkgName ) ) {
>                 // We don't shadow internal classes
>                 this.shadowEnabled = false;
>                 return;
>             }
>
> The getPackage() method returns null.  In this case, it would be good 
> if JBoss Rules handled the null and went on to shadow the object 
> anyway, since it is obviously not in the org.drools packages.
>
> Now I'll continue trying to build a test case for my original problem.
>
> Shall I enter a JIRA for this issue?
>
> Thanks,
> -Chris West
>
> On 7/12/07, *Chris West* <crayzfishr at gmail.com 
> <mailto:crayzfishr at gmail.com>> wrote:
>
>     Hello,
>
>     I'm trying to use objects that are generated as dynamic proxies
>     (through the java.lang.reflect.Proxy class) as facts in JBoss
>     Rules 4.0 MR3.  My project was using CGLib to generate proxies,
>     and they were working just fine in 3.0.6.  However, when I tried
>     4.0, the CGLib based proxies seemed to have a final method that
>     kept the proxies from being proxied as shadow facts.  So I rewrote
>     my code to try to use JDK based proxies, and version 4.0 MR3
>     accepts them and apparently creates shadow facts, but now my rules
>     don't fire correctly.
>
>     So, in an attempt to create a simple program to illustrate the
>     problem, I ran into a different problem.  The attached eclipse
>     project illustrates this problem.
>
>     The error is:
>
>     java.lang.NullPointerException
>         at org.drools.reteoo.Rete$ObjectTypeConf.<init>(Rete.java:333)
>         at org.drools.reteoo.Rete.assertObject(Rete.java:152)
>         at
>     org.drools.reteoo.ReteooRuleBase.assertObject(ReteooRuleBase.java:190)
>         at
>     org.drools.reteoo.ReteooWorkingMemory.doInsert(ReteooWorkingMemory.java:70)
>         at
>     org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:772)
>         at org.drools.common.AbstractWorkingMemory.insert
>     (AbstractWorkingMemory.java:584)
>         at com.sample.DroolsTest.main(DroolsTest.java:42)
>
>     Has anyone successfully used JDK based dynamic proxies as facts?
>
>     Thanks,
>     -Chris West
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>   

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20070713/b656e1af/attachment.html 


More information about the rules-users mailing list