View Javadoc
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.core.pattern;
15  
16  abstract public class CompositeConverter<E> extends DynamicConverter<E> {
17  
18      Converter<E> childConverter;
19  
20      public String convert(E event) {
21          StringBuilder buf = new StringBuilder();
22  
23          for (Converter<E> c = childConverter; c != null; c = c.next) {
24              c.write(buf, event);
25          }
26          String intermediary = buf.toString();
27          return transform(event, intermediary);
28      }
29  
30      abstract protected String transform(E event, String in);
31  
32      public Converter<E> getChildConverter() {
33          return childConverter;
34      }
35  
36      public void setChildConverter(Converter<E> child) {
37          childConverter = child;
38      }
39  
40      public String toString() {
41          StringBuilder buf = new StringBuilder();
42          buf.append("CompositeConverter<");
43  
44          if (formattingInfo != null)
45              buf.append(formattingInfo);
46  
47          if (childConverter != null) {
48              buf.append(", children: ").append(childConverter);
49          }
50          buf.append(">");
51          return buf.toString();
52      }
53  }