Clover coverage report - Maven Clover report
Coverage timestamp: Sun Aug 20 2006 04:01:04 PDT
file stats: LOC: 85   Methods: 7
NCLOC: 32   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
QuotedPrintableEncoderStream.java - 66.7% 57.1% 62.5%
coverage coverage
 1    /**
 2    *
 3    * Copyright 2003-2004 The Apache Software Foundation
 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    package org.apache.geronimo.mail.util;
 19   
 20    import java.io.IOException;
 21    import java.io.OutputStream;
 22    import java.io.FilterOutputStream;
 23   
 24    /**
 25    * An implementation of a FilterOutputStream that encodes the
 26    * stream data in Q-P encoding format. This version does the
 27    * encoding "on the fly" rather than encoding a single block of
 28    * data. Since this version is intended for use by the MimeUtilty class,
 29    * it also handles line breaks in the encoded data.
 30    */
 31    public class QuotedPrintableEncoderStream extends FilterOutputStream {
 32    // our hex encoder utility class.
 33    protected QuotedPrintableEncoder encoder;
 34   
 35    // our default for line breaks
 36    protected static final int DEFAULT_LINEBREAK = 76;
 37   
 38    // the instance line break value
 39    protected int lineBreak;
 40   
 41    /**
 42    * Create a Base64 encoder stream that wraps a specifed stream
 43    * using the default line break size.
 44    *
 45    * @param out The wrapped output stream.
 46    */
 47  3 public QuotedPrintableEncoderStream(OutputStream out) {
 48  3 this(out, DEFAULT_LINEBREAK);
 49    }
 50   
 51   
 52  3 public QuotedPrintableEncoderStream(OutputStream out, int lineBreak) {
 53  3 super(out);
 54    // lines are processed only in multiple of 4, so round this down.
 55  3 this.lineBreak = (lineBreak / 4) * 4 ;
 56   
 57    // create an encoder configured to this amount
 58  3 encoder = new QuotedPrintableEncoder(out, this.lineBreak);
 59    }
 60   
 61   
 62  0 public void write(int ch) throws IOException {
 63    // have the encoder do the heavy lifting here.
 64  0 encoder.encode(ch);
 65    }
 66   
 67  0 public void write(byte [] data) throws IOException {
 68  0 write(data, 0, data.length);
 69    }
 70   
 71  3 public void write(byte [] data, int offset, int length) throws IOException {
 72    // the encoder does the heavy lifting here.
 73  3 encoder.encode(data, offset, length);
 74    }
 75   
 76  0 public void close() throws IOException {
 77  0 out.close();
 78    }
 79   
 80  3 public void flush() throws IOException {
 81  3 out.flush();
 82    }
 83    }
 84   
 85