Ori Liel has uploaded a new change for review.

Change subject: restapi: RSDL - add 'deprecated' option
......................................................................

restapi: RSDL - add 'deprecated' option

Mark parameter as deprecated in rsdl_metadata.yaml file this way:

example for signature parameter:
  vm.display.type--DEPRECATED: xs:string

example for url-param:
  max: {context: matrix, type: 'xs:int', value: 'max results', required: false, 
deprecated: true}

example for header param:
  Filter: {value: true|false, required: false, deprecated: true}

Change-Id: Ia7f4ccf1dfa29894f8791909f2284496e7d8b27c
Signed-off-by: Ori Liel <ol...@redhat.com>
---
M 
backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/rsdl/ParamData.java
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/rsdl/RsdlBuilder.java
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/rsdl/Signature.java
4 files changed, 52 insertions(+), 12 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/60/17960/1

diff --git 
a/backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd
 
b/backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd
index 2f6994b..43c9b1f 100644
--- 
a/backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd
+++ 
b/backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd
@@ -3065,6 +3065,7 @@
         <xs:sequence>
              <xs:element name="value" type="xs:string" minOccurs="1" 
maxOccurs="1"/>
              <xs:element ref="parameters_set" minOccurs="0" maxOccurs="1"/>
+             <xs:element name="deprecated" type="xs:boolean" minOccurs="0" 
maxOccurs="1"/>
         </xs:sequence>
         <xs:attribute name="required" type="xs:boolean">
           <xs:annotation>
@@ -3086,6 +3087,7 @@
       <xs:extension base="BaseResource">
         <xs:sequence>
           <xs:element name="value" type="xs:string" minOccurs="1" 
maxOccurs="1"/>
+          <xs:element name="deprecated" type="xs:boolean" minOccurs="0" 
maxOccurs="1"/>
         </xs:sequence>
        <xs:attribute name="required" type="xs:boolean">
         <xs:annotation>
@@ -3116,6 +3118,7 @@
 
   <xs:complexType name="ParametersSet">
     <xs:sequence>
+      <xs:element name="deprecated" type="xs:boolean" minOccurs="0" 
maxOccurs="1"/>
       <xs:element ref="parameter" maxOccurs="unbounded" minOccurs="0">
         <xs:annotation>
           <xs:appinfo>
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/rsdl/ParamData.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/rsdl/ParamData.java
index 270f958..2b737c9 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/rsdl/ParamData.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/rsdl/ParamData.java
@@ -6,6 +6,15 @@
     private String value;
     private String type;
     private Boolean required;
+    private Boolean deprecated;
+
+    public Boolean getDeprecated() {
+        return deprecated;
+    }
+
+    public void setDeprecated(Boolean deprecated) {
+        this.deprecated = deprecated;
+    }
     public Boolean getRequired() {
         return required;
     }
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/rsdl/RsdlBuilder.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/rsdl/RsdlBuilder.java
index 0c88ee2..7505b28 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/rsdl/RsdlBuilder.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/rsdl/RsdlBuilder.java
@@ -67,6 +67,7 @@
 
     private static final String COLLECTION_PARAMETER_RSDL = "collection";
     private static final String COLLECTION_PARAMETER_YAML = "--COLLECTION";
+    private static final String DEPRECATED_PARAMETER_YAML = "--DEPRECATED";
     private RSDL rsdl;
     private String entryPointPath;
     private BackendApiResource apiResource;
@@ -395,6 +396,9 @@
             if (action.getRequest().getBody().getSignatures() != null) {
                 for (Signature signature : 
action.getRequest().getBody().getSignatures()) {
                     ParametersSet ps = new ParametersSet();
+                    if (signature.getDeprecated() != null) {
+                        ps.setDeprecated(signature.getDeprecated());
+                    }
                     addBodyParams(ps, 
signature.getMandatoryArguments().entrySet(), true);
                     addBodyParams(ps, 
signature.getOptionalArguments().entrySet(), false);
                     link.getRequest().getBody().getParametersSets().add(ps);
@@ -413,22 +417,36 @@
     private Parameter createBodyParam(Entry<Object, Object> 
mandatoryKeyValuePair, boolean required) {
         Parameter param = new Parameter();
         param.setRequired(required);
-        String paramName = mandatoryKeyValuePair.getKey().toString();
-        if (paramName.endsWith(COLLECTION_PARAMETER_YAML)) {
-            param.setName(paramName.substring(0, 
paramName.length()-(COLLECTION_PARAMETER_YAML.length())));
-            param.setType(COLLECTION_PARAMETER_RSDL);
-            @SuppressWarnings("unchecked")
-            Map<Object, Object> listParams = (Map<Object, 
Object>)mandatoryKeyValuePair.getValue();
-            param.setParametersSet(new ParametersSet());
-            for (Entry<Object, Object> listParamData : listParams.entrySet()) {
-                Parameter listParam = createBodyParam(listParamData, required);
-                param.getParametersSet().getParameters().add(listParam);
-            }
+        String paramName = getParamName(mandatoryKeyValuePair);
+        param.setName(paramName);
+        if 
(mandatoryKeyValuePair.getKey().toString().contains(COLLECTION_PARAMETER_YAML)) 
{
+            handleCollection(mandatoryKeyValuePair, required, param);
         } else {
-            param.setName(paramName);
             param.setType(mandatoryKeyValuePair.getValue().toString());
         }
+        if 
(mandatoryKeyValuePair.getKey().toString().contains(DEPRECATED_PARAMETER_YAML)) 
{
+            param.setDeprecated(true);
+        }
         return param;
+    }
+
+    private void handleCollection(Entry<Object, Object> mandatoryKeyValuePair, 
boolean required, Parameter param) {
+        param.setType(COLLECTION_PARAMETER_RSDL);
+        @SuppressWarnings("unchecked")
+        Map<Object, Object> listParams = (Map<Object, 
Object>)mandatoryKeyValuePair.getValue();
+        param.setParametersSet(new ParametersSet());
+        for (Entry<Object, Object> listParamData : listParams.entrySet()) {
+            Parameter listParam = createBodyParam(listParamData, required);
+            param.getParametersSet().getParameters().add(listParam);
+        }
+    }
+
+    private String getParamName(Entry<Object, Object> mandatoryKeyValuePair) {
+        String paramName = mandatoryKeyValuePair.getKey().toString();
+        if (paramName.contains("--")) {
+            paramName = paramName.substring(0, paramName.indexOf("--"));
+        }
+        return paramName;
     }
 
     private void addHeaderParams(DetailedLink link, Action action) {
@@ -442,6 +460,7 @@
                     ParamData paramData = (ParamData) value;
                     header.setValue(paramData.getValue());
                     header.setRequired(paramData.getRequired() == null ? 
Boolean.FALSE : paramData.getRequired());
+                    header.setDeprecated(paramData.getDeprecated());
                 }
 
                 link.getRequest().getHeaders().getHeaders().add(header);
@@ -463,6 +482,7 @@
                     param.setContext(urlParamData.getContext());
                     param.setValue(urlParamData.getValue());
                     param.setRequired(urlParamData.getRequired()==null ? 
Boolean.FALSE : urlParamData.getRequired());
+                    param.setDeprecated(urlParamData.getDeprecated());
                 }
                 ps.getParameters().add(param);
             }
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/rsdl/Signature.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/rsdl/Signature.java
index 655ccc2..5a87c22 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/rsdl/Signature.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/rsdl/Signature.java
@@ -6,7 +6,15 @@
 public class Signature implements Cloneable {
     private Map<Object, Object> mandatoryArguments = new HashMap<Object, 
Object>();
     private Map<Object, Object> optionalArguments = new HashMap<Object, 
Object>();
+    private Boolean deprecated;
 
+    public Boolean getDeprecated() {
+        return deprecated;
+    }
+
+    public void setDeprecated(Boolean deprecated) {
+        this.deprecated = deprecated;
+    }
     public Map<Object, Object> getMandatoryArguments() {
         return mandatoryArguments;
     }


-- 
To view, visit http://gerrit.ovirt.org/17960
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ia7f4ccf1dfa29894f8791909f2284496e7d8b27c
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Ori Liel <ol...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to