package org.sef4j.callstack.event.impl; import org.sef4j.callstack.CallStackElt; import org.sef4j.callstack.CallStackPushPopHandler; import org.sef4j.callstack.event.StackEvent.PopStackEvent; import org.sef4j.callstack.event.StackEvent.ProgressStepStackEvent; import org.sef4j.callstack.event.StackEvent.PushStackEvent; import org.sef4j.callstack.event.StackEventListener; /** * adapter CallStackPushPopHandler -> EventLogger with StackEvent * onPush() => sendEvent(PushStackEvent), onPop() => sendEvent(PopStackEvent), ... */ public class StackEventListenerCallStackHandler extends CallStackPushPopHandler { private StackEventListener targetEventListener; // ------------------------------------------------------------------------ public StackEventListenerCallStackHandler(StackEventListener targetEventListener) { this.targetEventListener = targetEventListener; } // ------------------------------------------------------------------------ @Override public void onPush(CallStackElt stackElt) { PushStackEvent event = new PushStackEvent(stackElt); targetEventListener.onEvent(event); stackElt.onPushAddCallStackPushPopHandler(this); } @Override public void onPop(CallStackElt stackElt) { PopStackEvent event = new PopStackEvent(stackElt); targetEventListener.onEvent(event); } @Override public void onProgressStep(CallStackElt stackElt) { ProgressStepStackEvent event = new ProgressStepStackEvent(stackElt); targetEventListener.onEvent(event); } }