package org.sef4j.callstack.event.impl; import java.util.ArrayList; import java.util.List; import org.sef4j.callstack.event.StackEvent; import org.sef4j.callstack.event.StackEventListener; /** * listener of StackEvent, that append events in in-memory list. * * This class is thread-safe, and offer atomic clearAndGet() operation * (cf also InMemoryEventSender for untyped event Object) */ public class InMemoryStackEventListener extends StackEventListener { private Object lock = new Object(); private List<StackEvent> events = new ArrayList<StackEvent>(); // ------------------------------------------------------------------------ public InMemoryStackEventListener() { } // ------------------------------------------------------------------------ @Override public void onEvent(StackEvent event) { synchronized(lock) { events.add(event); } } public List<StackEvent> clearAndGet() { List<StackEvent> res; synchronized(lock) { res = events; this.events = new ArrayList<StackEvent>(); } return res; } }