I am pretty new at this aspect stuff and have been reading one of the Eclipse AspectJ Books. One of the passages concerning initializer pointcuts states:

"When the method signature of a call _expression_ specifies a constructor, this will provide the instance (if the call is being made from a nonstatic context) of the object making the constructor call. target is always unbound—this means attempts to use it to match on a type or expose the target of the call will leave you with a pointcut that does not match the constructor call."

So, is it then at all possible to write a pointcut that both captures the instance of the calling object and the instance of the object just created?

i.e

What I really want to write is this:

    pointcut newEventSource(ModelChangeEventSource source, ModelChangeEventSource listener) :
        call(ModelChangeEventSource+.new(..)) &&
        this(listener+) &&
        target(source+) &&
        within(*.core.model.*);
       
    after (OntoModelChangeEventSource source, OntoModelChangeEventSource listener) returning :
        newEventSource(source, listener)
    {
        source.addModelChangeListener(new ChangeListener (listener));
    }

This basically says (or at least should say) if any event source instantiates any new event source, then add the first source as a listener to the newly created source.

This is for purposes of event propagation between event sources inside a domain model.

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

Reply via email to