View Javadoc

1   /**
2    * Logback: the generic, reliable, fast and flexible logging framework for Java.
3    * 
4    * Copyright (C) 2000-2006, QOS.ch
5    * 
6    * This library is free software, you can redistribute it and/or modify it under
7    * the terms of the GNU Lesser General Public License as published by the Free
8    * Software Foundation.
9    */
10  package ch.qos.logback.core.joran.spi;
11  
12  import java.util.List;
13  
14  import ch.qos.logback.core.joran.event.BodyEvent;
15  import ch.qos.logback.core.joran.event.EndEvent;
16  import ch.qos.logback.core.joran.event.SaxEvent;
17  import ch.qos.logback.core.joran.event.StartEvent;
18  
19  public class EventPlayer {
20  
21    final Interpreter interpreter;
22    List<SaxEvent> eventList;
23    int currentIndex;
24  
25    public EventPlayer(Interpreter interpreter) {
26      this.interpreter = interpreter; 
27    }
28    
29    public void play(List<SaxEvent> seList) {
30      eventList = seList;
31      SaxEvent se;
32      for(currentIndex = 0; currentIndex < eventList.size(); currentIndex++) {
33        se = eventList.get(currentIndex);
34        
35        if(se instanceof StartEvent) {
36          interpreter.startElement((StartEvent) se);
37          // invoke fireInPlay after startElement processing
38          interpreter.getInterpretationContext().fireInPlay(se);
39        }
40        if(se instanceof BodyEvent) {
41          // invoke fireInPlay before  characters processing
42          interpreter.getInterpretationContext().fireInPlay(se);
43          interpreter.characters((BodyEvent) se);
44        }
45        if(se instanceof EndEvent) {
46          // invoke fireInPlay before endElement processing
47          interpreter.getInterpretationContext().fireInPlay(se);
48          interpreter.endElement((EndEvent) se);
49        }
50      
51      }
52    }
53    
54    public void addEventsDynamically(List<SaxEvent> eventList) {
55      this.eventList.addAll(currentIndex+2, eventList);
56    }
57  }