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