[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [aspectj-users] declare parents with delegate
|
This idiom is great, too, but the question actually was slightly different.
Is there a shortcut for something like this:
class DatabaseMetaDataWrapper implements DatabaseMetaData {
private DatabaseMetaData delegate;
// constructor, some implemented methods here
//===================== DELEGATE METHODS =====================
public boolean allProceduresAreCallable() throws SQLException {
return delegate.allProceduresAreCallable();
}
public boolean allTablesAreSelectable() throws SQLException {
return delegate.allTablesAreSelectable();
}
// And so on and so on...
// Problem #1: more than 500 useless lines
// Problem #2: depends on java version!
// Also want to advice some of the methods
}
> 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?