1
14 package ch.qos.logback.classic.sift;
15
16 import java.util.ArrayList;
17 import java.util.List;
18 import java.util.Map;
19
20 import org.xml.sax.Attributes;
21
22 import ch.qos.logback.core.joran.action.Action;
23 import ch.qos.logback.core.joran.event.InPlayListener;
24 import ch.qos.logback.core.joran.event.SaxEvent;
25 import ch.qos.logback.core.joran.spi.ActionException;
26 import ch.qos.logback.core.joran.spi.InterpretationContext;
27
28 public class SiftAction extends Action implements InPlayListener {
29 List<SaxEvent> seList;
30
31 @Override
32 public void begin(InterpretationContext ic, String name, Attributes attributes) throws ActionException {
33 seList = new ArrayList<SaxEvent>();
34 ic.addInPlayListener(this);
35 }
36
37 @Override
38 public void end(InterpretationContext ic, String name) throws ActionException {
39 ic.removeInPlayListener(this);
40 Object o = ic.peekObject();
41 if (o instanceof SiftingAppender) {
42 SiftingAppender sa = (SiftingAppender) o;
43 Map<String, String> propertyMap = ic.getCopyOfPropertyMap();
44 AppenderFactoryUsingJoran appenderFactory = new AppenderFactoryUsingJoran(seList, sa.getDiscriminatorKey(), propertyMap);
45 sa.setAppenderFactory(appenderFactory);
46 }
47 }
48
49 public void inPlay(SaxEvent event) {
50 seList.add(event);
51 }
52
53 public List<SaxEvent> getSeList() {
54 return seList;
55 }
56
57 }
58