View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  
18  package org.apache.log4j.varia;
19  
20  import org.apache.log4j.AppenderSkeleton;
21  import org.apache.log4j.spi.LoggingEvent;
22  
23  import javax.swing.*;
24  
25  
26  /**
27   * A very basic appender that takes the events and stores them in to a
28   * ListModel for late retrieval.
29   *
30   * @author Paul Smith (psmith@apache.org)
31   */
32  public final class ListModelAppender extends AppenderSkeleton {
33      /**
34       * Default list model.
35       */
36      private final DefaultListModel<LoggingEvent> model = new DefaultListModel<>();
37  
38      /**
39       * Constructs a ListModelAppender.
40       */
41      public ListModelAppender() {
42          super(true);
43      }
44  
45      /**
46       * Returns a reference to the ListModel that contains all the LoggingEvents
47       * that have been appended to this class.
48       *
49       * @return the list model
50       */
51      public ListModel<LoggingEvent> getModel() {
52          return model;
53      }
54  
55      /**
56       * {@inheritDoc}
57       */
58      protected void append(final LoggingEvent event) {
59          model.addElement(event);
60      }
61  
62      /**
63       * {@inheritDoc}
64       */
65      public void close() {
66          clearModel();
67      }
68  
69      /**
70       * Removes all the Events from the model.
71       */
72      public void clearModel() {
73          model.clear();
74      }
75  
76      /**
77       * {@inheritDoc}
78       */
79      public boolean requiresLayout() {
80          return false;
81      }
82  
83  }