~s-friedemann/tomdroid/sshfs

« back to all changes in this revision

Viewing changes to lib/commons-codec-1.4/apidocs/src-html/org/apache/commons/codec/net/URLCodec.html

  • Committer: Guilherme Salgado
  • Date: 2010-08-31 21:44:24 UTC
  • mfrom: (185.1.51 sync-ui)
  • mto: (185.1.54 sync-ui)
  • mto: This revision was merged to the branch mainline in revision 186.
  • Revision ID: salgado@canonical.com-20100831214424-06b64zz707lwpmcl
mergeĀ lp:~tomdroid-developers/sync-ui

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
<HTML>
2
 
<BODY BGCOLOR="white">
3
 
<PRE>
4
 
<FONT color="green">001</FONT>    /*<a name="line.1"></a>
5
 
<FONT color="green">002</FONT>     * Licensed to the Apache Software Foundation (ASF) under one or more<a name="line.2"></a>
6
 
<FONT color="green">003</FONT>     * contributor license agreements.  See the NOTICE file distributed with<a name="line.3"></a>
7
 
<FONT color="green">004</FONT>     * this work for additional information regarding copyright ownership.<a name="line.4"></a>
8
 
<FONT color="green">005</FONT>     * The ASF licenses this file to You under the Apache License, Version 2.0<a name="line.5"></a>
9
 
<FONT color="green">006</FONT>     * (the "License"); you may not use this file except in compliance with<a name="line.6"></a>
10
 
<FONT color="green">007</FONT>     * the License.  You may obtain a copy of the License at<a name="line.7"></a>
11
 
<FONT color="green">008</FONT>     * <a name="line.8"></a>
12
 
<FONT color="green">009</FONT>     *      http://www.apache.org/licenses/LICENSE-2.0<a name="line.9"></a>
13
 
<FONT color="green">010</FONT>     * <a name="line.10"></a>
14
 
<FONT color="green">011</FONT>     * Unless required by applicable law or agreed to in writing, software<a name="line.11"></a>
15
 
<FONT color="green">012</FONT>     * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.12"></a>
16
 
<FONT color="green">013</FONT>     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.13"></a>
17
 
<FONT color="green">014</FONT>     * See the License for the specific language governing permissions and<a name="line.14"></a>
18
 
<FONT color="green">015</FONT>     * limitations under the License.<a name="line.15"></a>
19
 
<FONT color="green">016</FONT>     */<a name="line.16"></a>
20
 
<FONT color="green">017</FONT>    <a name="line.17"></a>
21
 
<FONT color="green">018</FONT>    package org.apache.commons.codec.net;<a name="line.18"></a>
22
 
<FONT color="green">019</FONT>    <a name="line.19"></a>
23
 
<FONT color="green">020</FONT>    import java.io.ByteArrayOutputStream;<a name="line.20"></a>
24
 
<FONT color="green">021</FONT>    import java.io.UnsupportedEncodingException;<a name="line.21"></a>
25
 
<FONT color="green">022</FONT>    import java.util.BitSet;<a name="line.22"></a>
26
 
<FONT color="green">023</FONT>    <a name="line.23"></a>
27
 
<FONT color="green">024</FONT>    import org.apache.commons.codec.BinaryDecoder;<a name="line.24"></a>
28
 
<FONT color="green">025</FONT>    import org.apache.commons.codec.BinaryEncoder;<a name="line.25"></a>
29
 
<FONT color="green">026</FONT>    import org.apache.commons.codec.DecoderException;<a name="line.26"></a>
30
 
<FONT color="green">027</FONT>    import org.apache.commons.codec.EncoderException;<a name="line.27"></a>
31
 
<FONT color="green">028</FONT>    import org.apache.commons.codec.CharEncoding;<a name="line.28"></a>
32
 
<FONT color="green">029</FONT>    import org.apache.commons.codec.StringDecoder;<a name="line.29"></a>
33
 
<FONT color="green">030</FONT>    import org.apache.commons.codec.StringEncoder;<a name="line.30"></a>
34
 
<FONT color="green">031</FONT>    import org.apache.commons.codec.binary.StringUtils;<a name="line.31"></a>
35
 
<FONT color="green">032</FONT>    <a name="line.32"></a>
36
 
<FONT color="green">033</FONT>    /**<a name="line.33"></a>
37
 
<FONT color="green">034</FONT>     * &lt;p&gt;Implements the 'www-form-urlencoded' encoding scheme, <a name="line.34"></a>
38
 
<FONT color="green">035</FONT>     * also misleadingly known as URL encoding.&lt;/p&gt;<a name="line.35"></a>
39
 
<FONT color="green">036</FONT>     *  <a name="line.36"></a>
40
 
<FONT color="green">037</FONT>     * &lt;p&gt;For more detailed information please refer to <a name="line.37"></a>
41
 
<FONT color="green">038</FONT>     * &lt;a href="http://www.w3.org/TR/html4/interact/forms.html#h-17.13.4.1"&gt;<a name="line.38"></a>
42
 
<FONT color="green">039</FONT>     * Chapter 17.13.4 'Form content types'&lt;/a&gt; of the <a name="line.39"></a>
43
 
<FONT color="green">040</FONT>     * &lt;a href="http://www.w3.org/TR/html4/"&gt;HTML 4.01 Specification&lt;a&gt;&lt;/p&gt;<a name="line.40"></a>
44
 
<FONT color="green">041</FONT>     * <a name="line.41"></a>
45
 
<FONT color="green">042</FONT>     * &lt;p&gt; <a name="line.42"></a>
46
 
<FONT color="green">043</FONT>     * This codec is meant to be a replacement for standard Java classes<a name="line.43"></a>
47
 
<FONT color="green">044</FONT>     * {@link java.net.URLEncoder} and {@link java.net.URLDecoder} <a name="line.44"></a>
48
 
<FONT color="green">045</FONT>     * on older Java platforms, as these classes in Java versions below <a name="line.45"></a>
49
 
<FONT color="green">046</FONT>     * 1.4 rely on the platform's default charset encoding.<a name="line.46"></a>
50
 
<FONT color="green">047</FONT>     * &lt;/p&gt;<a name="line.47"></a>
51
 
<FONT color="green">048</FONT>     * <a name="line.48"></a>
52
 
<FONT color="green">049</FONT>     * @author Apache Software Foundation<a name="line.49"></a>
53
 
<FONT color="green">050</FONT>     * @since 1.2<a name="line.50"></a>
54
 
<FONT color="green">051</FONT>     * @version $Id: URLCodec.java 798416 2009-07-28 06:35:58Z ggregory $<a name="line.51"></a>
55
 
<FONT color="green">052</FONT>     */<a name="line.52"></a>
56
 
<FONT color="green">053</FONT>    public class URLCodec implements BinaryEncoder, BinaryDecoder, StringEncoder, StringDecoder {<a name="line.53"></a>
57
 
<FONT color="green">054</FONT>        <a name="line.54"></a>
58
 
<FONT color="green">055</FONT>        /**<a name="line.55"></a>
59
 
<FONT color="green">056</FONT>         * Radix used in encoding and decoding.<a name="line.56"></a>
60
 
<FONT color="green">057</FONT>         */<a name="line.57"></a>
61
 
<FONT color="green">058</FONT>        static final int RADIX = 16;<a name="line.58"></a>
62
 
<FONT color="green">059</FONT>        <a name="line.59"></a>
63
 
<FONT color="green">060</FONT>        /**<a name="line.60"></a>
64
 
<FONT color="green">061</FONT>         * The default charset used for string decoding and encoding. Consider this field final. The next major release may<a name="line.61"></a>
65
 
<FONT color="green">062</FONT>         * break compatibility and make this field be final.<a name="line.62"></a>
66
 
<FONT color="green">063</FONT>         */<a name="line.63"></a>
67
 
<FONT color="green">064</FONT>        protected String charset;<a name="line.64"></a>
68
 
<FONT color="green">065</FONT>        <a name="line.65"></a>
69
 
<FONT color="green">066</FONT>        /**<a name="line.66"></a>
70
 
<FONT color="green">067</FONT>         * Consider this field final. The next major release may break compatibility and make this field be final.<a name="line.67"></a>
71
 
<FONT color="green">068</FONT>         */<a name="line.68"></a>
72
 
<FONT color="green">069</FONT>        protected static byte ESCAPE_CHAR = '%';<a name="line.69"></a>
73
 
<FONT color="green">070</FONT>        /**<a name="line.70"></a>
74
 
<FONT color="green">071</FONT>         * BitSet of www-form-url safe characters.<a name="line.71"></a>
75
 
<FONT color="green">072</FONT>         */<a name="line.72"></a>
76
 
<FONT color="green">073</FONT>        protected static final BitSet WWW_FORM_URL = new BitSet(256);<a name="line.73"></a>
77
 
<FONT color="green">074</FONT>        <a name="line.74"></a>
78
 
<FONT color="green">075</FONT>        // Static initializer for www_form_url<a name="line.75"></a>
79
 
<FONT color="green">076</FONT>        static {<a name="line.76"></a>
80
 
<FONT color="green">077</FONT>            // alpha characters<a name="line.77"></a>
81
 
<FONT color="green">078</FONT>            for (int i = 'a'; i &lt;= 'z'; i++) {<a name="line.78"></a>
82
 
<FONT color="green">079</FONT>                WWW_FORM_URL.set(i);<a name="line.79"></a>
83
 
<FONT color="green">080</FONT>            }<a name="line.80"></a>
84
 
<FONT color="green">081</FONT>            for (int i = 'A'; i &lt;= 'Z'; i++) {<a name="line.81"></a>
85
 
<FONT color="green">082</FONT>                WWW_FORM_URL.set(i);<a name="line.82"></a>
86
 
<FONT color="green">083</FONT>            }<a name="line.83"></a>
87
 
<FONT color="green">084</FONT>            // numeric characters<a name="line.84"></a>
88
 
<FONT color="green">085</FONT>            for (int i = '0'; i &lt;= '9'; i++) {<a name="line.85"></a>
89
 
<FONT color="green">086</FONT>                WWW_FORM_URL.set(i);<a name="line.86"></a>
90
 
<FONT color="green">087</FONT>            }<a name="line.87"></a>
91
 
<FONT color="green">088</FONT>            // special chars<a name="line.88"></a>
92
 
<FONT color="green">089</FONT>            WWW_FORM_URL.set('-');<a name="line.89"></a>
93
 
<FONT color="green">090</FONT>            WWW_FORM_URL.set('_');<a name="line.90"></a>
94
 
<FONT color="green">091</FONT>            WWW_FORM_URL.set('.');<a name="line.91"></a>
95
 
<FONT color="green">092</FONT>            WWW_FORM_URL.set('*');<a name="line.92"></a>
96
 
<FONT color="green">093</FONT>            // blank to be replaced with +<a name="line.93"></a>
97
 
<FONT color="green">094</FONT>            WWW_FORM_URL.set(' ');<a name="line.94"></a>
98
 
<FONT color="green">095</FONT>        }<a name="line.95"></a>
99
 
<FONT color="green">096</FONT>    <a name="line.96"></a>
100
 
<FONT color="green">097</FONT>    <a name="line.97"></a>
101
 
<FONT color="green">098</FONT>        /**<a name="line.98"></a>
102
 
<FONT color="green">099</FONT>         * Default constructor.<a name="line.99"></a>
103
 
<FONT color="green">100</FONT>         */<a name="line.100"></a>
104
 
<FONT color="green">101</FONT>        public URLCodec() {<a name="line.101"></a>
105
 
<FONT color="green">102</FONT>            this(CharEncoding.UTF_8);<a name="line.102"></a>
106
 
<FONT color="green">103</FONT>        }<a name="line.103"></a>
107
 
<FONT color="green">104</FONT>    <a name="line.104"></a>
108
 
<FONT color="green">105</FONT>        /**<a name="line.105"></a>
109
 
<FONT color="green">106</FONT>         * Constructor which allows for the selection of a default charset<a name="line.106"></a>
110
 
<FONT color="green">107</FONT>         * <a name="line.107"></a>
111
 
<FONT color="green">108</FONT>         * @param charset the default string charset to use.<a name="line.108"></a>
112
 
<FONT color="green">109</FONT>         */<a name="line.109"></a>
113
 
<FONT color="green">110</FONT>        public URLCodec(String charset) {<a name="line.110"></a>
114
 
<FONT color="green">111</FONT>            super();<a name="line.111"></a>
115
 
<FONT color="green">112</FONT>            this.charset = charset;<a name="line.112"></a>
116
 
<FONT color="green">113</FONT>        }<a name="line.113"></a>
117
 
<FONT color="green">114</FONT>    <a name="line.114"></a>
118
 
<FONT color="green">115</FONT>        /**<a name="line.115"></a>
119
 
<FONT color="green">116</FONT>         * Encodes an array of bytes into an array of URL safe 7-bit characters. Unsafe characters are escaped.<a name="line.116"></a>
120
 
<FONT color="green">117</FONT>         * <a name="line.117"></a>
121
 
<FONT color="green">118</FONT>         * @param urlsafe<a name="line.118"></a>
122
 
<FONT color="green">119</FONT>         *            bitset of characters deemed URL safe<a name="line.119"></a>
123
 
<FONT color="green">120</FONT>         * @param bytes<a name="line.120"></a>
124
 
<FONT color="green">121</FONT>         *            array of bytes to convert to URL safe characters<a name="line.121"></a>
125
 
<FONT color="green">122</FONT>         * @return array of bytes containing URL safe characters<a name="line.122"></a>
126
 
<FONT color="green">123</FONT>         */<a name="line.123"></a>
127
 
<FONT color="green">124</FONT>        public static final byte[] encodeUrl(BitSet urlsafe, byte[] bytes) {<a name="line.124"></a>
128
 
<FONT color="green">125</FONT>            if (bytes == null) {<a name="line.125"></a>
129
 
<FONT color="green">126</FONT>                return null;<a name="line.126"></a>
130
 
<FONT color="green">127</FONT>            }<a name="line.127"></a>
131
 
<FONT color="green">128</FONT>            if (urlsafe == null) {<a name="line.128"></a>
132
 
<FONT color="green">129</FONT>                urlsafe = WWW_FORM_URL;<a name="line.129"></a>
133
 
<FONT color="green">130</FONT>            }<a name="line.130"></a>
134
 
<FONT color="green">131</FONT>    <a name="line.131"></a>
135
 
<FONT color="green">132</FONT>            ByteArrayOutputStream buffer = new ByteArrayOutputStream();<a name="line.132"></a>
136
 
<FONT color="green">133</FONT>            for (int i = 0; i &lt; bytes.length; i++) {<a name="line.133"></a>
137
 
<FONT color="green">134</FONT>                int b = bytes[i];<a name="line.134"></a>
138
 
<FONT color="green">135</FONT>                if (b &lt; 0) {<a name="line.135"></a>
139
 
<FONT color="green">136</FONT>                    b = 256 + b;<a name="line.136"></a>
140
 
<FONT color="green">137</FONT>                }<a name="line.137"></a>
141
 
<FONT color="green">138</FONT>                if (urlsafe.get(b)) {<a name="line.138"></a>
142
 
<FONT color="green">139</FONT>                    if (b == ' ') {<a name="line.139"></a>
143
 
<FONT color="green">140</FONT>                        b = '+';<a name="line.140"></a>
144
 
<FONT color="green">141</FONT>                    }<a name="line.141"></a>
145
 
<FONT color="green">142</FONT>                    buffer.write(b);<a name="line.142"></a>
146
 
<FONT color="green">143</FONT>                } else {<a name="line.143"></a>
147
 
<FONT color="green">144</FONT>                    buffer.write(ESCAPE_CHAR);<a name="line.144"></a>
148
 
<FONT color="green">145</FONT>                    char hex1 = Character.toUpperCase(Character.forDigit((b &gt;&gt; 4) &amp; 0xF, RADIX));<a name="line.145"></a>
149
 
<FONT color="green">146</FONT>                    char hex2 = Character.toUpperCase(Character.forDigit(b &amp; 0xF, RADIX));<a name="line.146"></a>
150
 
<FONT color="green">147</FONT>                    buffer.write(hex1);<a name="line.147"></a>
151
 
<FONT color="green">148</FONT>                    buffer.write(hex2);<a name="line.148"></a>
152
 
<FONT color="green">149</FONT>                }<a name="line.149"></a>
153
 
<FONT color="green">150</FONT>            }<a name="line.150"></a>
154
 
<FONT color="green">151</FONT>            return buffer.toByteArray();<a name="line.151"></a>
155
 
<FONT color="green">152</FONT>        }<a name="line.152"></a>
156
 
<FONT color="green">153</FONT>    <a name="line.153"></a>
157
 
<FONT color="green">154</FONT>        /**<a name="line.154"></a>
158
 
<FONT color="green">155</FONT>         * Decodes an array of URL safe 7-bit characters into an array of <a name="line.155"></a>
159
 
<FONT color="green">156</FONT>         * original bytes. Escaped characters are converted back to their <a name="line.156"></a>
160
 
<FONT color="green">157</FONT>         * original representation.<a name="line.157"></a>
161
 
<FONT color="green">158</FONT>         *<a name="line.158"></a>
162
 
<FONT color="green">159</FONT>         * @param bytes array of URL safe characters<a name="line.159"></a>
163
 
<FONT color="green">160</FONT>         * @return array of original bytes <a name="line.160"></a>
164
 
<FONT color="green">161</FONT>         * @throws DecoderException Thrown if URL decoding is unsuccessful<a name="line.161"></a>
165
 
<FONT color="green">162</FONT>         */<a name="line.162"></a>
166
 
<FONT color="green">163</FONT>        public static final byte[] decodeUrl(byte[] bytes) throws DecoderException {<a name="line.163"></a>
167
 
<FONT color="green">164</FONT>            if (bytes == null) {<a name="line.164"></a>
168
 
<FONT color="green">165</FONT>                return null;<a name="line.165"></a>
169
 
<FONT color="green">166</FONT>            }<a name="line.166"></a>
170
 
<FONT color="green">167</FONT>            ByteArrayOutputStream buffer = new ByteArrayOutputStream();<a name="line.167"></a>
171
 
<FONT color="green">168</FONT>            for (int i = 0; i &lt; bytes.length; i++) {<a name="line.168"></a>
172
 
<FONT color="green">169</FONT>                int b = bytes[i];<a name="line.169"></a>
173
 
<FONT color="green">170</FONT>                if (b == '+') {<a name="line.170"></a>
174
 
<FONT color="green">171</FONT>                    buffer.write(' ');<a name="line.171"></a>
175
 
<FONT color="green">172</FONT>                } else if (b == ESCAPE_CHAR) {<a name="line.172"></a>
176
 
<FONT color="green">173</FONT>                    try {<a name="line.173"></a>
177
 
<FONT color="green">174</FONT>                        int u = Utils.digit16(bytes[++i]);<a name="line.174"></a>
178
 
<FONT color="green">175</FONT>                        int l = Utils.digit16(bytes[++i]);<a name="line.175"></a>
179
 
<FONT color="green">176</FONT>                        buffer.write((char) ((u &lt;&lt; 4) + l));<a name="line.176"></a>
180
 
<FONT color="green">177</FONT>                    } catch (ArrayIndexOutOfBoundsException e) {<a name="line.177"></a>
181
 
<FONT color="green">178</FONT>                        throw new DecoderException("Invalid URL encoding: ", e);<a name="line.178"></a>
182
 
<FONT color="green">179</FONT>                    }<a name="line.179"></a>
183
 
<FONT color="green">180</FONT>                } else {<a name="line.180"></a>
184
 
<FONT color="green">181</FONT>                    buffer.write(b);<a name="line.181"></a>
185
 
<FONT color="green">182</FONT>                }<a name="line.182"></a>
186
 
<FONT color="green">183</FONT>            }<a name="line.183"></a>
187
 
<FONT color="green">184</FONT>            return buffer.toByteArray();<a name="line.184"></a>
188
 
<FONT color="green">185</FONT>        }<a name="line.185"></a>
189
 
<FONT color="green">186</FONT>    <a name="line.186"></a>
190
 
<FONT color="green">187</FONT>        /**<a name="line.187"></a>
191
 
<FONT color="green">188</FONT>         * Encodes an array of bytes into an array of URL safe 7-bit <a name="line.188"></a>
192
 
<FONT color="green">189</FONT>         * characters. Unsafe characters are escaped.<a name="line.189"></a>
193
 
<FONT color="green">190</FONT>         *<a name="line.190"></a>
194
 
<FONT color="green">191</FONT>         * @param bytes array of bytes to convert to URL safe characters<a name="line.191"></a>
195
 
<FONT color="green">192</FONT>         * @return array of bytes containing URL safe characters<a name="line.192"></a>
196
 
<FONT color="green">193</FONT>         */<a name="line.193"></a>
197
 
<FONT color="green">194</FONT>        public byte[] encode(byte[] bytes) {<a name="line.194"></a>
198
 
<FONT color="green">195</FONT>            return encodeUrl(WWW_FORM_URL, bytes);<a name="line.195"></a>
199
 
<FONT color="green">196</FONT>        }<a name="line.196"></a>
200
 
<FONT color="green">197</FONT>    <a name="line.197"></a>
201
 
<FONT color="green">198</FONT>    <a name="line.198"></a>
202
 
<FONT color="green">199</FONT>        /**<a name="line.199"></a>
203
 
<FONT color="green">200</FONT>         * Decodes an array of URL safe 7-bit characters into an array of <a name="line.200"></a>
204
 
<FONT color="green">201</FONT>         * original bytes. Escaped characters are converted back to their <a name="line.201"></a>
205
 
<FONT color="green">202</FONT>         * original representation.<a name="line.202"></a>
206
 
<FONT color="green">203</FONT>         *<a name="line.203"></a>
207
 
<FONT color="green">204</FONT>         * @param bytes array of URL safe characters<a name="line.204"></a>
208
 
<FONT color="green">205</FONT>         * @return array of original bytes <a name="line.205"></a>
209
 
<FONT color="green">206</FONT>         * @throws DecoderException Thrown if URL decoding is unsuccessful<a name="line.206"></a>
210
 
<FONT color="green">207</FONT>         */<a name="line.207"></a>
211
 
<FONT color="green">208</FONT>        public byte[] decode(byte[] bytes) throws DecoderException {<a name="line.208"></a>
212
 
<FONT color="green">209</FONT>            return decodeUrl(bytes);<a name="line.209"></a>
213
 
<FONT color="green">210</FONT>        }<a name="line.210"></a>
214
 
<FONT color="green">211</FONT>    <a name="line.211"></a>
215
 
<FONT color="green">212</FONT>        /**<a name="line.212"></a>
216
 
<FONT color="green">213</FONT>         * Encodes a string into its URL safe form using the specified string charset. Unsafe characters are escaped.<a name="line.213"></a>
217
 
<FONT color="green">214</FONT>         * <a name="line.214"></a>
218
 
<FONT color="green">215</FONT>         * @param pString<a name="line.215"></a>
219
 
<FONT color="green">216</FONT>         *            string to convert to a URL safe form<a name="line.216"></a>
220
 
<FONT color="green">217</FONT>         * @param charset<a name="line.217"></a>
221
 
<FONT color="green">218</FONT>         *            the charset for pString<a name="line.218"></a>
222
 
<FONT color="green">219</FONT>         * @return URL safe string<a name="line.219"></a>
223
 
<FONT color="green">220</FONT>         * @throws UnsupportedEncodingException<a name="line.220"></a>
224
 
<FONT color="green">221</FONT>         *             Thrown if charset is not supported<a name="line.221"></a>
225
 
<FONT color="green">222</FONT>         */<a name="line.222"></a>
226
 
<FONT color="green">223</FONT>        public String encode(String pString, String charset) throws UnsupportedEncodingException {<a name="line.223"></a>
227
 
<FONT color="green">224</FONT>            if (pString == null) {<a name="line.224"></a>
228
 
<FONT color="green">225</FONT>                return null;<a name="line.225"></a>
229
 
<FONT color="green">226</FONT>            }<a name="line.226"></a>
230
 
<FONT color="green">227</FONT>            return StringUtils.newStringUsAscii(encode(pString.getBytes(charset)));<a name="line.227"></a>
231
 
<FONT color="green">228</FONT>        }<a name="line.228"></a>
232
 
<FONT color="green">229</FONT>    <a name="line.229"></a>
233
 
<FONT color="green">230</FONT>        /**<a name="line.230"></a>
234
 
<FONT color="green">231</FONT>         * Encodes a string into its URL safe form using the default string <a name="line.231"></a>
235
 
<FONT color="green">232</FONT>         * charset. Unsafe characters are escaped.<a name="line.232"></a>
236
 
<FONT color="green">233</FONT>         *<a name="line.233"></a>
237
 
<FONT color="green">234</FONT>         * @param pString string to convert to a URL safe form<a name="line.234"></a>
238
 
<FONT color="green">235</FONT>         * @return URL safe string<a name="line.235"></a>
239
 
<FONT color="green">236</FONT>         * @throws EncoderException Thrown if URL encoding is unsuccessful<a name="line.236"></a>
240
 
<FONT color="green">237</FONT>         * <a name="line.237"></a>
241
 
<FONT color="green">238</FONT>         * @see #getDefaultCharset()<a name="line.238"></a>
242
 
<FONT color="green">239</FONT>         */<a name="line.239"></a>
243
 
<FONT color="green">240</FONT>        public String encode(String pString) throws EncoderException {<a name="line.240"></a>
244
 
<FONT color="green">241</FONT>            if (pString == null) {<a name="line.241"></a>
245
 
<FONT color="green">242</FONT>                return null;<a name="line.242"></a>
246
 
<FONT color="green">243</FONT>            }<a name="line.243"></a>
247
 
<FONT color="green">244</FONT>            try {<a name="line.244"></a>
248
 
<FONT color="green">245</FONT>                return encode(pString, getDefaultCharset());<a name="line.245"></a>
249
 
<FONT color="green">246</FONT>            } catch (UnsupportedEncodingException e) {<a name="line.246"></a>
250
 
<FONT color="green">247</FONT>                throw new EncoderException(e.getMessage(), e);<a name="line.247"></a>
251
 
<FONT color="green">248</FONT>            }<a name="line.248"></a>
252
 
<FONT color="green">249</FONT>        }<a name="line.249"></a>
253
 
<FONT color="green">250</FONT>    <a name="line.250"></a>
254
 
<FONT color="green">251</FONT>    <a name="line.251"></a>
255
 
<FONT color="green">252</FONT>        /**<a name="line.252"></a>
256
 
<FONT color="green">253</FONT>         * Decodes a URL safe string into its original form using the <a name="line.253"></a>
257
 
<FONT color="green">254</FONT>         * specified encoding. Escaped characters are converted back <a name="line.254"></a>
258
 
<FONT color="green">255</FONT>         * to their original representation.<a name="line.255"></a>
259
 
<FONT color="green">256</FONT>         *<a name="line.256"></a>
260
 
<FONT color="green">257</FONT>         * @param pString URL safe string to convert into its original form<a name="line.257"></a>
261
 
<FONT color="green">258</FONT>         * @param charset the original string charset<a name="line.258"></a>
262
 
<FONT color="green">259</FONT>         * @return original string <a name="line.259"></a>
263
 
<FONT color="green">260</FONT>         * @throws DecoderException Thrown if URL decoding is unsuccessful<a name="line.260"></a>
264
 
<FONT color="green">261</FONT>         * @throws UnsupportedEncodingException Thrown if charset is not<a name="line.261"></a>
265
 
<FONT color="green">262</FONT>         *                                      supported <a name="line.262"></a>
266
 
<FONT color="green">263</FONT>         */<a name="line.263"></a>
267
 
<FONT color="green">264</FONT>        public String decode(String pString, String charset) throws DecoderException, UnsupportedEncodingException {<a name="line.264"></a>
268
 
<FONT color="green">265</FONT>            if (pString == null) {<a name="line.265"></a>
269
 
<FONT color="green">266</FONT>                return null;<a name="line.266"></a>
270
 
<FONT color="green">267</FONT>            }<a name="line.267"></a>
271
 
<FONT color="green">268</FONT>            return new String(decode(StringUtils.getBytesUsAscii(pString)), charset);<a name="line.268"></a>
272
 
<FONT color="green">269</FONT>        }<a name="line.269"></a>
273
 
<FONT color="green">270</FONT>    <a name="line.270"></a>
274
 
<FONT color="green">271</FONT>        /**<a name="line.271"></a>
275
 
<FONT color="green">272</FONT>         * Decodes a URL safe string into its original form using the default<a name="line.272"></a>
276
 
<FONT color="green">273</FONT>         * string charset. Escaped characters are converted back to their <a name="line.273"></a>
277
 
<FONT color="green">274</FONT>         * original representation.<a name="line.274"></a>
278
 
<FONT color="green">275</FONT>         *<a name="line.275"></a>
279
 
<FONT color="green">276</FONT>         * @param pString URL safe string to convert into its original form<a name="line.276"></a>
280
 
<FONT color="green">277</FONT>         * @return original string <a name="line.277"></a>
281
 
<FONT color="green">278</FONT>         * @throws DecoderException Thrown if URL decoding is unsuccessful<a name="line.278"></a>
282
 
<FONT color="green">279</FONT>         * <a name="line.279"></a>
283
 
<FONT color="green">280</FONT>         * @see #getDefaultCharset()<a name="line.280"></a>
284
 
<FONT color="green">281</FONT>         */<a name="line.281"></a>
285
 
<FONT color="green">282</FONT>        public String decode(String pString) throws DecoderException {<a name="line.282"></a>
286
 
<FONT color="green">283</FONT>            if (pString == null) {<a name="line.283"></a>
287
 
<FONT color="green">284</FONT>                return null;<a name="line.284"></a>
288
 
<FONT color="green">285</FONT>            }<a name="line.285"></a>
289
 
<FONT color="green">286</FONT>            try {<a name="line.286"></a>
290
 
<FONT color="green">287</FONT>                return decode(pString, getDefaultCharset());<a name="line.287"></a>
291
 
<FONT color="green">288</FONT>            } catch (UnsupportedEncodingException e) {<a name="line.288"></a>
292
 
<FONT color="green">289</FONT>                throw new DecoderException(e.getMessage(), e);<a name="line.289"></a>
293
 
<FONT color="green">290</FONT>            }<a name="line.290"></a>
294
 
<FONT color="green">291</FONT>        }<a name="line.291"></a>
295
 
<FONT color="green">292</FONT>    <a name="line.292"></a>
296
 
<FONT color="green">293</FONT>        /**<a name="line.293"></a>
297
 
<FONT color="green">294</FONT>         * Encodes an object into its URL safe form. Unsafe characters are <a name="line.294"></a>
298
 
<FONT color="green">295</FONT>         * escaped.<a name="line.295"></a>
299
 
<FONT color="green">296</FONT>         *<a name="line.296"></a>
300
 
<FONT color="green">297</FONT>         * @param pObject string to convert to a URL safe form<a name="line.297"></a>
301
 
<FONT color="green">298</FONT>         * @return URL safe object<a name="line.298"></a>
302
 
<FONT color="green">299</FONT>         * @throws EncoderException Thrown if URL encoding is not <a name="line.299"></a>
303
 
<FONT color="green">300</FONT>         *                          applicable to objects of this type or<a name="line.300"></a>
304
 
<FONT color="green">301</FONT>         *                          if encoding is unsuccessful<a name="line.301"></a>
305
 
<FONT color="green">302</FONT>         */<a name="line.302"></a>
306
 
<FONT color="green">303</FONT>        public Object encode(Object pObject) throws EncoderException {<a name="line.303"></a>
307
 
<FONT color="green">304</FONT>            if (pObject == null) {<a name="line.304"></a>
308
 
<FONT color="green">305</FONT>                return null;<a name="line.305"></a>
309
 
<FONT color="green">306</FONT>            } else if (pObject instanceof byte[]) {<a name="line.306"></a>
310
 
<FONT color="green">307</FONT>                return encode((byte[])pObject);<a name="line.307"></a>
311
 
<FONT color="green">308</FONT>            } else if (pObject instanceof String) {<a name="line.308"></a>
312
 
<FONT color="green">309</FONT>                return encode((String)pObject);<a name="line.309"></a>
313
 
<FONT color="green">310</FONT>            } else {<a name="line.310"></a>
314
 
<FONT color="green">311</FONT>                throw new EncoderException("Objects of type " +<a name="line.311"></a>
315
 
<FONT color="green">312</FONT>                    pObject.getClass().getName() + " cannot be URL encoded"); <a name="line.312"></a>
316
 
<FONT color="green">313</FONT>                  <a name="line.313"></a>
317
 
<FONT color="green">314</FONT>            }<a name="line.314"></a>
318
 
<FONT color="green">315</FONT>        }<a name="line.315"></a>
319
 
<FONT color="green">316</FONT>    <a name="line.316"></a>
320
 
<FONT color="green">317</FONT>        /**<a name="line.317"></a>
321
 
<FONT color="green">318</FONT>         * Decodes a URL safe object into its original form. Escaped characters are converted back to their original<a name="line.318"></a>
322
 
<FONT color="green">319</FONT>         * representation.<a name="line.319"></a>
323
 
<FONT color="green">320</FONT>         * <a name="line.320"></a>
324
 
<FONT color="green">321</FONT>         * @param pObject<a name="line.321"></a>
325
 
<FONT color="green">322</FONT>         *                  URL safe object to convert into its original form<a name="line.322"></a>
326
 
<FONT color="green">323</FONT>         * @return original object<a name="line.323"></a>
327
 
<FONT color="green">324</FONT>         * @throws DecoderException<a name="line.324"></a>
328
 
<FONT color="green">325</FONT>         *                  Thrown if the argument is not a &lt;code&gt;String&lt;/code&gt; or &lt;code&gt;byte[]&lt;/code&gt;. Thrown if a failure condition is<a name="line.325"></a>
329
 
<FONT color="green">326</FONT>         *                  encountered during the decode process.<a name="line.326"></a>
330
 
<FONT color="green">327</FONT>         */<a name="line.327"></a>
331
 
<FONT color="green">328</FONT>        public Object decode(Object pObject) throws DecoderException {<a name="line.328"></a>
332
 
<FONT color="green">329</FONT>            if (pObject == null) {<a name="line.329"></a>
333
 
<FONT color="green">330</FONT>                return null;<a name="line.330"></a>
334
 
<FONT color="green">331</FONT>            } else if (pObject instanceof byte[]) {<a name="line.331"></a>
335
 
<FONT color="green">332</FONT>                return decode((byte[]) pObject);<a name="line.332"></a>
336
 
<FONT color="green">333</FONT>            } else if (pObject instanceof String) {<a name="line.333"></a>
337
 
<FONT color="green">334</FONT>                return decode((String) pObject);<a name="line.334"></a>
338
 
<FONT color="green">335</FONT>            } else {<a name="line.335"></a>
339
 
<FONT color="green">336</FONT>                throw new DecoderException("Objects of type " + pObject.getClass().getName() + " cannot be URL decoded");<a name="line.336"></a>
340
 
<FONT color="green">337</FONT>    <a name="line.337"></a>
341
 
<FONT color="green">338</FONT>            }<a name="line.338"></a>
342
 
<FONT color="green">339</FONT>        }<a name="line.339"></a>
343
 
<FONT color="green">340</FONT>    <a name="line.340"></a>
344
 
<FONT color="green">341</FONT>        /**<a name="line.341"></a>
345
 
<FONT color="green">342</FONT>         * The &lt;code&gt;String&lt;/code&gt; encoding used for decoding and encoding.<a name="line.342"></a>
346
 
<FONT color="green">343</FONT>         * <a name="line.343"></a>
347
 
<FONT color="green">344</FONT>         * @return Returns the encoding.<a name="line.344"></a>
348
 
<FONT color="green">345</FONT>         * <a name="line.345"></a>
349
 
<FONT color="green">346</FONT>         * @deprecated use #getDefaultCharset()<a name="line.346"></a>
350
 
<FONT color="green">347</FONT>         */<a name="line.347"></a>
351
 
<FONT color="green">348</FONT>        public String getEncoding() {<a name="line.348"></a>
352
 
<FONT color="green">349</FONT>            return this.charset;<a name="line.349"></a>
353
 
<FONT color="green">350</FONT>        }<a name="line.350"></a>
354
 
<FONT color="green">351</FONT>    <a name="line.351"></a>
355
 
<FONT color="green">352</FONT>        /**<a name="line.352"></a>
356
 
<FONT color="green">353</FONT>         * The default charset used for string decoding and encoding.<a name="line.353"></a>
357
 
<FONT color="green">354</FONT>         *<a name="line.354"></a>
358
 
<FONT color="green">355</FONT>         * @return the default string charset.<a name="line.355"></a>
359
 
<FONT color="green">356</FONT>         */<a name="line.356"></a>
360
 
<FONT color="green">357</FONT>        public String getDefaultCharset() {<a name="line.357"></a>
361
 
<FONT color="green">358</FONT>            return this.charset;<a name="line.358"></a>
362
 
<FONT color="green">359</FONT>        }<a name="line.359"></a>
363
 
<FONT color="green">360</FONT>    <a name="line.360"></a>
364
 
<FONT color="green">361</FONT>    }<a name="line.361"></a>
365
 
 
366
 
 
367
 
 
368
 
 
369
 
 
370
 
 
371
 
 
372
 
 
373
 
 
374
 
 
375
 
 
376
 
 
377
 
 
378
 
 
379
 
 
380
 
 
381
 
 
382
 
 
383
 
 
384
 
 
385
 
 
386
 
 
387
 
 
388
 
 
389
 
 
390
 
 
391
 
 
392
 
 
393
 
 
394
 
 
395
 
 
396
 
 
397
 
 
398
 
 
399
 
 
400
 
 
401
 
 
402
 
 
403
 
 
404
 
 
405
 
 
406
 
 
407
 
 
408
 
 
409
 
 
410
 
 
411
 
 
412
 
 
413
 
 
414
 
 
415
 
 
416
 
 
417
 
 
418
 
 
419
 
 
420
 
 
421
 
 
422
 
 
423
 
 
424
 
 
425
 
</PRE>
426
 
</BODY>
427
 
</HTML>