RE: some questions about the 0.3 / 0.4 codeline

Steve Conover <[email protected]> Tue, 6 May 2003 15:14:09 -0700 (PDT)
Newsgroups gmane.comp.java.nanning.devel
Message-ID <[email protected]>
Ok great, thanks Jon this provides a lot of insight.

-Steve

--- Jon Tirsen <[email protected]> wrote:
> I think adding the classIdentifier in the interfaces list might be
> alright. I try to add that to CVS as soon as possible.
> 
> MixinInstance and AspectInstance marked final is probably an
> optimization or an indication that they should not be extended. I
> don't
> think I did that actually, it might be some of my co-workers.
> 
> The whole AspectSystem thing is still quite experimental. If I
> remember
> correctly MixinAspect adds a mixin to an AspectInstance if the
> interfaceClass matches the classIdentifier. You probably need to
> write
> your own Aspect that adds mixins based on what interfaces the
> classIdentifier extends. You'll probably see a lot of changes in the
> AspectSystem-area in the future.
> 
> > -----Original Message-----
> > From: [email protected]
> [mailto:nanning-
> > [email protected]] On Behalf Of Steve Conover
> > Sent: Friday, May 02, 2003 8:58 PM
> > To: [email protected]
> > Subject: RE: [Nanning-developer] some questions about the 0.3 / 0.4
> > codeline
> > 
> > Jon,
> > 
> > I went ahead and added this line to
> AspectInstance.getInterfaceClasses:
> > 
> > interfaces.add(classIdentifier);
> > 
> > Does this violate conceptual integrity at some fundamental level,
> in
> > your opinion?  Anyway all my tests run now.
> > 
> > Also, just out of curiousity, why are AspectInstance and
> MixinInstance
> > marked final?
> > 
> > By the way, I tried converting over to using MixinAspects - but I
> > notice when I instanciate the an aspectInstance, and process those
> > aspects, and then do a getProxy, when I inspect the proxy in the
> > debugger the mixin list is empty.  Which makes me think I'm missing
> the
> > point of MixinAspect -- what's it for?
> > 
> > Regards,
> > Steve
> > 
> > --- Steve Conover <[email protected]> wrote:
> > > Hmmm yah I thought of that, but the problem is this - my
> > > "classidentifier" is something like
> > >
> > > interface User extends Identifiable, HasAlias, HasEmailAddress,
> etc
> > > ,etc
> > >
> > > where each one of the exteneded interfaces is a mixin.  But when
> I
> > > make
> > > the User interface itself a mixin, the calls to methods that I'd
> > > rather
> > > be routed to the finer-grained mixins go to the User interface,
> which
> > > has no implementation.
> > >
> > > Maybe a solution would be to have two levels of proxies - at the
> > > "top"
> > > is the User interface mixin only, and then I feed in the other
> set
> of
> > > mixins as its target.  Of couse that set of mixins wouldn't
> implement
> > > interface User, so I'd probably run into problems.
> > >
> > > I really like the idea of being able to construct a "virtual"
> object
> > > piece by piece like this...is there any harm in sticking the
> > > classIdentifier in that mixin list?  After all, if I remember
> > > correctly
> > > it's a Set, so it's not like you'd ever have two of those
> interface
> > > classes if you decided to put a mixin in there as well.
> > >
> > > Regards,
> > > Steve
> > >
> > > --- Jon Tirsen <[email protected]> wrote:
> > > > Neat.
> > > >
> > > > That serves mainly as an identifier of what "class" the
> instance
> > > > belongs
> > > > to. Don't you have a mixin that also has this interface as
> > > interface?
> > > > If
> > > > not what target implements the interface passed in as
> identifier?
> > > >
> > > > > -----Original Message-----
> > > > > From: [email protected]
> > > > [mailto:nanning-
> > > > > [email protected]] On Behalf Of Steve
> Conover
> > > > > Sent: Friday, May 02, 2003 2:12 AM
> > > > > To: [email protected]
> > > > > Subject: RE: [Nanning-developer] some questions about the 0.3
> /
> > > 0.4
> > > > > codeline
> > > > >
> > > > > I've been doing some converting today to MixinAspects (I
> really
> > > > like
> > > > > the new config system, very clean).  My AspectFactory returns
> an
> > > > > AspectInstance from the newInstance(class) method.
> > > > >
> > > > > I do an AspectInstance.getProxy() and try to cast it to the
> > > > interface
> > > > > class I fed into the AspectInstance constructor, but I get a
> > > > > classcastexception.  I notice in the code to construct a
> proxy
> > > the
> > > > only
> > > > > interfaces fed into the Proxy.newProxyInstance are from the
> > > mixins.
> > > > >
> > > > > Why isn't the interface class I passed into the
> AspectInstance
> > > > > constrctor also included?
> > > > >
> > > > > Regards,
> > > > > Steve
> > > > >
> > > > > --- Jon Tirsen <[email protected]> wrote:
> > > > > > Yeah, you should probably try to move away from the
> > > > > > c.t.n.definition-classes. The AspectInstance/MixinInstance
> has
> > > a
> > > > > > similar
> > > > > > API although you'll find it to be more flexible. The main
> > > > difference
> > > > > > is
> > > > > > that you'll need to create a new AspectInstance for every
> > > > instance
> > > > > > you
> > > > > > create and then invoke getProxy() to get the proxy for this
> > > > instance
> > > > > > only. But I guess you've got a factory somewhere where this
> is
> > > > done
> > > > > > in a
> > > > > > central place (if not, I suggest you do that :-).
> > > > > >
> > > > > > The new c.t.n.config-stuff is not really ready and a lot of
> > > > things
> > > > > > will
> > > > > > probably happen there. The main purpose is to have
> > > > Aspect/J-semantics
> > > > > > in
> > > > > > Nanning where cross-cutting concerns are truly modular, ie.
> > > > mixins
> > > > > > and
> > > > > > interceptors are tied together into a single aspect.
> There's a
> > > > > > description about it here:
> > > > > >
> > > > >
> > > >
> > >
> >
>
http://sourceforge.net/mailarchive/forum.php?thread_id=1621907&forum_id=
> > > > > > 12937
> > > > > >
> > > > > > I'm using it myself and it's very powerful, but it's not
> very
> > > > > > well-documented and kind of weird sometimes. If you want to
> use
> > > > it I
> > > > > > can
> > > > > > answer questions you may have.
> > > > > >
> > > > > > (c.t.n.definition-classes is in fact implemented on top of
> the
> > > > > > AspectInstance stuff.)
> > > > > >
> > > > > > > -----Original Message-----
> > > > > > > From: [email protected]
> > > > > > [mailto:nanning-
> > > > > > > [email protected]] On Behalf Of Steve
> > > > Conover
> > > > > > > Sent: Wednesday, April 30, 2003 10:55 PM
> > > > > > > To: nanning-developer
> > > > > > > Subject: [Nanning-developer] some questions about the 0.3
> /
> > > 0.4
> > > > > > codeline
> > > > > > >
> > > > > > > Jon,
> > > > > > >
> > > > > > > I'm just integrating the 0.4 codeline into my project,
> and
> > > had
> > > > a
> > > > > > few
> > > > > > > questions.
> > > > > > >
> > > > > > > My aspects are still working due to this code in
> > > > > > > AspectDefinition.checkObject:
> > > > > > >
> > > > > > > if (target == null) {
> > > > > > >             return;
> > > > > > >         }
> > > > > > >
> > > > > > > However I still would like to provide a target that
> doesn't
> > > > > > implement
> > > > > > > the interfaceClass, as we discussed earlier.  That's not
> > > really
> > > > > > > possible via the AspectDefinition.
> > > > > > >
> > > > > > > I remember you said something about extending
> MixinInstance
> > > > (which
> > > > > > I
> > > > > > > notice is final).  However I guess I haven't been keeping
> up
> > > > with
> > > > > > > changes very well - what are the purposes of these new
> config
> > > > > > classes
> > > > > > > (Pointcut, Advise, MixinAspect, etc)?
> > > > > > >
> > > > > > > I'm defining these AspectDefinitions, and then building
> up
> an
> > > > > > > AspectClass and instanciating that to create my objects.
> > > > Should I
> > > > > > be
> > > > > > > moving this stuff to MixinXXX?
> > > > > > >
> > > > > > > Regards,
> > > > > > > Steve
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > -------------------------------------------------------
> > > > > > > This sf.net email is sponsored by:ThinkGeek
> > > > > > > Welcome to geek heaven.
> > > > > > > http://thinkgeek.com/sf
> > > > > > > _______________________________________________
> > > > > > > Nanning-developer mailing list
> > > > > > > [email protected]
> > > > > > >
> > > https://lists.sourceforge.net/lists/listinfo/nanning-developer
> > > > > >
> > > > > >
> > > > > >
> > > > > > -------------------------------------------------------
> > > > > > This sf.net email is sponsored by:ThinkGeek
> > > > > > Welcome to geek heaven.
> > > > > > http://thinkgeek.com/sf
> > > > > > _______________________________________________
> > > > > > Nanning-developer mailing list
> > > > > > [email protected]
> > > > > >
> https://lists.sourceforge.net/lists/listinfo/nanning-developer
> > > > >
> > > > >
> > > > > =====
> > > > > *****************
> > > > > Steve Conover Jr.
> > > > >
> > > > > Verify chainmail here: http://www.snopes.com
> > > > > *****************
> > > > >
> > > > >
> > > > > -------------------------------------------------------
> > > > > This sf.net email is sponsored by:ThinkGeek
> > > > > Welcome to geek heaven.
> > > > > http://thinkgeek.com/sf
> > > > > _______________________________________________
> > > > > Nanning-developer mailing list
> > > > > [email protected]
> > > > >
> https://lists.sourceforge.net/lists/listinfo/nanning-developer
> > > >
> > > >
> > > >
> > > > -------------------------------------------------------
> > > > This sf.net email is sponsored by:ThinkGeek
> > > > Welcome to geek heaven.
> > > > http://thinkgeek.com/sf
> > > > _______________________________________________
> > > > Nanning-developer mailing list
> > > > [email protected]
> > > > https://lists.sourceforge.net/lists/listinfo/nanning-developer
> > >
> > >
> > > =====
> > > *****************
> > > Steve Conover Jr.
> > >
> > > Verify chainmail here: http://www.snopes.com
> > > *****************
> > >
> > >
> > > -------------------------------------------------------
> > > This sf.net email is sponsored by:ThinkGeek
> > > Welcome to geek heaven.
> > > http://thinkgeek.com/sf
> > > _______________________________________________
> > > Nanning-developer mailing list
> > > [email protected]
> > > https://lists.sourceforge.net/lists/listinfo/nanning-developer
> > 
> > 
> > 
> > -------------------------------------------------------
> > This sf.net email is sponsored by:ThinkGeek
> > Welcome to geek heaven.
> > http://thinkgeek.com/sf
> > _______________________________________________
> > Nanning-developer mailing list
> > [email protected]
> > https://lists.sourceforge.net/lists/listinfo/nanning-developer
> 
> 
> 
> -------------------------------------------------------
> Enterprise Linux Forum Conference & Expo, June 4-6, 2003, Santa Clara
> The only event dedicated to issues related to Linux enterprise
> solutions
> www.enterpriselinuxforum.com
> 
> _______________________________________________
> Nanning-developer mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/nanning-developer



-------------------------------------------------------
Enterprise Linux Forum Conference & Expo, June 4-6, 2003, Santa Clara
The only event dedicated to issues related to Linux enterprise solutions
www.enterpriselinuxforum.com