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 <[email protected]>
---
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 <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches