KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jivesoftware > util > log > output > io > WriterTarget


1 /*
2  * Copyright (C) The Apache Software Foundation. All rights reserved.
3  *
4  * This software is published under the terms of the Apache Software License
5  * version 1.1, a copy of which has been included with this distribution in
6  * the LICENSE file.
7  */

8 package org.jivesoftware.util.log.output.io;
9
10 import org.jivesoftware.util.log.format.Formatter;
11 import org.jivesoftware.util.log.output.AbstractOutputTarget;
12 import java.io.IOException JavaDoc;
13 import java.io.Writer JavaDoc;
14
15 /**
16  * This target outputs to a writer.
17  *
18  * @author <a HREF="mailto:peter@apache.org">Peter Donald</a>
19  */

20 public class WriterTarget extends AbstractOutputTarget {
21
22     private Writer JavaDoc m_output;
23
24     /**
25      * Construct target with a specific writer and formatter.
26      *
27      * @param writer the writer
28      * @param formatter the formatter
29      */

30     public WriterTarget(final Writer JavaDoc writer, final Formatter formatter) {
31         super(formatter);
32
33         if (null != writer) {
34             setWriter(writer);
35             open();
36         }
37     }
38
39     /**
40      * Set the writer.
41      * Close down writer and send tail if appropriate.
42      *
43      * @param writer the new writer
44      */

45     protected synchronized void setWriter(final Writer JavaDoc writer) {
46         if (null == writer) {
47             throw new NullPointerException JavaDoc("writer property must not be null");
48         }
49
50         m_output = writer;
51     }
52
53     /**
54      * Concrete implementation of output that writes out to underlying writer.
55      *
56      * @param data the data to output
57      */

58     protected void write(final String JavaDoc data) {
59         try {
60             m_output.write(data);
61             m_output.flush();
62         }
63         catch (final IOException JavaDoc ioe) {
64             getErrorHandler().error("Caught an IOException", ioe, null);
65         }
66     }
67
68     /**
69      * Shutdown target.
70      * Attempting to send to target after close() will cause errors to be logged.
71      */

72     public synchronized void close() {
73         super.close();
74         shutdownWriter();
75     }
76
77     /**
78      * Shutdown Writer.
79      */

80     protected synchronized void shutdownWriter() {
81         final Writer JavaDoc writer = m_output;
82         m_output = null;
83
84         try {
85             if (null != writer) {
86                 writer.close();
87             }
88         }
89         catch (final IOException JavaDoc ioe) {
90             getErrorHandler().error("Error closing Writer", ioe, null);
91         }
92     }
93 }
94
Popular Tags