source: trunk/objectmq/src/omq/common/util/Serializers/GsonImp.java @ 14

Last change on this file since 14 was 14, checked in by stoda, 11 years ago

Events added

File size: 2.1 KB
Line 
1package omq.common.util.Serializers;
2
3import java.util.List;
4
5import omq.common.event.Event;
6import omq.common.message.Request;
7import omq.common.message.Response;
8import omq.exception.SerializerException;
9import omq.server.remote.request.RemoteObject;
10
11import com.google.gson.Gson;
12import com.google.gson.JsonArray;
13import com.google.gson.JsonElement;
14import com.google.gson.JsonObject;
15import com.google.gson.JsonParser;
16
17public class GsonImp implements ISerializer {
18        private final Gson gson = new Gson();
19
20        @Override
21        public byte[] serialize(Object obj) throws SerializerException {
22                String json = gson.toJson(obj);
23                System.out.println(json);
24                return json.getBytes();
25        }
26
27        @Override
28        public Request deserializeRequest(byte[] bytes, RemoteObject obj) throws SerializerException {
29                String json = new String(bytes);
30
31                JsonParser parser = new JsonParser();
32                JsonObject jsonObj = parser.parse(json).getAsJsonObject();
33
34                String id = jsonObj.get("id").getAsString();
35                String method = jsonObj.get("method").getAsString();
36
37                List<Class<?>> types = obj.getParams(method);
38
39                try {
40                        JsonArray jsonArgs = (JsonArray) jsonObj.get("arguments");
41
42                        // TODO: if (jsonArgs.size() == types.size())
43                        int length = jsonArgs.size();
44                        Object[] arguments = new Object[length];
45
46                        int i = 0;
47                        for (JsonElement element : jsonArgs) {
48                                arguments[i] = gson.fromJson(element, types.get(i));
49                                i++;
50                        }
51
52                        return new Request(id, method, arguments);
53                } catch (NullPointerException e) {
54                        return new Request(id, method, null);
55                }
56        }
57
58        @Override
59        public Response deserializeResponse(byte[] bytes, Class<?> type) throws SerializerException {
60                String json = new String(bytes);
61
62                JsonParser parser = new JsonParser();
63                JsonObject jsonObj = parser.parse(json).getAsJsonObject();
64
65                String id = jsonObj.get("id").getAsString();
66                String idOmq = jsonObj.get("idOmq").getAsString();
67
68                JsonElement jsonElement = jsonObj.get("result");
69                Object result = gson.fromJson(jsonElement, type);
70
71                return new Response(id, idOmq, result);
72        }
73
74        @Override
75        public Event deserializeEvent(byte[] unZippedBytes) throws SerializerException {
76                // TODO deserializeEvent class<?> ¿?
77                return null;
78        }
79       
80       
81
82}
Note: See TracBrowser for help on using the repository browser.