[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [aspectj-users] Mixins in AspectJ5
|
Here are the docs how to write @AspectJ ITDs (mixins), as you can see,
it is *very* similar to the AW way:
http://www.eclipse.org/aspectj/doc/next/adk15notebook/ataspectj-itds.html
/Jonas
On 2/28/06, Ron Bodkin <rbodkin@xxxxxxxxxxxxxx> wrote:
>
>
>
> Hi Binil,
>
>
>
> AspectJ supports inter-type declarations, e.g.,:
>
>
>
> public aspect MyAspect {
>
> public interface Fooable {}
>
>
>
> public void Fooable.foo() {
>
> System.out.println("Test");
>
> }
>
>
> declare parents: Interface+ implements Fooable;
> }
>
>
>
> If you want to have implementers of an interface extend a mixin, you could
> use an idiom like this:
>
> declare parents: Interface+ && !Interface extends IntroductionImpl;
>
>
>
> However, if you have interfaces that extend Interface, this won't work. This
> is a place where it would be helpful to have a type pattern like
> !isInterface() (an old issue that's tracked in bugzilla)…
>
>
>
> ________________________________
>
>
> From: aspectj-users-bounces@xxxxxxxxxxx
> [mailto:aspectj-users-bounces@xxxxxxxxxxx] On Behalf Of
> Binil Thomas
> Sent: Tuesday, February 28, 2006 5:11 AM
> To: aspectj-users@xxxxxxxxxxx
> Subject: [aspectj-users] Mixins in AspectJ5
>
>
>
>
> Hi all,
>
> I have been using AspectWerkz for a while, and am now moving to AspectJ5.
> Does AspectJ5 have support for mixins the way AspectWerkz did?
>
> For instance, consider:
> public interface Interface { }
> public class InterfaceImpl
> extends javax.swing.JFrame implements Interface { }
> public interface Introduction { }
> public class IntroductionImpl implements Introduction { }
>
> If I have an aspectwerkz XML definition as:
> <mixin
> class="IntroductionImpl"
> deployment-model="perClass"
> bind-to="within(Interface+)"/>
>
> The code:
> InterfaceImpl imp = new InterfaceImpl();
> if (imp instanceof Introduction) {
> System.out.println( "Mixin worked" );
> } else {
> System.out.println( "Mixin didnt work" );
> }
> would print "Mixin worked".
>
> How do I create a similar effect using AspectJ5?
>
> public aspect MyAspect {
> declare parents: Interface+ extends IntroductionImpl;
> }
>
> gives me syntax a error.
>
> [error] interface can not extend a class
> declare parents: Interface+ extends IntroductionImpl;
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>
> When I tried:
> public aspect MyAspect {
> declare parents: Implementation extends IntroductionImpl;
> }
>
> I get the error:
> [error] can only insert a class into hierarchy, but IntroductionImpl is not
> a subtype of javax.swing.JFrame
> declare parents: Implementation extends IntroductionImpl;
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>
> Can a mixin as the one I wanted, be expressed in AspectJ5? If so, what is
> the correct syntax for expressing it?
>
> Thanks,
> Binil
> _______________________________________________
> aspectj-users mailing list
> aspectj-users@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>
>
>
--
Jonas Bonér
Terracotta, Inc.
http://jonasboner.com
http://www.terracottatech.com