mirror of https://github.com/apache/cloudstack.git
Fixed api xml generator - used to truncate some chars during api diff generation
This commit is contained in:
parent
be76a51dbe
commit
dd282f01e1
|
|
@ -35,258 +35,266 @@ import com.thoughtworks.xstream.XStream;
|
|||
import com.thoughtworks.xstream.io.xml.DomDriver;
|
||||
|
||||
public class ApiXmlDocReader {
|
||||
public static void main (String[] args) {
|
||||
String newFile = null;
|
||||
String oldFile = null;
|
||||
String dirName = "";
|
||||
|
||||
LinkedHashMap<String, Command> commands = new LinkedHashMap<String,Command>();
|
||||
LinkedHashMap<String, Command> oldCommands = new LinkedHashMap<String,Command>();
|
||||
ArrayList<Command> addedCommands = new ArrayList<Command>();
|
||||
ArrayList<Command> removedCommands = new ArrayList<Command>();
|
||||
HashMap<String, Command> stableCommands = new HashMap<String, Command>();
|
||||
public static void main (String[] args) {
|
||||
String newFile = null;
|
||||
String oldFile = null;
|
||||
String dirName = "";
|
||||
|
||||
LinkedHashMap<String, Command> commands = new LinkedHashMap<String,Command>();
|
||||
LinkedHashMap<String, Command> oldCommands = new LinkedHashMap<String,Command>();
|
||||
ArrayList<Command> addedCommands = new ArrayList<Command>();
|
||||
ArrayList<Command> removedCommands = new ArrayList<Command>();
|
||||
HashMap<String, Command> stableCommands = new HashMap<String, Command>();
|
||||
|
||||
XStream xs = new XStream(new DomDriver());
|
||||
xs.alias("command", Command.class);
|
||||
xs.alias("arg", Argument.class);
|
||||
|
||||
XStream xs = new XStream(new DomDriver());
|
||||
xs.alias("command", Command.class);
|
||||
xs.alias("arg", Argument.class);
|
||||
|
||||
|
||||
List<String> argsList = Arrays.asList(args);
|
||||
Iterator<String> iter = argsList.iterator();
|
||||
while (iter.hasNext()) {
|
||||
String arg = iter.next();
|
||||
// populate the file names
|
||||
if (arg.equals("-new")) {
|
||||
newFile = iter.next();
|
||||
}
|
||||
if (arg.equals("-old")) {
|
||||
oldFile = iter.next();
|
||||
}
|
||||
if (arg.equals("-d")) {
|
||||
dirName = iter.next();
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
try{
|
||||
ObjectInputStream inOld = xs.createObjectInputStream(new FileReader(oldFile));
|
||||
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
|
||||
}
|
||||
|
||||
try{
|
||||
ObjectInputStream inNew = xs.createObjectInputStream(new FileReader(newFile));
|
||||
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
|
||||
}
|
||||
} catch (Exception ex){
|
||||
ex.printStackTrace();
|
||||
}
|
||||
|
||||
//Check if any commands got added in new version
|
||||
for (String key : commands.keySet()) {
|
||||
if (!oldCommands.containsKey(key)) {
|
||||
addedCommands.add(commands.get(key));
|
||||
} else {
|
||||
stableCommands.put(commands.get(key).getName(), commands.get(key));
|
||||
}
|
||||
}
|
||||
|
||||
//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 {
|
||||
FileWriter fstream = new FileWriter(dirName + "/diff.txt");
|
||||
BufferedWriter out = new BufferedWriter(fstream);
|
||||
|
||||
//Print added commands
|
||||
out.write("Added commands:\n");
|
||||
for (Command c : addedCommands) {
|
||||
if (c.getDescription() != null && !c.getDescription().isEmpty()) {
|
||||
out.write("\n " + c.getName() + " (" + c.getDescription() + ")\n");
|
||||
} else {
|
||||
out.write("\n " + c.getName() + "\n");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//Print removed commands
|
||||
out.write("\nRemoved commands:\n");
|
||||
for (Command c : removedCommands) {
|
||||
if (c.getDescription() != null && !c.getDescription().isEmpty()) {
|
||||
out.write("\n\t" + c.getName() + " (" + c.getDescription() + ")\n");
|
||||
} else {
|
||||
out.write("\n\t" + c.getName() + "\n");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
out.write("\n Changes in command type (sync versus async");
|
||||
//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";
|
||||
if (commands.get(key).isAsync()) {
|
||||
type = "Async";
|
||||
}
|
||||
out.write("\n\t" + stableCommands.get(key).getName() + " became " + type);
|
||||
}
|
||||
}
|
||||
|
||||
List<String> argsList = Arrays.asList(args);
|
||||
Iterator<String> iter = argsList.iterator();
|
||||
while (iter.hasNext()) {
|
||||
String arg = iter.next();
|
||||
// populate the file names
|
||||
if (arg.equals("-new")) {
|
||||
newFile = iter.next();
|
||||
}
|
||||
if (arg.equals("-old")) {
|
||||
oldFile = iter.next();
|
||||
}
|
||||
if (arg.equals("-d")) {
|
||||
dirName = iter.next();
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
try{
|
||||
ObjectInputStream inOld = xs.createObjectInputStream(new FileReader(oldFile));
|
||||
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
|
||||
}
|
||||
|
||||
try{
|
||||
ObjectInputStream inNew = xs.createObjectInputStream(new FileReader(newFile));
|
||||
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
|
||||
}
|
||||
} catch (Exception ex){
|
||||
ex.printStackTrace();
|
||||
}
|
||||
|
||||
//Check if any commands got added in new version
|
||||
for (String key : commands.keySet()) {
|
||||
if (!oldCommands.containsKey(key)) {
|
||||
addedCommands.add(commands.get(key));
|
||||
} else {
|
||||
stableCommands.put(commands.get(key).getName(), commands.get(key));
|
||||
}
|
||||
}
|
||||
|
||||
//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 {
|
||||
FileWriter fstream = new FileWriter(dirName + "/diff.txt");
|
||||
BufferedWriter out = new BufferedWriter(fstream);
|
||||
|
||||
//Print added commands
|
||||
out.write("Added commands:\n");
|
||||
for (Command c : addedCommands) {
|
||||
if (c.getDescription() != null && !c.getDescription().isEmpty()) {
|
||||
out.write("\n " + c.getName() + " (" + c.getDescription() + ")\n");
|
||||
} else {
|
||||
out.write("\n " + c.getName() + "\n");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//Print removed commands
|
||||
out.write("\nRemoved commands:\n");
|
||||
for (Command c : removedCommands) {
|
||||
if (c.getDescription() != null && !c.getDescription().isEmpty()) {
|
||||
out.write("\n\t" + c.getName() + " (" + c.getDescription() + ")\n");
|
||||
} 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
|
||||
for (String key : stableCommands.keySet()) {
|
||||
if (commands.get(key).isAsync() != oldCommands.get(key).isAsync()) {
|
||||
String type = "Sync";
|
||||
if (commands.get(key).isAsync()) {
|
||||
type = "Async";
|
||||
}
|
||||
out.write("\n\t" + stableCommands.get(key).getName() + " became " + type);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//Print differences between commands arguments
|
||||
out.write("\nChanges in commands arguments:\n");
|
||||
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, Argument> stableRespArgs = new HashMap<String, Argument>();
|
||||
|
||||
Command newCommand = commands.get(key);
|
||||
Command oldCommand = oldCommands.get(key);
|
||||
|
||||
//Check if any request arguments were added in new version
|
||||
for (Argument arg : newCommand.getRequest()) {
|
||||
if (oldCommand.getReqArgByName(arg.getName()) == null) {
|
||||
newReqArgs.add(arg);
|
||||
} else {
|
||||
stableReqArgs.put(arg.getName(), arg);
|
||||
}
|
||||
}
|
||||
|
||||
//Check if any request arguments were removed in new version
|
||||
for (Argument arg : oldCommand.getRequest()) {
|
||||
if (newCommand.getReqArgByName(arg.getName()) == null) {
|
||||
removedReqArgs.add(arg);
|
||||
if (stableReqArgs.get(arg.getName()) != null) {
|
||||
stableReqArgs.remove(arg.getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Compare stable request arguments of old and new version
|
||||
for (Iterator<String> 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
|
||||
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
|
||||
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) {
|
||||
out.write("\n\t" + key);
|
||||
//Request
|
||||
if (newReqArgs.size() != 0 || removedReqArgs.size() != 0 || stableReqArgs.size() != 0) {
|
||||
out.write("\n\t\tRequest");
|
||||
if (newReqArgs.size() != 0){
|
||||
StringBuffer newParameters = new StringBuffer();
|
||||
newParameters.append("\n\t\t\tNew parameters: ");
|
||||
for (Argument newArg: newReqArgs) {
|
||||
String isRequiredParam = "optional";
|
||||
if (newArg.isRequired()) {
|
||||
isRequiredParam = "required";
|
||||
}
|
||||
newParameters.append(newArg.getName() + " (" + isRequiredParam + "), ");
|
||||
}
|
||||
newParameters.delete(newParameters.length()-2, newParameters.length()-1);
|
||||
out.write(newParameters.toString());
|
||||
out.write("\n");
|
||||
}
|
||||
if (removedReqArgs.size() != 0){
|
||||
StringBuffer removedParameters = new StringBuffer();
|
||||
removedParameters.append("\n\t\t\tRemoved parameters: ");
|
||||
for (Argument removedArg: removedReqArgs) {
|
||||
removedParameters.append(removedArg.getName() + ", ");
|
||||
}
|
||||
removedParameters.delete(removedParameters.length()-2, removedParameters.length()-1);
|
||||
out.write(removedParameters.toString());
|
||||
out.write("\n");
|
||||
}
|
||||
|
||||
if (stableReqArgs.size() != 0){
|
||||
StringBuffer changedParameters = new StringBuffer();
|
||||
changedParameters.append("\n\t\t\tChanged parameters: ");
|
||||
for (Argument stableArg: stableReqArgs.values()) {
|
||||
String newRequired = "optional";
|
||||
String oldRequired = "optional";
|
||||
if (oldCommand.getReqArgByName(stableArg.getName()).isRequired() == true)
|
||||
oldRequired = "required";
|
||||
if (newCommand.getReqArgByName(stableArg.getName()).isRequired() == true)
|
||||
newRequired = "required";
|
||||
changedParameters.append(stableArg.getName() + " (old version - " + oldRequired + ", new version - " + newRequired + "), ");
|
||||
}
|
||||
changedParameters.delete(changedParameters.length() - 2, changedParameters.length() - 1);
|
||||
out.write(changedParameters.toString());
|
||||
out.write("\n");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//Response
|
||||
if (newRespArgs.size() != 0 || removedRespArgs.size() != 0 || stableRespArgs.size() != 0) {
|
||||
StringBuffer changedResponseParams = new StringBuffer();
|
||||
changedResponseParams.append("\n\t\tResponse:");
|
||||
if (newRespArgs.size() != 0){
|
||||
changedResponseParams.append("\n\t\t\tNew parameters: ");
|
||||
out.write("\n\t\t\tNew parameters: ");
|
||||
for (Argument newArg: newRespArgs) {
|
||||
changedResponseParams.append(newArg.getName() + ", ");
|
||||
}
|
||||
changedResponseParams.delete(changedResponseParams.length() - 2, changedResponseParams.length() - 1);
|
||||
out.write("\n");
|
||||
}
|
||||
if (removedRespArgs.size() != 0){
|
||||
changedResponseParams.append("\n\t\t\tRemoved parameters: ");
|
||||
for (Argument removedArg: removedRespArgs) {
|
||||
changedResponseParams.append(removedArg.getName());
|
||||
out.write(removedArg.getName());
|
||||
}
|
||||
}
|
||||
changedResponseParams.delete(changedResponseParams.length() - 2, changedResponseParams.length() - 1);
|
||||
out.write(changedResponseParams.toString());
|
||||
out.write("\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
out.close();
|
||||
//Print differences between commands arguments
|
||||
out.write("\n\nChanges in commands arguments:\n");
|
||||
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, Argument> stableRespArgs = new HashMap<String, Argument>();
|
||||
|
||||
Command newCommand = commands.get(key);
|
||||
Command oldCommand = oldCommands.get(key);
|
||||
|
||||
//Check if any request arguments were added in new version
|
||||
for (Argument arg : newCommand.getRequest()) {
|
||||
if (oldCommand.getReqArgByName(arg.getName()) == null) {
|
||||
newReqArgs.add(arg);
|
||||
} else {
|
||||
stableReqArgs.put(arg.getName(), arg);
|
||||
}
|
||||
}
|
||||
|
||||
//Check if any request arguments were removed in new version
|
||||
for (Argument arg : oldCommand.getRequest()) {
|
||||
if (newCommand.getReqArgByName(arg.getName()) == null) {
|
||||
removedReqArgs.add(arg);
|
||||
if (stableReqArgs.get(arg.getName()) != null) {
|
||||
stableReqArgs.remove(arg.getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Compare stable request arguments of old and new version
|
||||
for (Iterator<String> 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
|
||||
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
|
||||
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();
|
||||
commandInfo.append("\n\t" + key);
|
||||
out.write(commandInfo.toString());
|
||||
out.write("\n");
|
||||
|
||||
//Request
|
||||
if (newReqArgs.size() != 0 || removedReqArgs.size() != 0) {
|
||||
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: ");
|
||||
for (Argument newArg: newReqArgs) {
|
||||
String isRequiredParam = "optional";
|
||||
if (newArg.isRequired()) {
|
||||
isRequiredParam = "required";
|
||||
}
|
||||
newParameters.append(newArg.getName() + " (" + isRequiredParam + "), ");
|
||||
}
|
||||
newParameters.delete(newParameters.length()-2, newParameters.length()-1);
|
||||
out.write(newParameters.toString());
|
||||
out.write("\n");
|
||||
}
|
||||
if (removedReqArgs.size() != 0){
|
||||
StringBuffer removedParameters = new StringBuffer();
|
||||
removedParameters.append("\n\t\t\tRemoved parameters: ");
|
||||
for (Argument removedArg: removedReqArgs) {
|
||||
removedParameters.append(removedArg.getName() + ", ");
|
||||
}
|
||||
removedParameters.delete(removedParameters.length()-2, removedParameters.length()-1);
|
||||
out.write(removedParameters.toString());
|
||||
out.write("\n");
|
||||
}
|
||||
|
||||
if (stableReqArgs.size() != 0){
|
||||
StringBuffer changedParameters = new StringBuffer();
|
||||
changedParameters.append("\n\t\t\tChanged parameters: ");
|
||||
for (Argument stableArg: stableReqArgs.values()) {
|
||||
String newRequired = "optional";
|
||||
String oldRequired = "optional";
|
||||
if (oldCommand.getReqArgByName(stableArg.getName()).isRequired() == true)
|
||||
oldRequired = "required";
|
||||
if (newCommand.getReqArgByName(stableArg.getName()).isRequired() == true)
|
||||
newRequired = "required";
|
||||
changedParameters.append(stableArg.getName() + " (old version - " + oldRequired + ", new version - " + newRequired + "), ");
|
||||
}
|
||||
changedParameters.delete(changedParameters.length() - 2, changedParameters.length() - 1);
|
||||
out.write(changedParameters.toString());
|
||||
out.write("\n");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//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){
|
||||
StringBuffer newRespParams = new StringBuffer();
|
||||
newRespParams.append("\n\t\t\tNew parameters: ");
|
||||
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){
|
||||
StringBuffer removedRespParams = new StringBuffer();
|
||||
removedRespParams.append("\n\t\t\tRemoved parameters: ");
|
||||
for (Argument removedArg: removedRespArgs) {
|
||||
removedRespParams.append(removedArg.getName() + ", ");
|
||||
}
|
||||
removedRespParams.delete(removedRespParams.length() - 2, removedRespParams.length() - 1);
|
||||
out.write(removedRespParams.toString());
|
||||
out.write("\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
out.close();
|
||||
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue