blob: d956a6ccb3566695f3ac5e24c9b120166c2e416e [file] [log] [blame]
Stuart McCullochf3173222012-06-07 21:57:32 +00001package aQute.lib.json;
2
3import java.io.*;
4import java.lang.reflect.*;
5import java.util.*;
6
7import aQute.lib.base64.*;
8
9public class ByteArrayHandler extends Handler {
10
Stuart McCulloch4482c702012-06-15 13:27:53 +000011 @Override
12 void encode(Encoder app, Object object, Map<Object,Type> visited) throws IOException, Exception {
Stuart McCullochf3173222012-06-07 21:57:32 +000013 StringHandler.string(app, Base64.encodeBase64((byte[]) object));
14 }
15
Stuart McCulloch4482c702012-06-15 13:27:53 +000016 @Override
17 Object decodeArray(Decoder r) throws Exception {
Stuart McCullochf3173222012-06-07 21:57:32 +000018 ByteArrayOutputStream out = new ByteArrayOutputStream();
19
20 ArrayList<Object> list = new ArrayList<Object>();
21 r.codec.parseArray(list, Byte.class, r);
22 for (Object b : list) {
23 out.write(((Byte) b).byteValue());
24 }
25 return out.toByteArray();
26 }
27
Stuart McCulloch4482c702012-06-15 13:27:53 +000028 @Override
29 Object decode(String s) throws Exception {
Stuart McCullochf3173222012-06-07 21:57:32 +000030 return Base64.decodeBase64(s);
31 }
32}