[rules-users] Unresolved Object Reference
Edson Tirelli
tirelli at post.com
Thu Jul 5 19:26:49 EDT 2007
There was a problem with CGLIB proxies much similar to this... so
probably the same problem.
What happens is that to shadow a fact, drools needs to extend the actual
class being asserted, and override the equals and hashcode methods. So, the
class can't be final, nor these methods can be final. Previously I wasn't
checking for final on these methods and that was the reason for the error.
I fixed that in trunk. It means, if XML Beans are generating methods
equals/hashCode as final, drools won't be able to shadow them (and so will
automatically disable shadowing for them), but it will not raise the error
anymore.
Let me know if it is still a problem for you in trunk.
[]s
Edson
2007/7/5, Ronald R. DiFrango <ron.difrango at gmail.com>:
>
> All this sounds eerily similar to the problem I am reporting. In the 4.0version I am getting the following exception on those inner classes:
>
> Exception in thread "main" java.lang.VerifyError: class
> com.circuitcity.rtvcrms.impl.DetailLineDocumentImpl$DetailLineImplShadowProxyoverrides final method ã Ý*h '+ .û Ý*h '+
> at java.lang.ClassLoader.defineClass1(Native Method)
> at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
> at java.lang.ClassLoader.defineClass (ClassLoader.java:465)
> at org.drools.rule.MapBackedClassLoader.fastFindClass(
> MapBackedClassLoader.java:40)
> at org.drools.rule.MapBackedClassLoader.loadClass(
> MapBackedClassLoader.java:59)
> at java.lang.ClassLoader.loadClass (ClassLoader.java:251)
> at org.drools.reteoo.Rete$ObjectTypeConf.<init>(Rete.java:352)
> 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.circuitcity.rtvcrms.rules.RtvDecisionEngine.processDetailLines(
> RtvDecisionEngine.java:95)
> at com.circuitcity.rtvcrms.rules.RtvDecisionEngine.executeRules(
> RtvDecisionEngine.java :64)
> at com.circuitcity.rtvcrms.test.MainBasedTester.main(
> MainBasedTester.java:34)
>
> The catch is that XML Beans objects are auto generated based upon and XSD
> and we have limited control over what gets generated.
>
> On 7/5/07, Narendra Valada <narendra.valada at gmail.com> wrote:
> >
> > Thank you for your quick response.
> >
> > I cannot make the Outer class static and public since it is not an inner
> > class.
> >
> > In my example, I have two inner classes : Inner and InnerInner.
> >
> > Class Inner is enclosed by Outer and class InnerInner is enclosed by
> > Inner. I get the "Unable to resolve object type" error only on the
> > "InnerInner" class and not on the "Inner" class.
> >
> > Both the inner classes are defined as non-static.
> >
> > Thanks,
> >
> > Narendra
> >
> >
> >
> > On 7/5/07, Mark Proctor <mproctor at codehaus.org > wrote:
> > >
> > > you need to make your Outer class static and public. Look at the
> > > sample generated with a new drools project, that uses a static public class.
> > >
> > > Mark
> > > Narendra Valada wrote:
> > >
> > > * **Hello,*
> > > * *
> > > *I am getting an "Unable to resolve object type" error on certain XML
> > > Bean generated inner classes. I get this error only on inner classes that
> > > have been defined within other inner classes. Please see example below.
> > > *
> > > * *
> > > *Is this a known limitation of JBoss Rules (I am using JBOSS Rules
> > > 3.0.6) or the JANINO compiler?*
> > > * *
> > > *Thanks.*
> > > *
> > >
> > > package
> > > *
> > > *com.sample;
> > >
> > > public
> > > class Outer{ public class Inner { public boolean inner =false;
> > > public class InnerInner {
> > >
> > > }
> > >
> > > }
> > >
> > > }
> > > **package*
> > > com.sample *
> > >
> > > import
> > > *com.sample.Outer1.Inner.InnerInner; *
> > >
> > > rule
> > > *"Hello World 1" *when*
> > >
> > > InnerInner()
> > > *then*
> > >
> > > System.out.println(
> > > "");*
> > >
> > > end
> > > *
> > >
> > > ------------------------------
> > >
> > > _______________________________________________
> > > rules-users mailing list
> > > rules-users at lists.jboss.org
> > > https://lists.jboss.org/mailman/listinfo/rules-users
> > >
> > >
> > >
> > >
> > > _______________________________________________
> > > rules-users mailing list
> > > rules-users at lists.jboss.org
> > > https://lists.jboss.org/mailman/listinfo/rules-users
> > >
> > >
> >
> > _______________________________________________
> > rules-users mailing list
> > rules-users at lists.jboss.org
> > https://lists.jboss.org/mailman/listinfo/rules-users
> >
> >
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
--
Edson Tirelli
Software Engineer - JBoss Rules Core Developer
Office: +55 11 3529-6000
Mobile: +55 11 9287-5646
JBoss, a division of Red Hat @ www.jboss.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20070705/63dfd3ea/attachment.html
More information about the rules-users
mailing list