Imported Upstream version 1.2.0
[platform/upstream/iotivity.git] / cloud / stack / src / main / java / org / iotivity / cloud / util / Cbor.java
1 /*
2  * //******************************************************************
3  * //
4  * // Copyright 2016 Samsung Electronics All Rights Reserved.
5  * //
6  * //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
7  * //
8  * // Licensed under the Apache License, Version 2.0 (the "License");
9  * // you may not use this file except in compliance with the License.
10  * // You may obtain a copy of the License at
11  * //
12  * //      http://www.apache.org/licenses/LICENSE-2.0
13  * //
14  * // Unless required by applicable law or agreed to in writing, software
15  * // distributed under the License is distributed on an "AS IS" BASIS,
16  * // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * // See the License for the specific language governing permissions and
18  * // limitations under the License.
19  * //
20  * //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
21  */
22 package org.iotivity.cloud.util;
23
24 import java.io.IOException;
25
26 import org.iotivity.cloud.base.exception.ServerException.BadRequestException;
27 import org.iotivity.cloud.base.exception.ServerException.InternalServerErrorException;
28
29 import com.fasterxml.jackson.core.JsonProcessingException;
30 import com.fasterxml.jackson.databind.ObjectMapper;
31 import com.fasterxml.jackson.dataformat.cbor.CBORFactory;
32
33 public class Cbor<T> {
34     private CBORFactory  f;
35     private ObjectMapper mapper;
36
37     public Cbor() {
38         f = new CBORFactory();
39         mapper = new ObjectMapper(f);
40     }
41
42     @SuppressWarnings("unchecked")
43     public T parsePayloadFromCbor(byte[] cborPayload,
44             Class<? extends Object> class1) {
45         T payload = null;
46         if (cborPayload == null) {
47             throw new BadRequestException("cborPayload is null");
48         }
49         try {
50             payload = (T) mapper.readValue(cborPayload, class1);
51         } catch (IOException e) {
52             e.printStackTrace();
53         }
54
55         return payload;
56     }
57
58     public byte[] encodingPayloadToCbor(Object payload) {
59         byte[] cborData = null;
60         if (payload == null) {
61             throw new InternalServerErrorException("payload must be initialized");
62         }
63         try {
64             cborData = mapper.writeValueAsBytes(payload);
65         } catch (JsonProcessingException e) {
66             e.printStackTrace();
67         }
68         return cborData;
69     }
70 }