You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by bh...@apache.org on 2016/09/28 09:46:25 UTC

[34/50] [abbrv] git commit: updated refs/heads/4.9-bountycastle-daan to b9ee34f

Added JSON diff output to the ApiXmlDocReader in additon TXT for parsability


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/0e5e6029
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/0e5e6029
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/0e5e6029

Branch: refs/heads/4.9-bountycastle-daan
Commit: 0e5e60295311aa5994b77529da7cd7f943907977
Parents: 2acb0b7
Author: Will Stevens <wi...@gmail.com>
Authored: Fri Jun 17 16:07:58 2016 -0400
Committer: Will Stevens <wi...@gmail.com>
Committed: Mon Sep 12 10:08:09 2016 -0400

----------------------------------------------------------------------
 .../src/com/cloud/api/doc/ApiXmlDocReader.java  | 74 ++++++++++++++++++--
 1 file changed, 68 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0e5e6029/server/src/com/cloud/api/doc/ApiXmlDocReader.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/api/doc/ApiXmlDocReader.java b/server/src/com/cloud/api/doc/ApiXmlDocReader.java
index a9e49b2..a8aa97b 100644
--- a/server/src/com/cloud/api/doc/ApiXmlDocReader.java
+++ b/server/src/com/cloud/api/doc/ApiXmlDocReader.java
@@ -30,6 +30,7 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Arrays;
 
+import com.google.gson.Gson;
 
 import com.thoughtworks.xstream.XStream;
 import com.thoughtworks.xstream.io.xml.DomDriver;
@@ -45,6 +46,8 @@ public class ApiXmlDocReader {
         ArrayList<Command> addedCommands = new ArrayList<Command>();
         ArrayList<Command> removedCommands = new ArrayList<Command>();
         HashMap<String, Command> stableCommands = new HashMap<String, Command>();
+        HashMap<String, Object> jsonOut = new HashMap<String, Object>();
+        Gson gson = new Gson();
 
         XStream xs = new XStream(new DomDriver());
         xs.alias("command", Command.class);
@@ -108,49 +111,69 @@ public class ApiXmlDocReader {
         }
 
         try (FileWriter fstream = new FileWriter(dirName + "/diff.txt");
-             BufferedWriter out = new BufferedWriter(fstream);){
+             BufferedWriter out = new BufferedWriter(fstream);
+             FileWriter jfstream = new FileWriter(dirName + "/diff.json");
+             BufferedWriter json = new BufferedWriter(jfstream);){
             // Print added commands
             out.write("Added commands:\n");
+            ArrayList<HashMap<String, Object>> addedCmds = new ArrayList<HashMap<String, Object>>();
             for (Command c : addedCommands) {
+                HashMap<String, Object> addedCmd = new HashMap<String, Object>();
                 if (c.getDescription() != null && !c.getDescription().isEmpty()) {
                     out.write("\n    " + c.getName() + " (" + c.getDescription() + ")\n");
+                    addedCmd.put("description", c.getDescription());
                 } else {
                     out.write("\n    " + c.getName() + "\n");
                 }
-
+                addedCmd.put("name", c.getName());
+                addedCmds.add(addedCmd);
             }
+            jsonOut.put("commands_added", addedCmds);
 
             // Print removed commands
             out.write("\nRemoved commands:\n");
+            ArrayList<HashMap<String, Object>> removedCmds = new ArrayList<HashMap<String, Object>>();
             for (Command c : removedCommands) {
+                HashMap<String, Object> removedCmd = new HashMap<String, Object>();
                 if (c.getDescription() != null && !c.getDescription().isEmpty()) {
                     out.write("\n\t" + c.getName() + " (" + c.getDescription() + ")\n");
+                    removedCmd.put("description", c.getDescription());
                 } else {
                     out.write("\n\t" + c.getName() + "\n");
                 }
-
+                removedCmd.put("name", c.getName());
+                removedCmds.add(removedCmd);
             }
+            jsonOut.put("commands_removed", removedCmds);
 
             out.write("\nChanges in command type (sync versus async)\n");
+            ArrayList<HashMap<String, Object>> syncChangeCmds = new ArrayList<HashMap<String, Object>>();
             // Verify if the command was sync and became async and vice versa
             for (Map.Entry<String,Command>entry : stableCommands.entrySet()) {
                 if (commands.get(entry.getKey()).isAsync() != oldCommands.get(entry.getKey()).isAsync()) {
+                    HashMap<String, Object> syncChangeCmd = new HashMap<String, Object>();
                     String type = "Sync";
                     if (commands.get(entry.getKey()).isAsync()) {
                         type = "Async";
                     }
+                    syncChangeCmd.put("name", entry.getValue().getName());
+                    syncChangeCmd.put("sync_type", type);
+                    syncChangeCmds.add(syncChangeCmd);
                     out.write("\n\t" + entry.getValue().getName() + " became " + type);
                 }
             }
+            jsonOut.put("commands_sync_changed", syncChangeCmds);
 
             // Print differences between commands arguments
             out.write("\n\nChanges in commands arguments:\n");
+            ArrayList<HashMap<String, Object>> argsChangeCmds = new ArrayList<HashMap<String, Object>>();
             for (String key : stableCommands.keySet()) {
                 ArrayList<Argument> newReqArgs = new ArrayList<Argument>();
                 ArrayList<Argument> removedReqArgs = new ArrayList<Argument>();
                 HashMap<String, Argument> stableReqArgs = new HashMap<String, Argument>();
                 ArrayList<Argument> newRespArgs = new ArrayList<Argument>();
                 ArrayList<Argument> removedRespArgs = new ArrayList<Argument>();
+                HashMap<String, Object> argsChangeCmd = new HashMap<String, Object>();
 
                 Command newCommand = commands.get(key);
                 Command oldCommand = oldCommands.get(key);
@@ -208,22 +231,30 @@ public class ApiXmlDocReader {
                     commandInfo.append("\n\t" + key);
                     out.write(commandInfo.toString());
                     out.write("\n");
+                    argsChangeCmd.put("name", key);
 
                     // Request
                     if (newReqArgs.size() != 0 || removedReqArgs.size() != 0 || stableReqArgs.size() != 0) {
+                        HashMap<String, Object> requestChanges = new HashMap<String, Object>();
                         StringBuffer request = new StringBuffer();
                         request.append("\n\t\tRequest:\n");
                         out.write(request.toString());
                         if (newReqArgs.size() != 0) {
                             StringBuffer newParameters = new StringBuffer();
                             newParameters.append("\n\t\t\tNew parameters: ");
+                            ArrayList<HashMap<String, Object>> newRequestParams = new ArrayList<HashMap<String, Object>>();
                             for (Argument newArg : newReqArgs) {
+                                HashMap<String, Object> newRequestParam = new HashMap<String, Object>();
                                 String isRequiredParam = "optional";
                                 if (newArg.isRequired()) {
                                     isRequiredParam = "required";
                                 }
+                                newRequestParam.put("name", newArg.getName());
+                                newRequestParam.put("required", newArg.isRequired());
+                                newRequestParams.add(newRequestParam);
                                 newParameters.append(newArg.getName() + " (" + isRequiredParam + "), ");
                             }
+                            requestChanges.put("params_new", newRequestParams);
                             newParameters.delete(newParameters.length() - 2, newParameters.length() - 1);
                             out.write(newParameters.toString());
                             out.write("\n");
@@ -231,9 +262,14 @@ public class ApiXmlDocReader {
                         if (removedReqArgs.size() != 0) {
                             StringBuffer removedParameters = new StringBuffer();
                             removedParameters.append("\n\t\t\tRemoved parameters: ");
+                            ArrayList<HashMap<String, Object>> removedRequestParams = new ArrayList<HashMap<String, Object>>();
                             for (Argument removedArg : removedReqArgs) {
+                                HashMap<String, Object> removedRequestParam = new HashMap<String, Object>();
+                                removedRequestParam.put("name", removedArg.getName());
+                                removedRequestParams.add(removedRequestParam);
                                 removedParameters.append(removedArg.getName() + ", ");
                             }
+                            requestChanges.put("params_removed", removedRequestParams);
                             removedParameters.delete(removedParameters.length() - 2, removedParameters.length() - 1);
                             out.write(removedParameters.toString());
                             out.write("\n");
@@ -242,52 +278,78 @@ public class ApiXmlDocReader {
                         if (stableReqArgs.size() != 0) {
                             StringBuffer changedParameters = new StringBuffer();
                             changedParameters.append("\n\t\t\tChanged parameters: ");
+                            ArrayList<HashMap<String, Object>> changedRequestParams = new ArrayList<HashMap<String, Object>>();
                             for (Argument stableArg : stableReqArgs.values()) {
+                                HashMap<String, Object> changedRequestParam = new HashMap<String, Object>();
                                 String newRequired = "optional";
                                 String oldRequired = "optional";
-                                if ((oldCommand.getReqArgByName(stableArg.getName()) != null) && (oldCommand.getReqArgByName(stableArg.getName()).isRequired() == true))
+                                changedRequestParam.put("required_old", false);
+                                changedRequestParam.put("required_new", false);
+                                if ((oldCommand.getReqArgByName(stableArg.getName()) != null) && (oldCommand.getReqArgByName(stableArg.getName()).isRequired() == true)) {
                                     oldRequired = "required";
-                                if ((newCommand.getReqArgByName(stableArg.getName()) != null) && (newCommand.getReqArgByName(stableArg.getName()).isRequired() == true))
+                                    changedRequestParam.put("required_old", true);
+                                }
+                                if ((newCommand.getReqArgByName(stableArg.getName()) != null) && (newCommand.getReqArgByName(stableArg.getName()).isRequired() == true)) {
                                     newRequired = "required";
+                                    changedRequestParam.put("required_new", true);
+                                }
+                                changedRequestParam.put("name", stableArg.getName());
+                                changedRequestParams.add(changedRequestParam);
                                 changedParameters.append(stableArg.getName() + " (old version - " + oldRequired + ", new version - " + newRequired + "), ");
                             }
+                            requestChanges.put("params_changed", changedRequestParams);
                             changedParameters.delete(changedParameters.length() - 2, changedParameters.length() - 1);
                             out.write(changedParameters.toString());
                             out.write("\n");
                         }
+                        argsChangeCmd.put("request", requestChanges);
                     }
 
                     // Response
                     if (newRespArgs.size() != 0 || removedRespArgs.size() != 0) {
+                        HashMap<String, Object> responseChanges = new HashMap<String, Object>();
                         StringBuffer changedResponseParams = new StringBuffer();
                         changedResponseParams.append("\n\t\tResponse:\n");
                         out.write(changedResponseParams.toString());
                         if (newRespArgs.size() != 0) {
+                            ArrayList<HashMap<String, Object>> newResponseParams = new ArrayList<HashMap<String, Object>>();
                             StringBuffer newRespParams = new StringBuffer();
                             newRespParams.append("\n\t\t\tNew parameters: ");
                             for (Argument newArg : newRespArgs) {
+                                HashMap<String, Object> newResponseParam = new HashMap<String, Object>();
+                                newResponseParam.put("name", newArg.getName());
+                                newResponseParams.add(newResponseParam);
                                 newRespParams.append(newArg.getName() + ", ");
                             }
+                            responseChanges.put("params_new", newResponseParams);
                             newRespParams.delete(newRespParams.length() - 2, newRespParams.length() - 1);
                             out.write(newRespParams.toString());
                             out.write("\n");
                         }
                         if (removedRespArgs.size() != 0) {
+                            ArrayList<HashMap<String, Object>> removedResponseParams = new ArrayList<HashMap<String, Object>>();
                             StringBuffer removedRespParams = new StringBuffer();
                             removedRespParams.append("\n\t\t\tRemoved parameters: ");
                             for (Argument removedArg : removedRespArgs) {
+                                HashMap<String, Object> removedResponseParam = new HashMap<String, Object>();
+                                removedResponseParam.put("name", removedArg.getName());
+                                removedResponseParams.add(removedResponseParam);
                                 removedRespParams.append(removedArg.getName() + ", ");
                             }
+                            responseChanges.put("params_removed", removedResponseParams);
                             removedRespParams.delete(removedRespParams.length() - 2, removedRespParams.length() - 1);
                             out.write(removedRespParams.toString());
                             out.write("\n");
                         }
+                        argsChangeCmd.put("response", responseChanges);
                     }
+                    argsChangeCmds.add(argsChangeCmd);
                 }
             }
+            jsonOut.put("commands_args_changed", argsChangeCmds);
+            json.write(gson.toJson(jsonOut));
         } catch (IOException e) {
             e.printStackTrace();
         }
-
     }
 }