Greetings,

I'm having problems with the "translation" of the following inter-type
declaration to the new @AspectJ notation:

*private* String FigureElement.enclosingGroup = *null*;


I'm working with the following hierarchy:

*interface* FigureElement
*class* Group *implements* FigureElement


I've declared the following interface:

*public interface* FigureEnclosingGroup {
    String getFigureEnclosingGroup();
    *void* setFigureEnclosingGroup(String enclosingGroup);
}


I've also defined a simple implementation class *FigureEnclosingGroupImpl*.

The @DeclareParents code I'm using is:

@DeclareParents(value="FigureElement", defaultImpl=FigureEnclosingGroupImpl.
*class*)
*private* FigureEnclosingGroup figureEnclosingGroup;


However, when I cast a Group element to FigureElement and try to access the
getFigureEnclosingGroup() method, I get the following exception:

java.lang.AbstractMethodError: Group.getFigureEnclosingGroup()Lfigures/Group

That is, the method is not found.

HOWEVER, if in the @DeclareParents' value attribute I use "FigureElement*+*"
(notice the plus sign), everything runs without errors (and well)...


Is this the normal behaviour? In the first @DeclareParents was I just
stating that the implementation would affect only the interface and not the
classes that implement it!? Must I use the plus sign with @DeclareMixin as
well?


Thanks.
_______________________________________________
aspectj-users mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/aspectj-users

Reply via email to