From b9a2b7204700e44d2d706e646cc481aa31e117fb Mon Sep 17 00:00:00 2001 From: alena Date: Fri, 29 Apr 2011 10:16:09 -0700 Subject: [PATCH] Fixed a bug in XmlApiDocReader --- .../com/cloud/api/doc/ApiXmlDocReader.java | 157 +++++++++--------- 1 file changed, 77 insertions(+), 80 deletions(-) diff --git a/server/src/com/cloud/api/doc/ApiXmlDocReader.java b/server/src/com/cloud/api/doc/ApiXmlDocReader.java index 5228b489f1c..020094e6dca 100644 --- a/server/src/com/cloud/api/doc/ApiXmlDocReader.java +++ b/server/src/com/cloud/api/doc/ApiXmlDocReader.java @@ -35,13 +35,13 @@ import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.io.xml.DomDriver; public class ApiXmlDocReader { - public static void main (String[] args) { + public static void main(String[] args) { String newFile = null; String oldFile = null; String dirName = ""; - - LinkedHashMap commands = new LinkedHashMap(); - LinkedHashMap oldCommands = new LinkedHashMap(); + + LinkedHashMap commands = new LinkedHashMap(); + LinkedHashMap oldCommands = new LinkedHashMap(); ArrayList addedCommands = new ArrayList(); ArrayList removedCommands = new ArrayList(); HashMap stableCommands = new HashMap(); @@ -49,7 +49,6 @@ public class ApiXmlDocReader { XStream xs = new XStream(new DomDriver()); xs.alias("command", Command.class); xs.alias("arg", Argument.class); - List argsList = Arrays.asList(args); Iterator iter = argsList.iterator(); @@ -66,32 +65,32 @@ public class ApiXmlDocReader { dirName = iter.next(); } } - + try { - try{ + try { ObjectInputStream inOld = xs.createObjectInputStream(new FileReader(oldFile)); - while (true){ - Command c1 = (Command)inOld.readObject(); + while (true) { + Command c1 = (Command) inOld.readObject(); oldCommands.put(c1.getName(), c1); } } catch (EOFException ex) { - //EOF exception shows that there is no more objects in ObjectInputStream, so do nothing here + // EOF exception shows that there is no more objects in ObjectInputStream, so do nothing here } - - try{ + + try { ObjectInputStream inNew = xs.createObjectInputStream(new FileReader(newFile)); - while (true){ - Command c = (Command)inNew.readObject(); + while (true) { + Command c = (Command) inNew.readObject(); commands.put(c.getName(), c); } } catch (EOFException ex) { - //EOF exception shows that there is no more objects in ObjectInputStream, so do nothing here + // EOF exception shows that there is no more objects in ObjectInputStream, so do nothing here } - } catch (Exception ex){ + } catch (Exception ex) { ex.printStackTrace(); } - - //Check if any commands got added in new version + + // Check if any commands got added in new version for (String key : commands.keySet()) { if (!oldCommands.containsKey(key)) { addedCommands.add(commands.get(key)); @@ -99,22 +98,22 @@ public class ApiXmlDocReader { stableCommands.put(commands.get(key).getName(), commands.get(key)); } } - - //Check if any commands were removed in new version + + // Check if any commands were removed in new version for (String key : oldCommands.keySet()) { if (!commands.containsKey(key)) { removedCommands.add(oldCommands.get(key)); if (stableCommands.get(key) != null) { stableCommands.remove(key); } - } + } } - - try { + + try { FileWriter fstream = new FileWriter(dirName + "/diff.txt"); BufferedWriter out = new BufferedWriter(fstream); - - //Print added commands + + // Print added commands out.write("Added commands:\n"); for (Command c : addedCommands) { if (c.getDescription() != null && !c.getDescription().isEmpty()) { @@ -122,10 +121,10 @@ public class ApiXmlDocReader { } else { out.write("\n " + c.getName() + "\n"); } - + } - - //Print removed commands + + // Print removed commands out.write("\nRemoved commands:\n"); for (Command c : removedCommands) { if (c.getDescription() != null && !c.getDescription().isEmpty()) { @@ -133,11 +132,11 @@ public class ApiXmlDocReader { } else { out.write("\n\t" + c.getName() + "\n"); } - + } - + out.write("\nChanges in command type (sync versus async)\n"); - //Verify if the command was sync and became async and vice versa + // Verify if the command was sync and became async and vice versa for (String key : stableCommands.keySet()) { if (commands.get(key).isAsync() != oldCommands.get(key).isAsync()) { String type = "Sync"; @@ -147,31 +146,31 @@ public class ApiXmlDocReader { out.write("\n\t" + stableCommands.get(key).getName() + " became " + type); } } - - //Print differences between commands arguments + // Print differences between commands arguments out.write("\n\nChanges in commands arguments:\n"); - for (String key : stableCommands.keySet()){ + for (String key : stableCommands.keySet()) { ArrayList newReqArgs = new ArrayList(); ArrayList removedReqArgs = new ArrayList(); HashMap stableReqArgs = new HashMap(); ArrayList newRespArgs = new ArrayList(); ArrayList removedRespArgs = new ArrayList(); - HashMap stableRespArgs = new HashMap(); - + Command newCommand = commands.get(key); Command oldCommand = oldCommands.get(key); - - //Check if any request arguments were added in new version + + // Check if any request arguments were added in new version for (Argument arg : newCommand.getRequest()) { if (oldCommand.getReqArgByName(arg.getName()) == null) { - newReqArgs.add(arg); + if (!(arg.getName().equals("page") || arg.getName().equals("pagesize") || arg.getName().equals("keyword"))) { + newReqArgs.add(arg); + } } else { stableReqArgs.put(arg.getName(), arg); } } - - //Check if any request arguments were removed in new version + + // Check if any request arguments were removed in new version for (Argument arg : oldCommand.getRequest()) { if (newCommand.getReqArgByName(arg.getName()) == null) { removedReqArgs.add(arg); @@ -180,72 +179,71 @@ public class ApiXmlDocReader { } } } - - //Compare stable request arguments of old and new version + + // Compare stable request arguments of old and new version for (Iterator i = stableReqArgs.keySet().iterator(); i.hasNext();) { String argName = i.next(); if (oldCommand.getReqArgByName(argName).isRequired() == newCommand.getReqArgByName(argName).isRequired()) { i.remove(); } } - - //Check if any response arguments were added in new version + + // Check if any response arguments were added in new version if (newCommand.getResponse() != null && oldCommand.getResponse() != null) { for (Argument arg : newCommand.getResponse()) { if (oldCommand.getResArgByName(arg.getName()) == null) { newRespArgs.add(arg); - } + } } - - //Check if any response arguments were removed in new version + + // Check if any response arguments were removed in new version for (Argument arg : oldCommand.getResponse()) { if (newCommand.getResArgByName(arg.getName()) == null) { removedRespArgs.add(arg); } } } - - - if (newReqArgs.size() != 0 || newRespArgs.size() != 0 || removedReqArgs.size() != 0 || removedRespArgs.size() != 0 || stableReqArgs.size() != 0 || stableReqArgs.size() != 0) { - StringBuffer commandInfo = new StringBuffer(); + + if (newReqArgs.size() != 0 || newRespArgs.size() != 0 || removedReqArgs.size() != 0 || removedRespArgs.size() != 0 || stableReqArgs.size() != 0 || stableReqArgs.size() != 0) { + StringBuffer commandInfo = new StringBuffer(); commandInfo.append("\n\t" + key); out.write(commandInfo.toString()); - out.write("\n"); - - //Request - if (newReqArgs.size() != 0 || removedReqArgs.size() != 0) { - StringBuffer request = new StringBuffer(); + out.write("\n"); + + // Request + if (newReqArgs.size() != 0 || removedReqArgs.size() != 0 || stableReqArgs.size() != 0) { + StringBuffer request = new StringBuffer(); request.append("\n\t\tRequest:\n"); out.write(request.toString()); - if (newReqArgs.size() != 0){ - StringBuffer newParameters = new StringBuffer(); + if (newReqArgs.size() != 0) { + StringBuffer newParameters = new StringBuffer(); newParameters.append("\n\t\t\tNew parameters: "); - for (Argument newArg: newReqArgs) { + for (Argument newArg : newReqArgs) { String isRequiredParam = "optional"; if (newArg.isRequired()) { isRequiredParam = "required"; } - newParameters.append(newArg.getName() + " (" + isRequiredParam + "), "); + newParameters.append(newArg.getName() + " (" + isRequiredParam + "), "); } - newParameters.delete(newParameters.length()-2, newParameters.length()-1); + newParameters.delete(newParameters.length() - 2, newParameters.length() - 1); out.write(newParameters.toString()); out.write("\n"); } - if (removedReqArgs.size() != 0){ + if (removedReqArgs.size() != 0) { StringBuffer removedParameters = new StringBuffer(); removedParameters.append("\n\t\t\tRemoved parameters: "); - for (Argument removedArg: removedReqArgs) { + for (Argument removedArg : removedReqArgs) { removedParameters.append(removedArg.getName() + ", "); } - removedParameters.delete(removedParameters.length()-2, removedParameters.length()-1); + removedParameters.delete(removedParameters.length() - 2, removedParameters.length() - 1); out.write(removedParameters.toString()); out.write("\n"); } - - if (stableReqArgs.size() != 0){ + + if (stableReqArgs.size() != 0) { StringBuffer changedParameters = new StringBuffer(); changedParameters.append("\n\t\t\tChanged parameters: "); - for (Argument stableArg: stableReqArgs.values()) { + for (Argument stableArg : stableReqArgs.values()) { String newRequired = "optional"; String oldRequired = "optional"; if (oldCommand.getReqArgByName(stableArg.getName()).isRequired() == true) @@ -258,28 +256,27 @@ public class ApiXmlDocReader { out.write(changedParameters.toString()); out.write("\n"); } - } - - //Response + + // Response if (newRespArgs.size() != 0 || removedRespArgs.size() != 0) { StringBuffer changedResponseParams = new StringBuffer(); changedResponseParams.append("\n\t\tResponse:\n"); out.write(changedResponseParams.toString()); - if (newRespArgs.size() != 0){ + if (newRespArgs.size() != 0) { StringBuffer newRespParams = new StringBuffer(); newRespParams.append("\n\t\t\tNew parameters: "); - for (Argument newArg: newRespArgs) { + for (Argument newArg : newRespArgs) { newRespParams.append(newArg.getName() + ", "); } newRespParams.delete(newRespParams.length() - 2, newRespParams.length() - 1); out.write(newRespParams.toString()); out.write("\n"); } - if (removedRespArgs.size() != 0){ + if (removedRespArgs.size() != 0) { StringBuffer removedRespParams = new StringBuffer(); removedRespParams.append("\n\t\t\tRemoved parameters: "); - for (Argument removedArg: removedRespArgs) { + for (Argument removedArg : removedRespArgs) { removedRespParams.append(removedArg.getName() + ", "); } removedRespParams.delete(removedRespParams.length() - 2, removedRespParams.length() - 1); @@ -287,14 +284,14 @@ public class ApiXmlDocReader { out.write("\n"); } } - } + } } - + out.close(); - } catch (IOException e) { - e.printStackTrace(); - } + } catch (IOException e) { + e.printStackTrace(); + } } }