<!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">
That is not the only thing that determines shadowing. If you look the
shadowing is actually determined here:<br>
if ( !ruleBase.getConfiguration().isShadowProxy() || cls ==
null || !ruleBase.getConfiguration().isShadowed( cls.getName() ) ) {<br>
return;<br>
}<br>
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.<br>
<br>
Mark<br>
<br>
Chris West wrote:
<blockquote
cite="mid:20331b80707121258s7f1acfe5j13cde9c1b8a0f946@mail.gmail.com"
type="cite">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.<br>
<br>
The suspect code beginning on line 333 is:
<br>
<br>
String pkgName = cls.getPackage().getName();<br>
if ( "org.drools.reteoo".equals( pkgName ) ||
"org.drools.base".equals( pkgName ) ) {<br>
// We don't shadow internal classes
<br>
this.shadowEnabled = false;<br>
return;<br>
}<br>
<br>
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.<br>
<br>
Now I'll continue trying to build a test case for my original problem.<br>
<br>
Shall I enter a JIRA for this issue?<br>
<br>
Thanks,<br>
-Chris West<br>
<br>
<div><span class="gmail_quote">On 7/12/07, <b
class="gmail_sendername">Chris West</b> <<a moz-do-not-send="true"
href="mailto:crayzfishr@gmail.com">crayzfishr@gmail.com</a>> wrote:</span>
<blockquote class="gmail_quote"
style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Hello,<br>
<br>
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.
<br>
<br>
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.<br>
<br>
The error is:<br>
<br>
java.lang.NullPointerException
<br>
at org.drools.reteoo.Rete$ObjectTypeConf.<init>(Rete.java:333)<br>
at org.drools.reteoo.Rete.assertObject(Rete.java:152)<br>
at
org.drools.reteoo.ReteooRuleBase.assertObject(ReteooRuleBase.java:190)<br>
at
org.drools.reteoo.ReteooWorkingMemory.doInsert(ReteooWorkingMemory.java:70)<br>
at
org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:772)<br>
at org.drools.common.AbstractWorkingMemory.insert
(AbstractWorkingMemory.java:584)<br>
at com.sample.DroolsTest.main(DroolsTest.java:42)<br>
<br>
Has anyone successfully used JDK based dynamic proxies as facts?<br>
<br>
Thanks,<br>
<span class="sg">-Chris West<br>
</span><br clear="all">
</blockquote>
</div>
<br>
<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>