Ronald,<br><br>I use Ant task too but in my usecase I'd like to add additional property to objects on a fly (actually collection of parents) so I can check it on a LHS. Currently I use eval on external objects (identity map with child and associated parents). I don't know yet if this approach viable at all but if I manage to add such a property I'll get rid of eval thus having advantages of properties caching and indexing. Time will show...<br><br>Oleg.<br><br><b><i>"Ronald R. DiFrango" <ron.difrango@gmail.com></i></b> wrote:<blockquote class="replbq" style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;"> Oleg,<br><br>Are you generating the Castor classes on the fly? I am successfully using Castor generated classes within the rules engine without any proxy classes. My process is that I use the Castor ant task to generate objects based upon my schema. I then develop my rules against the Castor generated objects.
These work just fine with stock JBoss Rules, so the question is why the proxy classes? <br><br>Ron<br><br><div><span class="gmail_quote">On 7/17/07, <b class="gmail_sendername">Oleg Yavorsky</b> <<a href="mailto:oleg_yavorsky@yahoo.com">oleg_yavorsky@yahoo.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;"> Chris,<br><br>I'll try to dig it a little too. My problem is that I need to proxy concrete classes as they are generated from XSD using Castor. If I find workaround I'll let you know.<br><span class="sg"><br>Oleg. </span><div><span class="e" id="q_113d51816aa5658e_2"><br><br><b><i>Chris West <<a href="mailto:crayzfishr@gmail.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">crayzfishr@gmail.com</a>></i> </b> wrote:</span></div><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;"><div><span
class="e" id="q_113d51816aa5658e_4"> Oleg,<br><br>So far I have not been successful. I've just posted my thoughts to this list (under the subject "The effect of not using shadow facts"). Concerning the class names, my rules only match on an interface type implemented by the proxies, so the actual class type of the instance does not matter. <br><br>-Chris<br><br><div><span class="gmail_quote">On 7/13/07, <b class="gmail_sendername">Oleg Yavorsky</b> <<a href="mailto:oleg_yavorsky@yahoo.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"> oleg_yavorsky@yahoo.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;"> Chris,<br><br>I'm thinking about using dynamic proxies in my rules too. I'll be glad to hear about your success with them. I think that there could be problem with matching of facts as they won't be of original class but of
Proxy$... one. CGLIB approach doesn't have such problem as it just modifies original classes' bytecode. I could be wrong, anyway. <br><br>Oleg.<div><span><br><br><b><i>Mark Proctor <<a href="mailto:mproctor@codehaus.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">mproctor@codehaus.org </a>></i></b> wrote:<blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;"> 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 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 href="mailto:crayzfishr@gmail.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">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>-Chris West<br> </span><br clear="all"> </blockquote> </div> <br> <pre><hr size="4" width="90%"> _______________________________________________ rules-users mailing list <a href="mailto:rules-users@lists.jboss.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"> rules-users@lists.jboss.org</a>
<a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">https://lists.jboss.org/mailman/listinfo/rules-users</a> </pre> </blockquote> <br> _______________________________________________ <br>rules-users mailing list<br><a href="mailto:rules-users@lists.jboss.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"> rules-users@lists.jboss.org</a><br><a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"> https://lists.jboss.org/mailman/listinfo/rules-users </a><br></blockquote><br></span></div><span><div> </div><hr> Вы уже с Yahoo!?<br> Испытайте обновленную и улучшенную <a>Yahoo! Почту</a>!<div></div></span><br>_______________________________________________<br>rules-users mailing list<br><a href="mailto:rules-users@lists.jboss.org" target="_blank" onclick="return
top.js.OpenExtLink(window,event,this)"> rules-users@lists.jboss.org</a><br><a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">https://lists.jboss.org/mailman/listinfo/rules-users </a><br><br></blockquote></div><br></span></div> _______________________________________________<span class="q"><br>rules-users mailing list<br><a href="mailto:rules-users@lists.jboss.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"> rules-users@lists.jboss.org</a><br><a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">https://lists.jboss.org/mailman/listinfo/rules-users </a><br></span></blockquote><div><span class="e" id="q_113d51816aa5658e_8"><br><div> </div><hr size="1"><br>Вы уже с Yahoo!? Испытайте обновленную и улучшенную. <a href="http://ru.mail.yahoo.com" target="_blank" onclick="return
top.js.OpenExtLink(window,event,this)">Yahoo! Почту</a>!<div></div></span></div><br>_______________________________________________ <br>rules-users mailing list<br><a onclick="return top.js.OpenExtLink(window,event,this)" href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br><a onclick="return top.js.OpenExtLink(window,event,this)" href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank"> https://lists.jboss.org/mailman/listinfo/rules-users</a><br><br></blockquote></div><br> _______________________________________________<br>rules-users mailing list<br>rules-users@lists.jboss.org<br>https://lists.jboss.org/mailman/listinfo/rules-users<br></blockquote><br><p> 
<hr size="1"><br />Вы уже с Yahoo!?
Испытайте обновленную и улучшенную. <a href="http://ru.mail.yahoo.com">Yahoo! Почту</a>!