View Javadoc

1   /**
2    *
3    * Copyright 2003-2006 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.ByteArrayOutputStream;
21  import java.io.IOException;
22  import java.io.OutputStream;
23  
24  public class Base64
25  {
26      private static final Encoder encoder = new Base64Encoder();
27  
28      /**
29       * encode the input data producing a base 64 encoded byte array.
30       *
31       * @return a byte array containing the base 64 encoded data.
32       */
33      public static byte[] encode(
34          byte[]    data)
35      {
36          ByteArrayOutputStream    bOut = new ByteArrayOutputStream();
37  
38          try
39          {
40              encoder.encode(data, 0, data.length, bOut);
41          }
42          catch (IOException e)
43          {
44              throw new RuntimeException("exception encoding base64 string: " + e);
45          }
46  
47          return bOut.toByteArray();
48      }
49  
50      /**
51       * Encode the byte data to base 64 writing it to the given output stream.
52       *
53       * @return the number of bytes produced.
54       */
55      public static int encode(
56          byte[]                data,
57          OutputStream    out)
58          throws IOException
59      {
60          return encoder.encode(data, 0, data.length, out);
61      }
62  
63      /**
64       * Encode the byte data to base 64 writing it to the given output stream.
65       *
66       * @return the number of bytes produced.
67       */
68      public static int encode(
69          byte[]                data,
70          int                    off,
71          int                    length,
72          OutputStream    out)
73          throws IOException
74      {
75          return encoder.encode(data, off, length, out);
76      }
77  
78      /**
79       * decode the base 64 encoded input data. It is assumed the input data is valid.
80       *
81       * @return a byte array representing the decoded data.
82       */
83      public static byte[] decode(
84          byte[]    data)
85      {
86          ByteArrayOutputStream    bOut = new ByteArrayOutputStream();
87  
88          try
89          {
90              encoder.decode(data, 0, data.length, bOut);
91          }
92          catch (IOException e)
93          {
94              throw new RuntimeException("exception decoding base64 string: " + e);
95          }
96  
97          return bOut.toByteArray();
98      }
99  
100     /**
101      * decode the base 64 encoded String data - whitespace will be ignored.
102      *
103      * @return a byte array representing the decoded data.
104      */
105     public static byte[] decode(
106         String    data)
107     {
108         ByteArrayOutputStream    bOut = new ByteArrayOutputStream();
109 
110         try
111         {
112             encoder.decode(data, bOut);
113         }
114         catch (IOException e)
115         {
116             throw new RuntimeException("exception decoding base64 string: " + e);
117         }
118 
119         return bOut.toByteArray();
120     }
121 
122     /**
123      * decode the base 64 encoded String data writing it to the given output stream,
124      * whitespace characters will be ignored.
125      *
126      * @return the number of bytes produced.
127      */
128     public static int decode(
129         String                data,
130         OutputStream    out)
131         throws IOException
132     {
133         return encoder.decode(data, out);
134     }
135 
136     /**
137      * decode the base 64 encoded String data writing it to the given output stream,
138      * whitespace characters will be ignored.
139      *
140      * @param data   The array data to decode.
141      * @param out    The output stream for the data.
142      *
143      * @return the number of bytes produced.
144      * @exception IOException
145      */
146     public static int decode(byte [] data, OutputStream out) throws IOException
147     {
148         return encoder.decode(data, 0, data.length, out);
149     }
150 }