[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] declare parents with delegate



It can be done by using an inter-type declaration on the Runnable
interface. This may sound crazy but what we are actually doing is making an
ITD on every implementer of the interface. The advantage of this approach
is that not only do we guarantee all methods are implemented but also if a
class provides its own implementation that will be used instead of the ITD.
This is why the idiom is often referred to as supplying default interface
method implementations.

public aspect MyAspect {

      declare parents : MyClass implements Runnable;

      public void Runnable.run () {
            // Default behaviour
      }

}

Matthew Webster
AOSD Project
Java Technology Centre, MP146
IBM Hursley Park, Winchester,  SO21 2JN, England
Telephone: +44 196 2816139 (external) 246139 (internal)
Email: Matthew Webster/UK/IBM @ IBMGB, matthew_webster@xxxxxxxxxx
http://w3.hursley.ibm.com/~websterm/


Santi Villalba <sdvillal@xxxxxxxx>@eclipse.org on 26/09/2004 11:22:55

Please respond to aspectj-users@xxxxxxxxxxx

Sent by:    aspectj-users-admin@xxxxxxxxxxx


To:    aspectj-users@xxxxxxxxxxx
cc:
Subject:    Re: [aspectj-users] declare parents with delegate


Hi,

It would be great if this feature is available some day, since I have
been missing it for a long time. I think it can be particularly useful
to do realizations of patterns like decorator or proxy.

I think that it can't be done using dynamic crosscutting. If I'm wrong,
please, tell me.

Best regards

guntiso@xxxxxxxxx wrote:

>Hi,
>
>AspectJ supports adding a superinterface onto a type,
>with the declare parents form.
>
>Is there a way to specify just a delegate instead of
>missing (potentially hundreds of) methods?
>
>Something like
>  declare parents:
>    MyClass implements Runnable delegate MyClass.delegate
>
>Any plans on this? Any tools?
>_______________________________________________
>aspectj-users mailing list
>aspectj-users@xxxxxxxxxxx
>http://dev.eclipse.org/mailman/listinfo/aspectj-users
>
>
>

_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
http://dev.eclipse.org/mailman/listinfo/aspectj-users