Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[aspectj-users] Interface introduction, introduced method inheritance problem: Help!

I am working on my Senior project, and I have run into a blocking problem...

I have the aspect below:

privileged public aspect CachingAspect {
    declare parents : AbstractServerPage implements
CacheableProcessingComponent;
    public Serializable AbstractServerPage.generateKey() {
            return null;
    }

    public SourceValidity AbstractServerPage.generateValidity() {
        if (hasContentChanged(request))
            return null;
        else
            return NOPValidity.SHARED_INSTANCE;
    }
}

AbstractServerPage is an abstract class that implements the
CacheAbleProcessingComponent interface.  I then have another abstract class
XSPGenerator as a subclass of AbstractServerPage, and JSGenerator as a
subclass of XSPGenerator.

I recieve a compilation error for JSGenerator that says:  class must
implement the inherited abstract method
CacheableProcessingComponent.generateKey() and the same for
generateValidity(). BUT I have already implemented these methods in
AbstractServerPage via the introductions in the aspect above... and so
JSGenerator should inherit them from AbstractServerPage!

I clearly see the introduction in AbstractServerPage and XSPGenerator does
not have any errors!   If I manually re-introduce these methods/interfaces
into AbstractServerPage my errors go away.   It seems pretty clear it is an
inhertance problem with AspectJ and introduced methods.... am I wrong?

What am I missing??

- Jeff



Back to the top