Skip to main content

[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

Back to the top