Added Some Tools to GsonUtil
[holmes/common.git] / holmes-actions / src / main / java / org / onap / holmes / common / utils / GsonUtil.java
index 452aaf8..a5e6461 100644 (file)
@@ -1,5 +1,5 @@
 /**
- * Copyright 2018 ZTE Corporation.
+ * Copyright 2018-2020 ZTE Corporation.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,28 +17,25 @@ package org.onap.holmes.common.utils;
 
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
-import com.google.gson.JsonDeserializationContext;
 import com.google.gson.JsonDeserializer;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonParseException;
+import com.google.gson.JsonObject;
 import com.google.gson.reflect.TypeToken;
-import java.lang.reflect.Type;
+import org.apache.commons.lang3.StringUtils;
+
 import java.util.List;
 import java.util.Map;
 
 public class GsonUtil {
     private static Gson gson = null;
+
     static {
         if (gson == null) {
             gson = new GsonBuilder()
-                    .registerTypeAdapter(Integer.class, new JsonDeserializer<Integer>() {
-                        @Override
-                        public Integer deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
-                            try {
-                                return json.getAsInt();
-                            } catch (NumberFormatException e) {
-                                return 0;
-                            }
+                    .registerTypeAdapter(Integer.class, (JsonDeserializer<Integer>) (json, typeOfT, context) -> {
+                        try {
+                            return json.getAsInt();
+                        } catch (NumberFormatException e) {
+                            return 0;
                         }
                     })
                     .create();
@@ -65,31 +62,70 @@ public class GsonUtil {
         return t;
     }
 
-    public static <T> List<T> GsonToList(String gsonString, Class<T> cls) {
+    public static <T> List<T> jsonToList(String gsonString, Class<T> cls) {
         List<T> list = null;
         if (gson != null) {
-            list = gson.fromJson(gsonString, new TypeToken<List<T>>() {
-            }.getType());
+            list = gson.fromJson(gsonString, TypeToken.getParameterized(List.class, cls).getType());
         }
         return list;
     }
 
-    public static <T> List<Map<String, T>> GsonToListMaps(String gsonString) {
+    public static <T> List<Map<String, T>> jsonToListMaps(String gsonString, Class<T> cls) {
         List<Map<String, T>> list = null;
         if (gson != null) {
             list = gson.fromJson(gsonString,
-                    new TypeToken<List<Map<String, T>>>() {
-                    }.getType());
+                TypeToken.getParameterized(List.class,
+                    TypeToken.getParameterized(Map.class, String.class, cls).getType()
+                ).getType()
+            );
         }
         return list;
     }
 
-    public static <T> Map<String, T> GsonToMaps(String gsonString) {
+    public static <T> Map<String, T> jsonToMap(String gsonString, Class<T> cls) {
         Map<String, T> map = null;
         if (gson != null) {
-            map = gson.fromJson(gsonString, new TypeToken<Map<String, T>>() {
-            }.getType());
+            map = gson.fromJson(gsonString, TypeToken.getParameterized(Map.class, String.class, cls).getType());
         }
         return map;
     }
+
+    public static String getAsString(JsonObject o, String field) {
+        String ret = null;
+
+        if (field == null) {
+            field = StringUtils.EMPTY;
+        }
+
+        if (o.has(field) && !o.get(field).isJsonNull()) {
+            ret = o.get(field).getAsString();
+        }
+        return ret;
+    }
+
+    public static long getAsLong(JsonObject o, String field) {
+        long ret = 0;
+
+        if (field == null) {
+            field = StringUtils.EMPTY;
+        }
+
+        if (o.has(field) && !o.get(field).isJsonNull()) {
+            ret = o.get(field).getAsLong();
+        }
+        return ret;
+    }
+
+    public static int getAsInt(JsonObject o, String field) {
+        int ret = 0;
+
+        if (field == null) {
+            field = StringUtils.EMPTY;
+        }
+
+        if (o.has(field) && !o.get(field).isJsonNull()) {
+            ret = o.get(field).getAsInt();
+        }
+        return ret;
+    }
 }