EMMA Coverage Report (generated Thu Nov 19 17:07:02 CET 2009)
[all classes][org.apache.james.jdkim.canon]

COVERAGE SUMMARY FOR SOURCE FILE [LimitedOutputStream.java]

nameclass, %method, %block, %line, %
LimitedOutputStream.java100% (1/1)100% (5/5)100% (66/66)100% (16/16)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class LimitedOutputStream100% (1/1)100% (5/5)100% (66/66)100% (16/16)
LimitedOutputStream (OutputStream, int): void 100% (1/1)100% (10/10)100% (4/4)
getComputedBytes (): int 100% (1/1)100% (3/3)100% (1/1)
isLimited (): boolean 100% (1/1)100% (9/9)100% (1/1)
write (byte [], int, int): void 100% (1/1)100% (28/28)100% (6/6)
write (int): void 100% (1/1)100% (16/16)100% (4/4)

1/****************************************************************
2 * Licensed to the Apache Software Foundation (ASF) under one   *
3 * or more contributor license agreements.  See the NOTICE file *
4 * distributed with this work for additional information        *
5 * regarding copyright ownership.  The ASF licenses this file   *
6 * to you under the Apache License, Version 2.0 (the            *
7 * "License"); you may not use this file except in compliance   *
8 * with the License.  You may obtain a copy of the License at   *
9 *                                                              *
10 *   http://www.apache.org/licenses/LICENSE-2.0                 *
11 *                                                              *
12 * Unless required by applicable law or agreed to in writing,   *
13 * software distributed under the License is distributed on an  *
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
15 * KIND, either express or implied.  See the License for the    *
16 * specific language governing permissions and limitations      *
17 * under the License.                                           *
18 ****************************************************************/
19 
20package org.apache.james.jdkim.canon;
21 
22import java.io.FilterOutputStream;
23import java.io.IOException;
24import java.io.OutputStream;
25 
26/**
27 * Pass data to the underlying system until a given amount of bytes is reached.
28 */
29public class LimitedOutputStream extends FilterOutputStream {
30 
31    private int limit;
32    private int computedBytes;
33 
34    /**
35     * @param out
36     *                an output stream that will receive the "trucated" stream.
37     * @param limit
38     *                a positive integer of the number of bytes to be passed to
39     *                the underlying stream
40     */
41    public LimitedOutputStream(OutputStream out, int limit) {
42        super(out);
43        this.limit = limit;
44        this.computedBytes = 0;
45    }
46 
47    public void write(byte[] b, int off, int len) throws IOException {
48        if (len > limit - computedBytes) {
49            len = limit - computedBytes;
50        }
51        if (len > 0) {
52            out.write(b, off, len);
53            computedBytes += len;
54        }
55    }
56 
57    public void write(int b) throws IOException {
58        if (computedBytes < limit) {
59            out.write(b);
60            computedBytes++;
61        }
62    }
63 
64    /**
65     * @return the number of bytes passed to the underlying stream
66     */
67    public int getComputedBytes() {
68        return computedBytes;
69    }
70 
71    /**
72     * @return true if the limit has been reached and no data is being passed to
73     *         the underlying stream.
74     */
75    public boolean isLimited() {
76        return computedBytes >= limit;
77    }
78}

[all classes][org.apache.james.jdkim.canon]
EMMA 2.0.5312 (C) Vladimir Roubtsov