1 package com.samsung.samserver.web.rest.service.vm;
3 import com.fasterxml.jackson.core.JsonParser;
4 import com.fasterxml.jackson.core.type.TypeReference;
5 import com.fasterxml.jackson.databind.*;
6 import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
7 import com.samsung.samserver.domain.PolicyType;
8 import com.samsung.samserver.service.PolicyTypeService;
9 import org.slf4j.Logger;
10 import org.slf4j.LoggerFactory;
11 import org.springframework.beans.factory.annotation.Autowired;
15 import javax.validation.constraints.NotNull;
16 import java.io.IOException;
19 public interface DPolicy {
23 @Getter @Setter @ToString
24 class DPolicyInteger implements DPolicy {
28 private Integer value;
29 private Integer error;
32 @Getter @Setter @ToString
33 class DPolicyIndexed implements DPolicy {
39 private Integer value;
40 private Integer error;
43 class DPoliciesDeserializer extends StdDeserializer {
45 private final transient Logger log = LoggerFactory.getLogger(DPoliciesDeserializer.class);
47 public DPoliciesDeserializer(){
51 public DPoliciesDeserializer(Class<?> c){
56 private transient PolicyTypeService policyTypeService;
59 public Object deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException {
60 ObjectMapper mapper = (ObjectMapper) jsonParser.getCodec();
61 JsonNode root = jsonParser.getCodec().readTree(jsonParser);
62 List<DPolicy> policies = new ArrayList<>();
64 Map<String, PolicyType> policyTypeMap = policyTypeService.findAllAsMap();
65 JSONArray ja = new JSONArray(root.toString());
66 for (int i = 0; i < ja.length(); i++) {
67 JSONObject jo = ja.getJSONObject(i);
68 String key = jo.get("name").toString();
69 String mapping = policyTypeMap.get(key).getMapping();
70 DPolicy dPolicyProp = null;
73 dPolicyProp = mapper.readValue(jo.toString(), new TypeReference<DPolicyInteger>(){});
76 dPolicyProp = mapper.readValue(jo.toString(), new TypeReference<DPolicyIndexed>(){});
79 log.debug("deserialize: {}","mapping not found");
81 policies.add(dPolicyProp);
83 } catch (JSONException e) {
84 log.error("deserialize: message: {} stacktrace: {}", e.getMessage(), e.getStackTrace());