##### Coverage Report - org.melati.util.ThrowingPrintWriter

Classes in this File | Line Coverage | Branch Coverage | Complexity
ThrowingPrintWriter |
0% | 0/26
0% | 0/2
| 1.2727272727272727;1.273

1 |  |
     /*
2 |  |
      * $Source: /usr/cvsroot/melati/melati/src/site/resources/withWebmacro/org.melati.util.ThrowingPrintWriter.html,v $
3 |  |
      * $Revision: 1.1 $
4 |  |
      *
5 |  |
      * Copyright (C) 2000 William Chesters
6 |  |
      *
7 |  |
      * Part of Melati (http://melati.org), a framework for the rapid
8 |  |
      * development of clean, maintainable web applications.
9 |  |
      *
10 |  |
      * Melati is free software; Permission is granted to copy, distribute
11 |  |
      * and/or modify this software under the terms either:
12 |  |
      *
13 |  |
      * a) the GNU General Public License as published by the Free Software
14 |  |
      *    Foundation; either version 2 of the License, or (at your option)
15 |  |
      *    any later version,
16 |  |
      *
17 |  |
      *    or
18 |  |
      *
19 |  |
      * b) any version of the Melati Software License, as published
20 |  |
      *    at http://melati.org
21 |  |
      *
22 |  |
      * You should have received a copy of the GNU General Public License and
23 |  |
      * the Melati Software License along with this program;
24 |  |
      * if not, write to the Free Software Foundation, Inc.,
25 |  |
      * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA to obtain the
26 |  |
      * GNU General Public License and visit http://melati.org to obtain the
27 |  |
      * Melati Software License.
28 |  |
      *
29 |  |
      * Feel free to contact the Developers of Melati (http://melati.org),
30 |  |
      * if you would like to work out a different arrangement than the options
31 |  |
      * outlined here.  It is our intention to allow Melati to be used by as
32 |  |
      * wide an audience as possible.
33 |  |
      *
34 |  |
      * This program is distributed in the hope that it will be useful,
35 |  |
      * but WITHOUT ANY WARRANTY; without even the implied warranty of
36 |  |
      * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
37 |  |
      * GNU General Public License for more details.
38 |  |
      *
39 |  |
      * Contact details for copyright holder:
40 |  |
      *
41 |  |
      *     William Chesters <williamc At paneris.org>
42 |  |
      *     http://paneris.org/~williamc
43 |  |
      *     Obrechtstraat 114, 2517VX Den Haag, The Netherlands
44 |  |
      */
45 |  |
     package org.melati.util;
46 |  |
47 |  |
     import java.io.PrintWriter;
48 |  |
49 |  |
     /**
50 |  |
      * A <code>PrintWriter</code> which can throw an <code>Exception</code>.
51 |  |
      */
52 |  |
     public final class ThrowingPrintWriter extends PrintWriter {
53 |  |
       private PrintWriter pw;
54 |  |
55 |  |
       /** Description of this PrintWriter. */
56 |  |
       public final String description;
57 |  |
58 |  |
      /**
59 |  |
       * Thrown when a programmer attempts to use <code>super.out</code>.
60 |  |
       */
61 |  |
       public static class SuperUseException extends BugException {
62 |  |
         private static final long serialVersionUID = 1L;
63 |  |
         /**
64 |  |
          * Constructor.
65 |  |
          */
66 |  |
         public SuperUseException() {
67 |  |
           super("ThrowingPrintWriter tried to use super.out");
68 |  |
         }
69 |  |
       }
70 |  |
71 |  |
       /**
72 |  |
        * Constructor.
73 |  |
        * @param pw Preint writer to write to
74 |  |
        * @param description A description
75 |  |
        */
76 |  |
       public ThrowingPrintWriter(PrintWriter pw, String description) {
77 | 0 |
         super(pw);
78 | 0 |
         this.pw = pw;
79 | 0 |
         this.description = description;
80 | 0 |
       }
81 |  |
82 |  |
       /**
83 |  |
        * Thrown if there is a problem writing to this
84 |  |
        * <code>ThowingPrintWriter</code>.
85 |  |
        */
86 |  |
       public class TroubleException extends MelatiRuntimeException {
87 |  |
         private static final long serialVersionUID = 1L;
88 |  |
         /**
89 |  |
          * {@inheritDoc}
90 |  |
          * @see org.melati.util.MelatiRuntimeException#getMessage()
91 |  |
          */
92 |  |
         public String getMessage() {
93 |  |
           return "An exception condition occurred writing to " +
94 |  |
                  (description == null ? "a PrintWriter" : description);
95 |  |
         }
96 |  |
       }
97 |  |
98 |  |
       /**
99 |  |
        * Check for problem and throw it if found.
100 |  |
        */
101 |  |
       public void throwOnTrouble() {
102 | 0 |
         if (pw.checkError())
103 | 0 |
           throw new TroubleException();
104 | 0 |
       }
105 |  |
106 |  |
       /**
107 |  |
        * Delegated method.
108 |  |
        * {@inheritDoc}
109 |  |
        * @see java.io.PrintWriter#flush()
110 |  |
        */
111 |  |
       public void flush() {
112 | 0 |
         pw.flush();
113 | 0 |
         throwOnTrouble();
114 | 0 |
       }
115 |  |
116 |  |
       /**
117 |  |
        * Delegated method.
118 |  |
        * {@inheritDoc}
119 |  |
        * @see java.io.PrintWriter#close()
120 |  |
        */
121 |  |
       public void close() {
122 | 0 |
         pw.close();
123 | 0 |
         throwOnTrouble();
124 | 0 |
       }
125 |  |
126 |  |
       /**
127 |  |
        * Delegated method.
128 |  |
        * {@inheritDoc}
129 |  |
        * @see java.io.PrintWriter#checkError()
130 |  |
        */
131 |  |
       public boolean checkError() {
132 | 0 |
         return pw.checkError();
133 |  |
       }
134 |  |
135 |  |
       /**
136 |  |
        * Delegated method.
137 |  |
        * {@inheritDoc}
138 |  |
        * @see java.io.PrintWriter#write(int)
139 |  |
        */
140 |  |
       public void write(int c) {
141 | 0 |
         pw.write(c);
142 | 0 |
         throwOnTrouble();
143 | 0 |
       }
144 |  |
145 |  |
       /**
146 |  |
        * Delegated method.
147 |  |
        * {@inheritDoc}
148 |  |
        * @see java.io.PrintWriter#write(char[], int, int)
149 |  |
        */
150 |  |
       public void write(char buf[], int off, int len) {
151 | 0 |
         pw.write(buf, off, len);
152 | 0 |
         throwOnTrouble();
153 | 0 |
       }
154 |  |
155 |  |
       /**
156 |  |
        * Delegated method.
157 |  |
        * {@inheritDoc}
158 |  |
        * @see java.io.PrintWriter#write(java.lang.String, int, int)
159 |  |
        */
160 |  |
       public void write(String buf, int off, int len) {
161 | 0 |
         pw.write(buf, off, len);
162 | 0 |
         throwOnTrouble();
163 | 0 |
       }
164 |  |
165 |  |
       /**
166 |  |
        * Delegated method.
167 |  |
        * {@inheritDoc}
168 |  |
        * @see java.io.PrintWriter#println()
169 |  |
        */
170 |  |
       public void println() {
171 | 0 |
         pw.println();
172 | 0 |
         throwOnTrouble();
173 | 0 |
       }
174 |  |
     }