1
14 package ch.qos.logback.core.joran.spi;
15
16 import java.util.ArrayList;
17 import java.util.List;
18
19 import ch.qos.logback.core.joran.event.BodyEvent;
20 import ch.qos.logback.core.joran.event.EndEvent;
21 import ch.qos.logback.core.joran.event.SaxEvent;
22 import ch.qos.logback.core.joran.event.StartEvent;
23
24 public class EventPlayer {
25
26 final Interpreter interpreter;
27 List<SaxEvent> eventList;
28 int currentIndex;
29
30 public EventPlayer(Interpreter interpreter) {
31 this.interpreter = interpreter;
32 }
33
34
39 public List<SaxEvent> getCopyOfPlayerEventList() {
40 return new ArrayList<SaxEvent>(eventList);
41 }
42
43 public void play(List<SaxEvent> aSaxEventList) {
44 eventList = aSaxEventList;
45 SaxEvent se;
46 for (currentIndex = 0; currentIndex < eventList.size(); currentIndex++) {
47 se = eventList.get(currentIndex);
48
49 if (se instanceof StartEvent) {
50 interpreter.startElement((StartEvent) se);
51
52 interpreter.getInterpretationContext().fireInPlay(se);
53 }
54 if (se instanceof BodyEvent) {
55
56 interpreter.getInterpretationContext().fireInPlay(se);
57 interpreter.characters((BodyEvent) se);
58 }
59 if (se instanceof EndEvent) {
60
61 interpreter.getInterpretationContext().fireInPlay(se);
62 interpreter.endElement((EndEvent) se);
63 }
64
65 }
66 }
67
68 public void addEventsDynamically(List<SaxEvent> eventList, int offset) {
69 this.eventList.addAll(currentIndex + offset, eventList);
70 }
71 }
72