blob: bdb233d2f9a8ece1cb439aac485cd3beeb1a9d5f [file] [log] [blame]
package org.eclipse.papyrus.moka.fuml.profiling.Semantics.CommonBehaviors.Communications;
import org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel.IReference;
import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.Communications.IObjectActivation;
import org.eclipse.papyrus.moka.fuml.Semantics.impl.Classes.Kernel.Reference;
import org.eclipse.papyrus.moka.fuml.profiling.MokaObservable;
import org.eclipse.papyrus.moka.service.IMokaExecutionListener;
import org.eclipse.papyrus.moka.service.IMokaStepListener;
public aspect ObjectActivationProfiler extends MokaObservable{
pointcut stepStart(IObjectActivation objectActivation):
target(objectActivation) &&
call(* IObjectActivation.dispatchNextEvent());
before(IObjectActivation objectActivation) : stepStart(objectActivation){
this.notifyStepStart(objectActivation);
}
after(IObjectActivation objectActivation) : stepStart(objectActivation){
this.notifyStepEnd(objectActivation);
}
protected void notifyStepStart(IObjectActivation objectActivation) {
for(IMokaExecutionListener listener : this.listeners) {
if(listener instanceof IMokaStepListener) {
IReference reference = new Reference();
reference.setReferent(objectActivation.getObject());
((IMokaStepListener)listener).stepStart(reference);
}
}
}
protected void notifyStepEnd(IObjectActivation objectActivation) {
for(IMokaExecutionListener listener : this.listeners) {
if(listener instanceof IMokaStepListener) {
IReference reference = new Reference();
reference.setReferent(objectActivation.getObject());
((IMokaStepListener)listener).stepEnd(reference);
}
}
}
}