Coverage report

  %line %branch
com.ozacc.mail.fetch.impl.sk_jp.io.ByteToCharUTF7
0% 
0% 

 1  
 /*
 2  
  * @(#) $Id: ByteToCharUTF7.java,v 1.1.2.1 2004/09/29 00:57:59 otsuka Exp $
 3  
  * $Revision: 1.1.2.1 $
 4  
  * Copyright (c) 2000 Shin Kinoshita All Rights Reserved.
 5  
  */
 6  
 package com.ozacc.mail.fetch.impl.sk_jp.io;
 7  
 
 8  
 /**
 9  
  * UTF-7のデコーダです。
 10  
  * <p>
 11  
  * </p>
 12  
  * @author Shin
 13  
  */
 14  0
 public class ByteToCharUTF7 extends sun.io.ByteToCharConverter {
 15  
     public String getCharacterEncoding() {
 16  0
         return "UTF7";
 17  
     }
 18  
 
 19  
     public int flush(char[] class="keyword">chars, class="keyword">int off, class="keyword">int len) {
 20  0
         byteOff = 0;
 21  0
         charOff = 0;
 22  0
         b64Context = false;
 23  0
         currentB64Off = 0;
 24  0
         currentChar = 0;
 25  0
         return 0;
 26  
     }
 27  
     public void reset() {
 28  0
         byteOff = 0;
 29  0
         charOff = 0;
 30  0
         b64Context = false;
 31  0
         currentB64Off = 0;
 32  0
         currentChar = 0;
 33  0
     }
 34  
 
 35  0
     private boolean b64Context = false;
 36  0
     private int currentB64Off = 0;
 37  0
     private char currentChar = 0;
 38  
 
 39  
     public int convert(
 40  
         byte[] bytes,
 41  
         int byteStart,
 42  
         int byteEnd,
 43  
         char[] class="keyword">chars,
 44  
         int charStart,
 45  
         int charEnd)
 46  
         throws
 47  
             sun.io.ConversionBufferFullException,
 48  
             sun.io.UnknownCharacterException {
 49  0
         charOff = charStart;
 50  
 
 51  0
         for (byteOff = byteStart; byteOff < byteEnd; byteOff++) {
 52  0
             if (charOff >= charEnd) {
 53  0
                 throw new sun.io.ConversionBufferFullException();
 54  
             }
 55  0
             if (b64Context) {
 56  0
                 if (bytes[byteOff] == '-') {
 57  0
                     if (currentB64Off != 0 && currentChar > 0) {
 58  0
                         chars[charOff] = currentChar;
 59  0
                         charOff++;
 60  
                     }
 61  0
                     b64Context = false;
 62  0
                     continue;
 63  
                 }
 64  0
                 int part =
 65  0
                     (
 66  
                         "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
 67  0
                             + "abcdefghijklmnopqrstuvwxyz0123456789+/").indexOf(
 68  0
                         bytes[byteOff]);
 69  0
                 if (part == -1) {
 70  0
                     throw new sun.io.UnknownCharacterException(
 71  0
                         "Invalid UTF-7 code: " + (char)bytes[byteOff]);
 72  
                 }
 73  
 
 74  0
                 switch (currentB64Off) {
 75  
                     case 0 :
 76  0
                         currentChar = (char) (part << 10);
 77  0
                         break;
 78  
                     case 1 :
 79  0
                         currentChar |= (char) (part << 4);
 80  0
                         break;
 81  
                     case 2 :
 82  0
                         currentChar |= (char) (part >> 2);
 83  0
                         chars[charOff] = currentChar;
 84  0
                         charOff++;
 85  0
                         currentChar = (char) ((part & 0x03) << 14);
 86  0
                         break;
 87  
                     case 3 :
 88  0
                         currentChar |= (char) (part << 8);
 89  0
                         break;
 90  
                     case 4 :
 91  0
                         currentChar |= (char) (part << 2);
 92  0
                         break;
 93  
                     case 5 :
 94  0
                         currentChar |= (char) (part >> 4);
 95  0
                         chars[charOff] = currentChar;
 96  0
                         charOff++;
 97  0
                         currentChar = (char) ((part & 0x0f) << 12);
 98  0
                         break;
 99  
                     case 6 :
 100  0
                         currentChar |= (char) (part << 6);
 101  0
                         break;
 102  
                     case 7 :
 103  0
                         currentChar |= (char)part;
 104  0
                         chars[charOff] = currentChar;
 105  0
                         charOff++;
 106  
                         break;
 107  
                 }
 108  0
                 currentB64Off = (currentB64Off + 1) % 8;
 109  0
                 continue;
 110  
             }
 111  
 
 112  0
             if (bytes[byteOff] == '+') {
 113  
                 // shift character
 114  
                 // This is start of the Base64 sequence.
 115  0
                 b64Context = true;
 116  0
                 currentB64Off = 0;
 117  0
                 continue;
 118  
             }
 119  0
             chars[charOff] = (char)bytes[byteOff];
 120  0
             charOff++;
 121  
         }
 122  0
         return charOff - charStart;
 123  
     }
 124  
 
 125  
     /*
 126  
         public static void main(String[] args) throws Exception {
 127  
             System.setProperty("file.encoding.pkg", "com.sk_jp.io");
 128  
             ByteArrayOutputStream o = new ByteArrayOutputStream();
 129  
             byte[] b = new byte[2048];
 130  
             int len;
 131  
             while ((len = System.in.read(b)) != -1) {
 132  
                 o.write(b, 0, len);
 133  
             }
 134  
             byte[] bytes = o.toByteArray();
 135  
     
 136  
             System.out.println(new String(bytes, "UTF7"));
 137  
         }
 138  
     */
 139  
 }

This report is generated by jcoverage, Maven and Maven JCoverage Plugin.