Juan Hernandez has submitted this change and it was merged.
Change subject: generator: Remember order of parameters
......................................................................
generator: Remember order of parameters
When a resource method supports multiple parameters (in the form of URL
parameters or headers) the code generator produces a method with
multiple parameters as well. For example, the host "activate" method
supports the "async" URL parameter and the "correlationId" parameter
because it can be invoked as follows:
POST /hosts/{host:id}/activate;async=true
Correlation-Id: 0123
<action/>
So the generated Java method for this resource method looks like this:
Action activate(Action action, Boolean async, String correlationId)
But in previous versions of the engine or the SDK some of these
parameters may be missing. In the particular case of the host "activate"
method, for example, the 3.5 version of the SDK didn't support the
"async" parameter (because it was missing from the RSDL metadata) so the
generated method looked like this:
Action activate(Action action, String correlationId)
Replacing the 3.5 signature with the new one causes a backwards
compatibility problem.
A previous change tried to solve this issue introducing a "memory" file
where the SDK remembers the signatures used in previous versions:
codegen: Sort and remember header parameters
https://gerrit.ovirt.org/39459
But this change only took into account header parameters. The "async"
parameter in the above example wasn't handled correctly.
To avoid this issue this patch changes the "memory" concept so that
instead of remembering the headers corresponding to a link it remembers
the names and order of the parameters of the generated methods.
The patch also resets the state of the memory to that of the latest 3.5
branch, so the next time that the SDK is regenerated it will be
backwards compatible with version 3.5.
Change-Id: I1c71aa8fb26f7f11c84b4b556245db36420c29c2
Bug-Url:
https://bugzilla.redhat.com/1231786
Signed-off-by: Juan Hernandez <juan.hernandez(a)redhat.com>
---
M generator/pom.xml
M generator/src/main/java/org/ovirt/engine/sdk/generator/Memory.java
A generator/src/main/java/org/ovirt/engine/sdk/generator/java/ParameterContext.java
A generator/src/main/java/org/ovirt/engine/sdk/generator/java/ParameterData.java
A generator/src/main/java/org/ovirt/engine/sdk/generator/java/ParameterType.java
M generator/src/main/java/org/ovirt/engine/sdk/generator/java/RsdlCodegen.java
M generator/src/main/java/org/ovirt/engine/sdk/generator/java/documentation/DocsGen.java
M
generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/AbstractOverloadableTemplate.java
M
generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/CollectionActionMethodTemplate.java
M
generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/CollectionAddMethodTemplate.java
M
generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/CollectionTemplate.java
M
generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/DeleteMethodTemplate.java
M
generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/DeleteMethodWithBodyTemplate.java
M
generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/HeaderBuilderParameterTemplate
M
generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/HeaderBuilderParameterTemplate.java
M
generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/ListMethodTemplate.java
D
generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/MethodParameterTemplate
D
generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/MethodParameterTemplate.java
M
generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/ResourceActionMethodTemplate.java
M
generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/ResourceTemplate.java
M
generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/SubCollectionAddMethodTemplate.java
M
generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/SubCollectionTemplate.java
M
generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/SubResourceTemplate.java
M
generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/UpdateMethodTemplate.java
M
generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/UrlBuilderParameterTemplate
M
generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/UrlBuilderParameterTemplate.java
M
generator/src/main/java/org/ovirt/engine/sdk/generator/java/utils/ExceptionsAwareComparator.java
M generator/src/main/java/org/ovirt/engine/sdk/generator/java/utils/LinkUtils.java
A generator/src/main/java/org/ovirt/engine/sdk/generator/java/utils/MethodUtils.java
M generator/src/main/java/org/ovirt/engine/sdk/generator/java/utils/StringUtils.java
M generator/src/main/resources/memory.properties
M sdk/README.md
32 files changed, 957 insertions(+), 989 deletions(-)
Approvals:
Martin Peřina: Looks good to me, but someone else must approve
Juan Hernandez: Verified; Looks good to me, approved; Passed CI tests
--
To view, visit
https://gerrit.ovirt.org/42452
To unsubscribe, visit
https://gerrit.ovirt.org/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I1c71aa8fb26f7f11c84b4b556245db36420c29c2
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine-sdk-java
Gerrit-Branch: master
Gerrit-Owner: Juan Hernandez <juan.hernandez(a)redhat.com>
Gerrit-Reviewer: Juan Hernandez <juan.hernandez(a)redhat.com>
Gerrit-Reviewer: Martin Peřina <mperina(a)redhat.com>
Gerrit-Reviewer: Ori Liel <oliel(a)redhat.com>
Gerrit-Reviewer: automation(a)ovirt.org