[rules-users] Re: Odd static inner class behavior
Eric Miles
eric.miles at kronos.com
Wed Aug 1 12:15:47 EDT 2007
Edson,
I was finally able to get around to making a test case to determine if I
did in fact see this behavior. I can reproduce it and have opened up a
Jira for it. I have also attached my test case for easy reproduction.
For your (and other's) knowledge, here is the link:
http://jira.jboss.com/jira/browse/JBRULES-1053
Truly odd behavior for sure!
Thanks,
Eric
Edson Tirelli wrote:
>
> Eric,
>
> Please do! Thanks,
>
> Edson
>
> 2007/7/26, Eric Miles <eric.miles at kronos.com
> <mailto:eric.miles at kronos.com>>:
>
> Edson,
>
> That certainly makes sense. However I'm fairly certain that in
> referencing the inner class in rule definition, I always qualified it
> with the outer class name, ie:
>
> DataClass.AlternativeKey()
> or
> AnotherClass.AlternativeKey()
>
> I appreciate your explaination of the "merge" process. Rather than have
> you spend any more time on this, I'll try to put together a test case to
> ensure I was seeing the behavior I thought I was seeing. I probably
> won't get around to this until tonight or the weekend.
>
> If I was mistaken, I'll let you (and the mailing list) know. If I was
> not, would you like me to open a JIRA with the attached test case? I
> would assume that if the inner classes contain the qualified name that
> the engine should be able to handle that?
>
> Thanks,
> Eric
>
> Edson Tirelli wrote:
> >
> > Eric,
> >
> > Thanks, I understand now.
> >
> > What happens is that if both DRL files declare the same package
> > name, all their contents will be merged. It means that you would
> end up
> > with both imports in the same namespace:
> >
> > import com.company.DataClass.AlternativeKey;
> > import com.company.AnotherClass.AlternativeKey;
> >
> > And so the engine will raise an error saying that it does
> not know
> > which one you are refering to when you write simply:
> >
> > AlternativeKey
> >
> > I think the engine behavior is correct, since the idea of loading
> > two different files with the same name space into the same package
> > builder is to merge them, or even replace (update) that
> eventually have
> > the same name.
> >
> > What do you think?
> >
> > Edson
> >
> >
> > 2007/7/26, Eric Miles <eric.miles at kronos.com
> <mailto:eric.miles at kronos.com>
> > <mailto: eric.miles at kronos.com <mailto:eric.miles at kronos.com>>>:
> >
> > Edson,
> >
> > I have since changed my schema but here was my issue:
> >
> > rule1.drl:
> > import com.company.DataClass.AlternativeKey;
> > import com.company.DataClass;
> >
> > rule "Some rule"
> > when
> > DataClass.AlternativeKey(someParm == true)
> > then
> > ...
> > end
> >
> > Different drlf file:
> > rule2.drl
> > import com.company.AnotherClass.AlternativeKey;
> > import com.company.AnotherClass;
> >
> > rule "Another rule"
> > when
> > AnotherClass.AlternativeKey(diffParm == 1)
> > then
> > ...
> > end
> >
> >
> > This was the gist of what I was doing. The outer classes' names
> > were different, it was the INNER class of each of these
> classes that
> > had the same name. I was actually getting compile errors on the
> > import statements. Like I said, these rules worked fine if
> loaded
> > separately, but once I tried to put them all int he same rule
> base,
> > I was getting the import collision error. Later on this evening
> > (when I'm not at work), I'll try to put together a small test
> case
> > and upload it. In the meantime, you can look skim over this
> and let
> > me know if something jumps out at you.
> >
> > Thanks,
> > Eric
> >
> >
> > On Thu, 2007-07-26 at 10:32 -0300, Edson Tirelli wrote:
> >> Eric,
> >>
> >> Not sure if I understood your problem, but if you have
> >> multiple classes with the same name, and the only difference is
> >> that they are inner classes of different classes, I guess
> what you
> >> need to do is to fully qualify your class names in your rules...
> >>
> >> rule xxx
> >> when
> >> my.package.MyClass.MyInnerClass( ... )
> >> ...
> >> end
> >>
> >> If this is not your problem, can you please show us an
> example
> >> so we understand it better?
> >>
> >> Edson
> >>
> >>
> >> 2007/7/25, Eric Miles < eric.miles at kronos.com
> <mailto:eric.miles at kronos.com>
> >> <mailto:eric.miles at kronos.com <mailto:eric.miles at kronos.com>>>:
> >>
> >> Due to how JAXB treats anonymous inner complex types, I
> ended
> >> up with a public static inner classes named
> AlternativeKey in
> >> several of my data classes I have several rules written to
> >> deal with each data class individually that all work ok.
> >> However, when I attempt to put them all in the same rule
> base
> >> (all belong to the same package), I get an import collision
> >> exception on the AlternativeKey inner class. Depending on
> >> where in the builder I add the resource depends on which
> >> AlternativeKey the compiler bitches about
> (validity). I'm not
> >> familiar with the source at all, so I'm unsure as to
> where to
> >> look for this. However, this sounds like a bug to
> me? There
> >> is an easy workaround for this as I I just don't use
> anonymous
> >> types and define them in my schema explicitly. Just
> thought
> >> I'd identify this as a possi ble issue.
> >>
> >> Thanks,
> >> Eric
> >>
> >>
> >> _______________________________________________
> >> rules-users mailing list
> >> rules-users at lists.jboss.org
> <mailto:rules-users at lists.jboss.org>
> <mailto:rules-users at lists.jboss.org
> <mailto: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
> <http://www.jboss.com> <http://www.jboss.com>
> >
> >
> >
> >
> > --
> > 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
> <http://www.jboss.com> <http://www.jboss.com>
> >
> >
> >
> ------------------------------------------------------------------------
>
> >
> > _______________________________________________
> > rules-users mailing list
> > rules-users at lists.jboss.org <mailto:rules-users at lists.jboss.org>
> > https://lists.jboss.org/mailman/listinfo/rules-users
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org <mailto: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 <http://www.jboss.com>
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
More information about the rules-users
mailing list