KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > sourceforge > groboutils > autodoc > v1 > testserver > AbstractWriterServer


1 /*
2  * @(#)AbstractWriterServer.java
3  *
4  * Copyright (C) 2002-2003 Matt Albrecht
5  * groboclown@users.sourceforge.net
6  * http://groboutils.sourceforge.net
7  *
8  * Part of the GroboUtils package at:
9  * http://groboutils.sourceforge.net
10  *
11  * Permission is hereby granted, free of charge, to any person obtaining a
12  * copy of this software and associated documentation files (the "Software"),
13  * to deal in the Software without restriction, including without limitation
14  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
15  * and/or sell copies of the Software, and to permit persons to whom the
16  * Software is furnished to do so, subject to the following conditions:
17  *
18  * The above copyright notice and this permission notice shall be included in
19  * all copies or substantial portions of the Software.
20  *
21  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
24  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
26  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
27  * DEALINGS IN THE SOFTWARE.
28  */

29 package net.sourceforge.groboutils.autodoc.v1.testserver;
30
31 import java.io.IOException JavaDoc;
32 import java.io.Writer JavaDoc;
33
34 import org.apache.log4j.Logger;
35
36
37 /**
38  * An interface which corresponds to a part of the framework that knows how
39  * to deal with the framework's <tt>TestData</tt>. It may directly deal with
40  * the data, or pass it off to a remote server.
41  *
42  * @author Matt Albrecht <a HREF="mailto:groboclown@users.sourceforge.net">groboclown@users.sourceforge.net</a>
43  * @version $Date: 2003/02/10 22:52:13 $
44  * @since March 30, 2002
45  */

46 public abstract class AbstractWriterServer implements Server
47 {
48     private static final Logger LOG = Logger.getLogger( AbstractWriterServer.class );
49     
50     
51     /**
52      * Receives <tt>td</tt> from a Monitor and handles it in an implementation
53      * specific manner.
54      *
55      * @param td the data to deal with.
56      */

57     public void addTestData( TestData td )
58     {
59         if (td == null)
60         {
61             // allow null aruments: fail gracefully.
62
LOG.warn("addTestData() received null TestData.");
63             return;
64         }
65         
66         // Write the result with all encountered logs.
67
Writer JavaDoc w;
68         try
69         {
70             w = openOutput( td );
71         }
72         catch (IOException JavaDoc e)
73         {
74             LOG.error( "Problem opening output.", e );
75             
76             // don't do any writing since the writer could not be opened.
77
return;
78         }
79         
80         try
81         {
82             writeTestData( td, w );
83         }
84         catch (IOException JavaDoc e)
85         {
86             LOG.error( "Problem writing to output.", e );
87         }
88         finally
89         {
90             // no matter what the write result may be, close the
91
// output at the end.
92
try
93             {
94                 closeOutput( w );
95             }
96             catch (IOException JavaDoc e)
97             {
98                 LOG.error( "Problem closing output.", e );
99             }
100         }
101     }
102     
103     
104     /**
105      * Write the BugTestResult with all the result's encountered BugTestLog
106      * events.
107      */

108     protected abstract void writeTestData( TestData td, Writer JavaDoc w )
109             throws IOException JavaDoc;
110     
111     
112     /**
113      * Open a writer stream. This will be done once per result, so log-like
114      * actions may need to append to the previous results.
115      */

116     protected abstract Writer JavaDoc openOutput( TestData td )
117             throws IOException JavaDoc;
118     
119     
120     /**
121      * Close the given Writer, which was opened in the <tt>openOutput()</tt>
122      * method. Since nearly all implementations will be the same, the
123      * default implementation simply executes <code>w.close()</code>.
124      */

125     protected void closeOutput( Writer JavaDoc w )
126             throws IOException JavaDoc
127     {
128         w.close();
129     }
130 }
131
132
Popular Tags