From 8ee876a9a21bbd701f9411dec2e6509cc4aea12f Mon Sep 17 00:00:00 2001 From: kishan Date: Thu, 27 Oct 2011 14:18:02 +0530 Subject: [PATCH] bug 10405: Added annontation since for API Commands and request parameters. Whenever a new APi or parameter is added since=version should be added status 10405: resolved fixed --- api/src/com/cloud/api/Implementation.java | 1 + api/src/com/cloud/api/Parameter.java | 1 + server/src/com/cloud/api/doc/ApiXmlDocWriter.java | 13 +++++++++++-- server/src/com/cloud/api/doc/Argument.java | 9 +++++++++ server/src/com/cloud/api/doc/Command.java | 9 +++++++++ 5 files changed, 31 insertions(+), 2 deletions(-) diff --git a/api/src/com/cloud/api/Implementation.java b/api/src/com/cloud/api/Implementation.java index aab2fce4e89..4319227d53f 100644 --- a/api/src/com/cloud/api/Implementation.java +++ b/api/src/com/cloud/api/Implementation.java @@ -30,4 +30,5 @@ public @interface Implementation { Class responseObject(); String description() default ""; boolean includeInApiDoc() default true; + String since() default ""; } diff --git a/api/src/com/cloud/api/Parameter.java b/api/src/com/cloud/api/Parameter.java index 1e50f229fb0..c2fb8088ccd 100644 --- a/api/src/com/cloud/api/Parameter.java +++ b/api/src/com/cloud/api/Parameter.java @@ -37,5 +37,6 @@ public @interface Parameter { boolean expose() default true; boolean includeInApiDoc() default true; int length() default 255; + String since() default ""; } diff --git a/server/src/com/cloud/api/doc/ApiXmlDocWriter.java b/server/src/com/cloud/api/doc/ApiXmlDocWriter.java index 6d6af87f2f5..b3f82cf1123 100644 --- a/server/src/com/cloud/api/doc/ApiXmlDocWriter.java +++ b/server/src/com/cloud/api/doc/ApiXmlDocWriter.java @@ -295,6 +295,11 @@ public class ApiXmlDocWriter { else System.out.println("Command " + apiCommand.getName() + " misses description"); + //Set version when the API is added + if(!impl.since().isEmpty()){ + apiCommand.setSinceVersion(impl.since()); + } + // Set request parameters Field[] fields = clas.getDeclaredFields(); @@ -319,7 +324,7 @@ public class ApiXmlDocWriter { } else { apiCommand.setAsync(false); } - + // Get response parameters Class responseClas = impl.responseObject(); Field[] responseFields = responseClas.getDeclaredFields(); @@ -404,7 +409,11 @@ public class ApiXmlDocWriter { if (parameterAnnotation.type() == BaseCmd.CommandType.LIST || parameterAnnotation.type() == BaseCmd.CommandType.MAP) { reqArg.setType(parameterAnnotation.type().toString().toLowerCase()); } - + + if(!parameterAnnotation.since().isEmpty()){ + reqArg.setSinceVersion(parameterAnnotation.since()); + } + if (reqArg.isRequired() == true) { if (parameterAnnotation.name().equals("id")) { id = reqArg; diff --git a/server/src/com/cloud/api/doc/Argument.java b/server/src/com/cloud/api/doc/Argument.java index 2cb47d6c17a..7b2c219fe45 100644 --- a/server/src/com/cloud/api/doc/Argument.java +++ b/server/src/com/cloud/api/doc/Argument.java @@ -25,6 +25,7 @@ public class Argument implements Comparable{ private String description; private Boolean required; private String type; + private String sinceVersion = null; private List arguments; public Argument(String name) { @@ -77,6 +78,14 @@ public class Argument implements Comparable{ this.arguments = arguments; } + public String getSinceVersion() { + return sinceVersion; + } + + public void setSinceVersion(String sinceVersion) { + this.sinceVersion = sinceVersion; + } + public int compareTo(Object anotherAgrument) throws ClassCastException { if (!(anotherAgrument instanceof Argument)) throw new ClassCastException("An Argument object expected."); diff --git a/server/src/com/cloud/api/doc/Command.java b/server/src/com/cloud/api/doc/Command.java index 90f2f92d4c7..2903938062e 100644 --- a/server/src/com/cloud/api/doc/Command.java +++ b/server/src/com/cloud/api/doc/Command.java @@ -25,6 +25,7 @@ public class Command { private String name; private String description; private boolean isAsync; + private String sinceVersion = null; private ArrayList request; private ArrayList response; @@ -75,6 +76,14 @@ public class Command { this.isAsync = isAsync; } + public String getSinceVersion() { + return sinceVersion; + } + + public void setSinceVersion(String sinceVersion) { + this.sinceVersion = sinceVersion; + } + public Argument getReqArgByName(String name){ for (Argument a : this.getRequest()) { if (a.getName().equals(name)) {