# Coverage details for com.martiansoftware.nailgun.ThreadLocalPrintStream

Line | Hits | Source
--- | --- | ---
1 |  | `/*`
2 |  | ``
3 |  | `Copyright 2004, Martian Software, Inc.`
4 |  | ``
5 |  | `Licensed under the Apache License, Version 2.0 (the "License");`
6 |  | `you may not use this file except in compliance with the License.`
7 |  | `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 |  | ``
19 |  | `package com.martiansoftware.nailgun;`
20 |  | ``
21 |  | `import java.io.IOException;`
22 |  | `import java.io.PrintStream;`
23 |  | ``
24 |  | `/**`
25 |  | `* The class name is pretty descriptive. This creates a PrintStream`
26 |  | `* much like a FilterOutputStream, but with the wrapped PrintStream`
27 |  | `* being local to the current Thread. By setting System.out to a`
28 |  | `* ThreadLocalPrintStream, different Threads can write to different`
29 |  | `* PrintStreams simply by using System.out. Of course, the init()`
30 |  | `* method must be called by the Thread that wishes to use the`
31 |  | `* wrapped stream.`
32 |  | `*`
33 |  | `* @author <a href="http://www.martiansoftware.com/contact.html">Marty Lamb</a>`
34 |  | `*/`
35 |  | `class ThreadLocalPrintStream extends PrintStream {`
36 |  | ``
37 |  | `/**`
38 |  | `* The PrintStreams for the various threads`
39 |  | `*/`
40 | 0 | `private InheritableThreadLocal streams = null;`
41 |  | ``
42 | 0 | `private PrintStream defaultPrintStream = null;`
43 |  | ``
44 |  | `/**`
45 |  | `* Creates a new InheritedThreadLocalPrintStream`
46 |  | `* @param defaultPrintStream the PrintStream that will be used if the`
47 |  | `* current thread has not called init()`
48 |  | `*/`
49 |  | `public ThreadLocalPrintStream(PrintStream defaultPrintStream) {`
50 | 0 | `super(defaultPrintStream);`
51 | 0 | `streams = new InheritableThreadLocal();`
52 | 0 | `this.defaultPrintStream = defaultPrintStream;`
53 | 0 | `init(null);`
54 | 0 | `}`
55 |  | ``
56 |  | `/**`
57 |  | `* Sets the PrintStream for the current thread`
58 |  | `* @param streamForCurrentThread the PrintStream for the current thread`
59 |  | `*/`
60 |  | `void init(PrintStream streamForCurrentThread) {`
61 | 0 | `streams.set(streamForCurrentThread);`
62 | 0 | `}`
63 |  | ``
64 |  | `/**`
65 |  | `* Returns this thread's PrintStream`
66 |  | `* @return this thread's PrintStream`
67 |  | `*/`
68 |  | `PrintStream getPrintStream() {`
69 | 0 | `PrintStream result = (PrintStream) streams.get();`
70 | 0 | `return ((result == null) ? defaultPrintStream : result);`
71 |  | `}`
72 |  | ``
73 |  | `// BEGIN delegated java.io.PrintStream methods`
74 |  | ``
75 |  | `/**`
76 |  | `* @see java.io.PrintStream#checkError()`
77 |  | `*/`
78 |  | `public boolean checkError() {`
79 | 0 | `return (getPrintStream().checkError());`
80 |  | `}`
81 |  | ``
82 |  | `/**`
83 |  | `* @see java.io.PrintStream#close()`
84 |  | `*/`
85 |  | `public void close() {`
86 | 0 | `getPrintStream().close();`
87 | 0 | `}`
88 |  | ``
89 |  | `/**`
90 |  | `* @see java.io.PrintStream#flush()`
91 |  | `*/`
92 |  | `public void flush() {`
93 | 0 | `getPrintStream().flush();`
94 | 0 | `}`
95 |  | ``
96 |  | `/**`
97 |  | `* @see java.io.PrintStream#print(boolean)`
98 |  | `*/`
99 |  | `public void print(boolean b) {`
100 | 0 | `getPrintStream().print(b);`
101 | 0 | `}`
102 |  | ``
103 |  | `/**`
104 |  | `* @see java.io.PrintStream#print(char)`
105 |  | `*/`
106 |  | `public void print(char c) {`
107 | 0 | `getPrintStream().print(c);`
108 | 0 | `}`
109 |  | ``
110 |  | `/**`
111 |  | `* @see java.io.PrintStream#print(char[])`
112 |  | `*/`
113 |  | `public void print(char[] s) {`
114 | 0 | `getPrintStream().print(s);`
115 | 0 | `}`
116 |  | ``
117 |  | `/**`
118 |  | `* @see java.io.PrintStream#print(double)`
119 |  | `*/`
120 |  | `public void print(double d) {`
121 | 0 | `getPrintStream().print(d);`
122 | 0 | `}`
123 |  | ``
124 |  | `/**`
125 |  | `* @see java.io.PrintStream#print(float)`
126 |  | `*/`
127 |  | `public void print(float f) {`
128 | 0 | `getPrintStream().print(f);`
129 | 0 | `}`
130 |  | ``
131 |  | `/**`
132 |  | `* @see java.io.PrintStream#print(int)`
133 |  | `*/`
134 |  | `public void print(int i) {`
135 | 0 | `getPrintStream().print(i);`
136 | 0 | `}`
137 |  | ``
138 |  | `/**`
139 |  | `* @see java.io.PrintStream#print(long)`
140 |  | `*/`
141 |  | `public void print(long l) {`
142 | 0 | `getPrintStream().print(l);`
143 | 0 | `}`
144 |  | ``
145 |  | `/**`
146 |  | `* @see java.io.PrintStream#print(Object)`
147 |  | `*/`
148 |  | `public void print(Object obj) {`
149 | 0 | `getPrintStream().print(obj);`
150 | 0 | `}`
151 |  | ``
152 |  | `/**`
153 |  | `* @see java.io.PrintStream#print(String)`
154 |  | `*/`
155 |  | `public void print(String s) {`
156 | 0 | `getPrintStream().print(s);`
157 | 0 | `}`
158 |  | ``
159 |  | `/**`
160 |  | `* @see java.io.PrintStream#println()`
161 |  | `*/`
162 |  | `public void println() {`
163 | 0 | `getPrintStream().println();`
164 | 0 | `}`
165 |  | ``
166 |  | `/**`
167 |  | `* @see java.io.PrintStream#println(boolean)`
168 |  | `*/`
169 |  | `public void println(boolean x) {`
170 | 0 | `getPrintStream().println(x);`
171 | 0 | `}`
172 |  | ``
173 |  | `/**`
174 |  | `* @see java.io.PrintStream#println(char)`
175 |  | `*/`
176 |  | `public void println(char x) {`
177 | 0 | `getPrintStream().println(x);`
178 | 0 | `}`
179 |  | ``
180 |  | `/**`
181 |  | `* @see java.io.PrintStream#println(char[])`
182 |  | `*/`
183 |  | `public void println(char[] x) {`
184 | 0 | `getPrintStream().println(x);`
185 | 0 | `}`
186 |  | ``
187 |  | `/**`
188 |  | `* @see java.io.PrintStream#println(double)`
189 |  | `*/`
190 |  | `public void println(double x) {`
191 | 0 | `getPrintStream().println(x);`
192 | 0 | `}`
193 |  | ``
194 |  | `/**`
195 |  | `* @see java.io.PrintStream#println(float)`
196 |  | `*/`
197 |  | `public void println(float x) {`
198 | 0 | `getPrintStream().println(x);`
199 | 0 | `}`
200 |  | ``
201 |  | `/**`
202 |  | `* @see java.io.PrintStream#println(int)`
203 |  | `*/`
204 |  | `public void println(int x) {`
205 | 0 | `getPrintStream().println(x);`
206 | 0 | `}`
207 |  | ``
208 |  | `/**`
209 |  | `* @see java.io.PrintStream#println(long)`
210 |  | `*/`
211 |  | `public void println(long x) {`
212 | 0 | `getPrintStream().println(x);`
213 | 0 | `}`
214 |  | ``
215 |  | `/**`
216 |  | `* @see java.io.PrintStream#println(Object)`
217 |  | `*/`
218 |  | `public void println(Object x) {`
219 | 0 | `getPrintStream().println(x);`
220 | 0 | `}`
221 |  | ``
222 |  | `/**`
223 |  | `* @see java.io.PrintStream#println(String)`
224 |  | `*/`
225 |  | `public void println(String x) {`
226 | 0 | `getPrintStream().println(x);`
227 | 0 | `}`
228 |  | ``
229 |  | `/**`
230 |  | `* @see java.io.PrintStream#write(byte[],int,int)`
231 |  | `*/`
232 |  | `public void write(byte[] buf, int off, int len) {`
233 | 0 | `getPrintStream().write(buf, off, len);`
234 | 0 | `}`
235 |  | ``
236 |  | `/**`
237 |  | `* @see java.io.PrintStream#write(int)`
238 |  | `*/`
239 |  | `public void write(int b) {`
240 | 0 | `getPrintStream().write(b);`
241 | 0 | `}`
242 |  | ``
243 |  | `// END delegated java.io.PrintStream methods`
244 |  | ``
245 |  | `// BEGIN delegated java.io.FilterOutputStream methods`
246 |  | ``
247 |  | `/**`
248 |  | `* @see java.io.FilterOutputStream#write(byte[])`
249 |  | `*/`
250 |  | `public void write(byte[] b) throws IOException {`
251 | 0 | `getPrintStream().write(b);`
252 | 0 | `}`
253 |  | ``
254 |  | `// END delegated java.io.FilterOutputStream methods`
255 |  | ``
256 |  | `// Note: Should java.lang.Object methods be delegated? If not, and`
257 |  | `// someone synchronizes on this stream, processes might be blocked`
258 |  | `// that shouldn't be. It would certainly be stupid to delegate`
259 |  | `// finalize(). Not so clear are hashcode(), equals(), notify(), and`
260 |  | `// the wait() methods.`
261 |  | `}`

this report was generated by version 1.0.5 of jcoverage. visit www.jcoverage.com for updates. | copyright © 2003, jcoverage ltd. all rights reserved. Java is a trademark of Sun Microsystems, Inc. in the United States and other countries.