Changeset 352:e6a9b0a3c123
- Timestamp:
- 09/20/11 05:35:22 (5 months ago)
- Branch:
- default
- Convert:
- svn:7c3792e6-d75b-4784-96a6-b298f655ee64/trunk@2786
- Location:
- kraken-xmlrpc
- Files:
-
- 1 added
- 4 edited
-
pom.xml (modified) (1 diff)
-
src/main/java/org/krakenapps/xmlrpc/XmlRpcBuilderUtil.java (modified) (2 diffs)
-
src/main/java/org/krakenapps/xmlrpc/XmlRpcParameterParser.java (modified) (2 diffs)
-
src/main/java/org/krakenapps/xmlrpc/XmlUtil.java (modified) (1 diff)
-
src/test/java/org/krakenapps/xmlrpc/Base64Test.java (added)
Legend:
- Unmodified
- Added
- Removed
-
kraken-xmlrpc/pom.xml
r2 r352 54 54 </dependency> 55 55 <dependency> 56 <groupId>commons-codec</groupId>57 <artifactId>commons-codec</artifactId>58 <version>1.4</version>59 </dependency>60 <dependency>61 56 <groupId>junit</groupId> 62 57 <artifactId>junit</artifactId> -
kraken-xmlrpc/src/main/java/org/krakenapps/xmlrpc/XmlRpcBuilderUtil.java
r2 r352 22 22 import java.util.Map; 23 23 24 import org.apache.commons.codec.binary.Base64;25 24 import org.w3c.dom.Document; 26 25 import org.w3c.dom.Element; … … 67 66 68 67 private static String base64ToString(byte[] binary) { 69 return new String( Base64.encodeBase64(binary));68 return new String(XmlUtil.encodeBase64(binary)); 70 69 } 71 70 -
kraken-xmlrpc/src/main/java/org/krakenapps/xmlrpc/XmlRpcParameterParser.java
r2 r352 24 24 import java.util.Map; 25 25 26 import org.apache.commons.codec.binary.Base64;27 26 import org.w3c.dom.Node; 28 27 import org.w3c.dom.NodeList; … … 113 112 114 113 private static Object parseBase64(Node scalarNode) { 115 Base64 base64 = new Base64(); 116 return base64.decode(scalarNode.getTextContent().getBytes()); 114 return XmlUtil.decodeBase64(scalarNode.getTextContent().getBytes()); 117 115 } 118 116 -
kraken-xmlrpc/src/main/java/org/krakenapps/xmlrpc/XmlUtil.java
r2 r352 147 147 return sw.toString(); 148 148 } 149 150 private static byte[] encodeMap = new byte[64]; 151 private static byte[] decodeMap = new byte[128]; 152 static { 153 int i = 0; 154 byte b = 'A'; 155 for (; i < 26; i++) { 156 encodeMap[i] = b; 157 decodeMap[b++] = (byte) i; 158 } 159 b = 'a'; 160 for (; i < 52; i++) { 161 encodeMap[i] = b; 162 decodeMap[b++] = (byte) i; 163 } 164 b = '0'; 165 for (; i < 62; i++) { 166 encodeMap[i] = b; 167 decodeMap[b++] = (byte) i; 168 } 169 encodeMap[62] = '+'; 170 decodeMap['+'] = 62; 171 encodeMap[63] = '/'; 172 decodeMap['/'] = 63; 173 } 174 175 public static byte[] encodeBase64(byte[] bytes) { 176 byte[] result = new byte[(bytes.length + 2) / 3 * 4]; 177 for (int i = 0; i < (bytes.length + 2) / 3; i++) { 178 byte a = bytes[i * 3]; 179 byte b = (i * 3 + 1 < bytes.length) ? bytes[i * 3 + 1] : 0; 180 byte c = (i * 3 + 2 < bytes.length) ? bytes[i * 3 + 2] : 0; 181 182 long l = (a & 0xFF) << 16 | (b & 0xFF) << 8 | (c & 0xFF); 183 for (int j = 3; j >= 0; j--) { 184 result[i * 4 + j] = encodeMap[(int) (l & 0x3F)]; 185 l >>= 6; 186 } 187 } 188 if (bytes.length % 3 == 2) 189 result[result.length - 1] = '='; 190 else if (bytes.length % 3 == 1) 191 result[result.length - 2] = result[result.length - 1] = '='; 192 return result; 193 } 194 195 public static byte[] decodeBase64(byte[] bytes) { 196 int len = bytes.length / 4 * 3; 197 if (bytes[bytes.length - 1] == '=') 198 len--; 199 if (bytes[bytes.length - 2] == '=') 200 len--; 201 202 byte[] result = new byte[len]; 203 for (int i = 0; i < bytes.length / 4; i++) { 204 byte a = decodeMap[bytes[i * 4]]; 205 byte b = decodeMap[bytes[i * 4 + 1]]; 206 byte c = decodeMap[bytes[i * 4 + 2]]; 207 byte d = decodeMap[bytes[i * 4 + 3]]; 208 209 long l = (a & 0x3F) << 18 | (b & 0x3F) << 12 | (c & 0x3F) << 6 | (d & 0x3F); 210 for (int j = 2; j >= 0; j--) { 211 if (i * 3 + j < result.length) 212 result[i * 3 + j] = (byte) (l & 0xFF); 213 l >>= 8; 214 } 215 } 216 return result; 217 } 149 218 }
Note: See TracChangeset
for help on using the changeset viewer.
