Removed thed use of deprecated "readFileToString"
[cli.git] / main / src / main / java / org / onap / cli / main / utils / OnapCliArgsParser.java
index a1bde71..53e9066 100644 (file)
@@ -19,12 +19,14 @@ package org.onap.cli.main.utils;
 import java.io.File;
 import java.io.IOException;
 import java.net.URL;
+import java.nio.charset.Charset;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
+import org.apache.commons.codec.binary.Base64;
 import org.apache.commons.io.FileUtils;
 import org.onap.cli.fw.error.OnapCommandException;
 import org.onap.cli.fw.error.OnapCommandInvalidParameterValue;
@@ -32,17 +34,23 @@ import org.onap.cli.fw.input.OnapCommandParameter;
 import org.onap.cli.fw.input.OnapCommandParameterType;
 import org.onap.cli.main.error.OnapCliArgumentValueMissing;
 import org.onap.cli.main.error.OnapCliInvalidArgument;
+import com.esotericsoftware.yamlbeans.YamlReader;
 
-import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonElement;
+import com.google.gson.reflect.TypeToken;
 
-import net.minidev.json.JSONObject;
+import java.io.Reader;
+import java.io.InputStreamReader;
+import java.io.FileReader;
 
 /**
  * Oclip CLI utilities.
  *
  */
 public class OnapCliArgsParser {
+    private static Gson gson = new GsonBuilder().serializeNulls().create();
 
     /**
      * private Constructor.
@@ -116,12 +124,25 @@ public class OnapCliArgsParser {
                     i++;
                     continue;
 
-                } if (paramMap.get(paramName).getParameterType().equals(OnapCommandParameterType.TEXT)) {
+                } else if (paramMap.get(paramName).getParameterType().equals(OnapCommandParameterType.TEXT)) {
                     paramMap.get(paramName).setValue(readTextStringFromUrl(args.get(i + 1),
                             paramMap.get(paramName).getName()));
                     i++;
                     continue;
 
+                } else if (paramMap.get(paramName).getParameterType().equals(OnapCommandParameterType.YAML)) {
+                    String value = readYamlStringFromUrl(args.get(i + 1),
+                            paramMap.get(paramName).getName());
+                    paramMap.get(paramName).setValue(value);
+                    i++;
+                    continue;
+
+                } else if (paramMap.get(paramName).getParameterType().equals(OnapCommandParameterType.BYTE)) {
+                    paramMap.get(paramName).setValue(readBytesFromUrl(args.get(i + 1),
+                            paramMap.get(paramName).getName()));
+                    i++;
+                    continue;
+
                 } else if (paramMap.get(paramName).getParameterType()
                         .equals(OnapCommandParameterType.ARRAY)) {
                     Object value = paramMap.get(paramName).getValue();
@@ -177,28 +198,51 @@ public class OnapCliArgsParser {
         params.addAll(paramMap.values());
     }
 
-    private static String readJsonStringFromUrl(String input, String argName) throws OnapCliInvalidArgument {
-        ObjectMapper mapper = new ObjectMapper();
+    public static String readJsonStringFromUrl(String input, String argName) throws OnapCliInvalidArgument {
+        String jsonValue;
         try {
             File file = new File(input);
             if (file.isFile()) {
-                return mapper.readValue(file, JSONObject.class).toJSONString();
+                try(Reader reader = new FileReader(file)){
+                    jsonValue = gson.fromJson(reader, JsonElement.class).toString();
+                }
+                return jsonValue;
             } else if (input.startsWith("file:") || input.startsWith("http:") || input.startsWith("ftp:")) {
                 URL jsonUrl = new URL(input);
-                return mapper.readValue(jsonUrl, JSONObject.class).toJSONString();
+                try(Reader reader = new InputStreamReader(jsonUrl.openStream())){
+                    jsonValue = gson.fromJson(reader, JsonElement.class).toString();
+                }
+                return jsonValue;
+            } else {
+                return gson.fromJson(input, JsonElement.class).toString();
+            }
+        } catch (Exception e) { // NOSONAR
+            throw new OnapCliInvalidArgument(argName, e);
+        }
+    }
+
+    public static String readTextStringFromUrl(String input, String argName) throws OnapCliInvalidArgument {
+        try {
+            File file = new File(input);
+            if (file.isFile()) {
+                return FileUtils.readFileToString(file, (Charset) null);
             } else {
-                return mapper.readValue(input, JSONObject.class).toJSONString();
+                return input;
             }
+
         } catch (IOException e) {
             throw new OnapCliInvalidArgument(argName, e);
         }
     }
 
-    private static String readTextStringFromUrl(String input, String argName) throws OnapCliInvalidArgument {
+    public static String readYamlStringFromUrl(String input, String argName) throws OnapCliInvalidArgument {
         try {
             File file = new File(input);
             if (file.isFile()) {
-                return FileUtils.readFileToString(file);
+                String value = FileUtils.readFileToString(file, (Charset) null);
+                YamlReader reader = new YamlReader(value);
+                value = (String) reader.read();
+                return value;
             } else {
                 return input;
             }
@@ -208,22 +252,37 @@ public class OnapCliArgsParser {
         }
     }
 
-    private static List<String> convertJsonToListString(String arg, String json) throws OnapCliInvalidArgument {
-        TypeReference<List<String>> mapType = new TypeReference<List<String>>() {
-        };
+    public static String readBytesFromUrl(String input, String argName) throws OnapCliInvalidArgument {
         try {
-            return new ObjectMapper().readValue(json, mapType);
+            File file = new File(input);
+            if (file.isFile()) {
+                byte[] encodeBase64 = Base64.encodeBase64(FileUtils.readFileToByteArray(file));
+                return new String(encodeBase64);
+            } else {
+                byte[] encodeBase64 = Base64.encodeBase64(input.getBytes());
+                return new String(encodeBase64);
+            }
         } catch (IOException e) {
+            throw new OnapCliInvalidArgument(argName, e);
+        }
+    }
+
+    public static List<String> convertJsonToListString(String arg, String json) throws OnapCliInvalidArgument {
+        TypeToken<List<String>> mapType = new TypeToken<List<String>>() {
+        };
+        try {
+            return gson.fromJson(json, mapType.getType());
+        } catch (Exception e) { // NOSONAR
             throw new OnapCliInvalidArgument(arg, e);
         }
     }
 
-    private static Map<String, String> convertJsonToMapString(String arg, String json) throws OnapCliInvalidArgument {
-        TypeReference<Map<String, String>> mapType = new TypeReference<Map<String, String>>() {
+    public static Map<String, String> convertJsonToMapString(String arg, String json) throws OnapCliInvalidArgument {
+        TypeToken<Map<String, String>> mapType = new TypeToken<Map<String, String>>() {
         };
         try {
-            return new ObjectMapper().readValue(json, mapType);
-        } catch (IOException e) {
+            return gson.fromJson(json, mapType.getType());
+        } catch (Exception e) { // NOSONAR
             throw new OnapCliInvalidArgument(arg, e);
         }
     }