1   /**
2    * Logback: the reliable, generic, fast and flexible logging framework.
3    * Copyright (C) 1999-2015, QOS.ch. All rights reserved.
4    *
5    * This program and the accompanying materials are dual-licensed under
6    * either the terms of the Eclipse Public License v1.0 as published by
7    * the Eclipse Foundation
8    *
9    *   or (per the licensee's choosing)
10   *
11   * under the terms of the GNU Lesser General Public License version 2.1
12   * as published by the Free Software Foundation.
13   */
14  package ch.qos.logback.access.common.spi;
15  
16  import java.util.Iterator;
17  import java.util.List;
18  
19  import ch.qos.logback.core.Appender;
20  import ch.qos.logback.core.ContextBase;
21  import ch.qos.logback.core.filter.Filter;
22  import ch.qos.logback.core.spi.AppenderAttachable;
23  import ch.qos.logback.core.spi.AppenderAttachableImpl;
24  import ch.qos.logback.core.spi.FilterAttachable;
25  import ch.qos.logback.core.spi.FilterAttachableImpl;
26  import ch.qos.logback.core.spi.FilterReply;
27  
28  /**
29   * A minimal context implementation used by certain logback-access components,
30   * mainly SocketServer.
31   * 
32   * @author Sébastien Pennec
33   */
34  public class AccessContext extends ContextBase
35          implements AppenderAttachable<IAccessEvent>, FilterAttachable<IAccessEvent> {
36  
37      AppenderAttachableImpl<IAccessEvent> aai = new AppenderAttachableImpl<IAccessEvent>();
38      FilterAttachableImpl<IAccessEvent> fai = new FilterAttachableImpl<IAccessEvent>();
39  
40      public void callAppenders(IAccessEvent event) {
41          aai.appendLoopOnAppenders(event);
42      }
43  
44      @Override
45      public void addAppender(Appender<IAccessEvent> newAppender) {
46          aai.addAppender(newAppender);
47      }
48  
49      @Override
50      public void detachAndStopAllAppenders() {
51          aai.detachAndStopAllAppenders();
52      }
53  
54      @Override
55      public boolean detachAppender(Appender<IAccessEvent> appender) {
56          return aai.detachAppender(appender);
57      }
58  
59      @Override
60      public boolean detachAppender(String name) {
61          return aai.detachAppender(name);
62      }
63  
64      @Override
65      public Appender<IAccessEvent> getAppender(String name) {
66          return aai.getAppender(name);
67      }
68  
69      @Override
70      public boolean isAttached(Appender<IAccessEvent> appender) {
71          return aai.isAttached(appender);
72      }
73  
74      @Override
75      public Iterator<Appender<IAccessEvent>> iteratorForAppenders() {
76          return aai.iteratorForAppenders();
77      }
78  
79      @Override
80      public void addFilter(Filter<IAccessEvent> newFilter) {
81          fai.addFilter(newFilter);
82      }
83  
84      @Override
85      public void clearAllFilters() {
86          fai.clearAllFilters();
87      }
88  
89      @Override
90      public List<Filter<IAccessEvent>> getCopyOfAttachedFiltersList() {
91          return fai.getCopyOfAttachedFiltersList();
92      }
93  
94      @Override
95      public FilterReply getFilterChainDecision(IAccessEvent event) {
96          return fai.getFilterChainDecision(event);
97      }
98  }