View Javadoc

1   /**
2    *
3    *  Licensed to the Apache Software Foundation (ASF) under one or more
4    *  contributor license agreements.  See the NOTICE file distributed with
5    *  this work for additional information regarding copyright ownership.
6    *  The ASF licenses this file to You under the Apache License, Version 2.0
7    *  (the "License"); you may not use this file except in compliance with
8    *  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, software
13   *  distributed under the License is distributed on an "AS IS" BASIS,
14   *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   *  See the License for the specific language governing permissions and
16   *  limitations under the License.
17   */
18  
19  package org.apache.geronimo.util.encoders;
20  
21  import java.io.ByteArrayOutputStream;
22  import java.io.IOException;
23  import java.io.OutputStream;
24  
25  public class Hex
26  {
27      private static final Encoder encoder = new HexEncoder();
28  
29      /**
30       * encode the input data producing a Hex encoded byte array.
31       *
32       * @return a byte array containing the Hex encoded data.
33       */
34      public static byte[] encode(
35          byte[]    data)
36      {
37          return encode(data, 0, data.length);
38      }
39  
40      /**
41       * encode the input data producing a Hex encoded byte array.
42       *
43       * @return a byte array containing the Hex encoded data.
44       */
45      public static byte[] encode(
46          byte[]    data,
47          int       off,
48          int       length)
49      {
50          ByteArrayOutputStream    bOut = new ByteArrayOutputStream();
51  
52          try
53          {
54              encoder.encode(data, off, length, bOut);
55          }
56          catch (IOException e)
57          {
58              throw new RuntimeException("exception encoding Hex string: " + e);
59          }
60  
61          return bOut.toByteArray();
62      }
63  
64      /**
65       * Hex encode the byte data writing it to the given output stream.
66       *
67       * @return the number of bytes produced.
68       */
69      public static int encode(
70          byte[]         data,
71          OutputStream   out)
72          throws IOException
73      {
74          return encoder.encode(data, 0, data.length, out);
75      }
76  
77      /**
78       * Hex encode the byte data writing it to the given output stream.
79       *
80       * @return the number of bytes produced.
81       */
82      public static int encode(
83          byte[]         data,
84          int            off,
85          int            length,
86          OutputStream   out)
87          throws IOException
88      {
89          return encoder.encode(data, 0, data.length, out);
90      }
91  
92      /**
93       * decode the Hex encoded input data. It is assumed the input data is valid.
94       *
95       * @return a byte array representing the decoded data.
96       */
97      public static byte[] decode(
98          byte[]    data)
99      {
100         ByteArrayOutputStream    bOut = new ByteArrayOutputStream();
101 
102         try
103         {
104             encoder.decode(data, 0, data.length, bOut);
105         }
106         catch (IOException e)
107         {
108             throw new RuntimeException("exception decoding Hex string: " + e);
109         }
110 
111         return bOut.toByteArray();
112     }
113 
114     /**
115      * decode the Hex encoded String data - whitespace will be ignored.
116      *
117      * @return a byte array representing the decoded data.
118      */
119     public static byte[] decode(
120         String    data)
121     {
122         ByteArrayOutputStream    bOut = new ByteArrayOutputStream();
123 
124         try
125         {
126             encoder.decode(data, bOut);
127         }
128         catch (IOException e)
129         {
130             throw new RuntimeException("exception decoding Hex string: " + e);
131         }
132 
133         return bOut.toByteArray();
134     }
135 
136     /**
137      * decode the Hex encoded String data writing it to the given output stream,
138      * whitespace characters will be ignored.
139      *
140      * @return the number of bytes produced.
141      */
142     public static int decode(
143         String          data,
144         OutputStream    out)
145         throws IOException
146     {
147         return encoder.decode(data, out);
148     }
149 }