[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