001 /**
002 *
003 * Copyright 2003-2004 The Apache Software Foundation
004 *
005 * Licensed under the Apache License, Version 2.0 (the "License");
006 * you may not use this file except in compliance with the License.
007 * You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017
018 package org.apache.geronimo.mail.util;
019
020 import java.io.ByteArrayOutputStream;
021 import java.io.IOException;
022 import java.io.OutputStream;
023
024 public class UUEncode {
025 private static final Encoder encoder = new UUEncoder();
026
027 /**
028 * encode the input data producing a UUEncoded byte array.
029 *
030 * @return a byte array containing the UUEncoded data.
031 */
032 public static byte[] encode(
033 byte[] data)
034 {
035 return encode(data, 0, data.length);
036 }
037
038 /**
039 * encode the input data producing a UUEncoded byte array.
040 *
041 * @return a byte array containing the UUEncoded data.
042 */
043 public static byte[] encode(
044 byte[] data,
045 int off,
046 int length)
047 {
048 ByteArrayOutputStream bOut = new ByteArrayOutputStream();
049
050 try
051 {
052 encoder.encode(data, off, length, bOut);
053 }
054 catch (IOException e)
055 {
056 throw new RuntimeException("exception encoding UUEncoded string: " + e);
057 }
058
059 return bOut.toByteArray();
060 }
061
062 /**
063 * UUEncode the byte data writing it to the given output stream.
064 *
065 * @return the number of bytes produced.
066 */
067 public static int encode(
068 byte[] data,
069 OutputStream out)
070 throws IOException
071 {
072 return encoder.encode(data, 0, data.length, out);
073 }
074
075 /**
076 * UUEncode the byte data writing it to the given output stream.
077 *
078 * @return the number of bytes produced.
079 */
080 public static int encode(
081 byte[] data,
082 int off,
083 int length,
084 OutputStream out)
085 throws IOException
086 {
087 return encoder.encode(data, 0, data.length, out);
088 }
089
090 /**
091 * decode the UUEncoded input data. It is assumed the input data is valid.
092 *
093 * @return a byte array representing the decoded data.
094 */
095 public static byte[] decode(
096 byte[] data)
097 {
098 ByteArrayOutputStream bOut = new ByteArrayOutputStream();
099
100 try
101 {
102 encoder.decode(data, 0, data.length, bOut);
103 }
104 catch (IOException e)
105 {
106 throw new RuntimeException("exception decoding UUEncoded string: " + e);
107 }
108
109 return bOut.toByteArray();
110 }
111
112 /**
113 * decode the UUEncided String data.
114 *
115 * @return a byte array representing the decoded data.
116 */
117 public static byte[] decode(
118 String data)
119 {
120 ByteArrayOutputStream bOut = new ByteArrayOutputStream();
121
122 try
123 {
124 encoder.decode(data, bOut);
125 }
126 catch (IOException e)
127 {
128 throw new RuntimeException("exception decoding UUEncoded string: " + e);
129 }
130
131 return bOut.toByteArray();
132 }
133
134 /**
135 * decode the UUEncoded encoded String data writing it to the given output stream.
136 *
137 * @return the number of bytes produced.
138 */
139 public static int decode(
140 String data,
141 OutputStream out)
142 throws IOException
143 {
144 return encoder.decode(data, out);
145 }
146 }
147