Juan Hernandez has uploaded a new change for review.

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.hernan...@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(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine-sdk-java 
refs/changes/52/42452/1

diff --git a/generator/pom.xml b/generator/pom.xml
index 7b01211..e61e33f 100644
--- a/generator/pom.xml
+++ b/generator/pom.xml
@@ -8,7 +8,7 @@
   <groupId>org.ovirt.engine.sdk</groupId>
   <artifactId>java-generator</artifactId>
   <packaging>jar</packaging>
-  <version>1.1.0-SNAPSHOT</version>
+  <version>1.1.1-SNAPSHOT</version>
 
   <description>This is the oVirt Engine Java SDK code generator</description>
   <url>http://www.ovirt.org/Java-sdk</url>
diff --git a/generator/src/main/java/org/ovirt/engine/sdk/generator/Memory.java 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/Memory.java
index 6112116..053f54c 100644
--- a/generator/src/main/java/org/ovirt/engine/sdk/generator/Memory.java
+++ b/generator/src/main/java/org/ovirt/engine/sdk/generator/Memory.java
@@ -16,8 +16,6 @@
 
 package org.ovirt.engine.sdk.generator;
 
-import org.ovirt.engine.sdk.entities.DetailedLink;
-
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
@@ -30,11 +28,9 @@
 import java.util.Properties;
 
 /**
- * This class stores information that the generator needs to remember. Thss 
information will be loaded when the
+ * This class stores information that the generator needs to remember. This 
information will be loaded when the
  * generator starts (usually from an {@code memory.properties} file), 
potentially updated during the execution, and
- * saved when the generator finishes. In addition to the typical methods to 
get and put properties this class also
- * provides some methods to simplify handling properties associated to 
instances of the {@link DetailedLink} class, as
- * that is what the generator will actually use.
+ * saved when the generator finishes.
  */
 public class Memory {
     /**
@@ -114,51 +110,14 @@
     }
 
     /**
-     * Returns the value associated with the given prefix and link. This is 
intended to store multiple items related
-     * to a link, for example, to store the order of header parameters for a 
link the file will contain the following
-     * properties:
+     * Returns the list of values associated with a given key.
      *
-     * <pre>
-     * link.vms.vm_id..get.headers=Expect Correlation-Id
-     * </pre>
-     *
-     * Then the caller will be able to retrieve this as follows:
-     *
-     * <pre>
-     * DetailedLink link = ...;
-     * Memory memory = Memory.getInstance();
-     * String headers = memory.get(link, "headers");
-     * </pre>
-     *
-     * @param link the link
-     * @param key the prefix
-     * @return value associated with the given link and key, or {@code null} 
if there is no such value
-     */
-    public String get(DetailedLink link, String key) {
-        return get(makeKey(link, key));
-    }
-
-    /**
-     * Associates a value to a given link and key.
-     *
-     * @param link the link
      * @param key the key
-     * @param value the new value
-     */
-    public void put(DetailedLink link, String key, String value) {
-        put(makeKey(link, key), value);
-    }
-
-    /**
-     * Returns the list of values associated with a given link and key.
-     *
-     * @param link the link
-     * @param key the key
-     * @return the list of values associated with the given link and key, or 
an empty list if no such key exists or
+     * @return the list of values associated with the given key, or an empty 
list if no such key exists or
      *     the list of values is empty, will never return {@code null}
      */
-    public List<String> getList(DetailedLink link, String key) {
-        String value = get(link, key);
+    public List<String> getList(String key) {
+        String value = get(key);
         if (value == null || value.isEmpty()) {
             return Collections.emptyList();
         }
@@ -168,29 +127,14 @@
     /**
      * Associates a list of values associated with the given link and key.
      *
-     * @param link the link
      * @param key the key
+     * @param values the list of values
      */
-    public void putList(DetailedLink link, String key, List<String> values) {
+    public void putList(String key, List<String> values) {
         if (values == null) {
             values = Collections.emptyList();
         }
         String value = String.join(" ", values);
-        put(link, key, value);
-    }
-
-    /**
-     * Generates a unique key for a link and a non-unique key.
-     *
-     * @param link the link
-     * @param key the key
-     * @returns the unique key
-     */
-    private String makeKey(DetailedLink link, String key) {
-        String href = link.getHref();
-        href = href.replaceAll("/", ".");
-        href = href.replaceAll("[{}]", "");
-        href = href.replaceAll(":", "_");
-        return "link." + href + "." + link.getRel() + "." + key;
+        put(key, value);
     }
 }
diff --git 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/ParameterContext.java
 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/ParameterContext.java
new file mode 100644
index 0000000..393b5fa
--- /dev/null
+++ 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/ParameterContext.java
@@ -0,0 +1,25 @@
+/*
+Copyright (c) 2012 Red Hat, Inc.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package org.ovirt.engine.sdk.generator.java;
+
+/**
+ * This enum is used to specify if URL parameter is included in the query or 
is a matrix parameter.
+ */
+public enum ParameterContext {
+    QUERY,
+    MATRIX,
+}
diff --git 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/ParameterData.java
 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/ParameterData.java
new file mode 100644
index 0000000..648aeca
--- /dev/null
+++ 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/ParameterData.java
@@ -0,0 +1,129 @@
+/*
+Copyright (c) 2012 Red Hat, Inc.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package org.ovirt.engine.sdk.generator.java;
+
+/**
+ * This class stores data associated to a method parameter, including where it 
comes from (URL or HTTP header), its
+ * name, and the Java type and name.
+ */
+public class ParameterData {
+    private String name;
+    private ParameterType type;
+    private ParameterContext context;
+    private boolean required;
+    private String values;
+    private String javaType;
+    private String javaName;
+
+    /**
+     * Returns the name of the URL parameter or HTTP header where this 
parameter is included.
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * Sets the name of the URL parameter or HTTP header where this parameter 
is included.
+     */
+    public void setName(String newName) {
+        name = newName;
+    }
+
+    /**
+     * Returns the type of this parameter.
+     */
+    public ParameterType getType() {
+        return type;
+    }
+
+    /**
+     * Sets the type of this parameter.
+     */
+    public void setType(ParameterType newType) {
+        type = newType;
+    }
+
+    /**
+     * Returns the context (query or matrix) of this parameter.
+     */
+    public ParameterContext getContext() {
+        return context;
+    }
+
+    /**
+     * Sets the context (query or matrix) of this parameter.
+     */
+    public void setContext(ParameterContext newContext) {
+        context = newContext;
+    }
+
+    /**
+     * Returns {@code true} if this parameter is required, {@code false} 
otherwise.
+     */
+    public boolean isRequired() {
+        return required;
+    }
+
+    /**
+     * Sets the flag that indicates if this parameter is required.
+     */
+    public void setRequired(boolean newRequired) {
+        required = newRequired;
+    }
+
+    /**
+     * Returns the allowed values of this parameter.
+     */
+    public String getValues() {
+        return values;
+    }
+
+    /**
+     * Sets the allowed valeus of this parameter.
+     */
+    public void setValues(String newValues) {
+        values = newValues;
+    }
+
+    /**
+     * Returns the Java type of the parameter.
+     */
+    public String getJavaType() {
+        return javaType;
+    }
+
+    /**
+     * Sets the Java type of the parameter.
+     */
+    public void setJavaType(String newType) {
+        javaType = newType;
+    }
+
+    /**
+     * Returns the Java name of the parameter.
+     */
+    public String getJavaName() {
+        return javaName;
+    }
+
+    /**
+     * Sets the Java name of the parameter.
+     */
+    public void setJavaName(String newName) {
+        javaName = newName;
+    }
+}
diff --git 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/ParameterType.java
 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/ParameterType.java
new file mode 100644
index 0000000..f51d27e
--- /dev/null
+++ 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/ParameterType.java
@@ -0,0 +1,25 @@
+/*
+Copyright (c) 2012 Red Hat, Inc.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package org.ovirt.engine.sdk.generator.java;
+
+/**
+ * This enum is used to specify if a parameter is part of the URL or an HTTP 
header.
+ */
+public enum ParameterType {
+    URL,
+    HEADER
+}
diff --git 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/RsdlCodegen.java 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/RsdlCodegen.java
index 8fe4fbf..dce4689 100644
--- 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/RsdlCodegen.java
+++ 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/RsdlCodegen.java
@@ -74,46 +74,43 @@
     }
 
     private void generateCode(Tree<Location> tree) {
+        String className = BrokerRules.getBrokerType(tree);
+        String classCode = null;
         if (isEntity(tree)) {
             if (isSubEntity(tree)) {
-                addSubResource(tree);
+                classCode = addSubResource(className, tree);
             }
             else {
-                addResource(tree);
+                classCode = addResource(className, tree);
             }
         }
         else if (isCollection(tree)) {
             if (isSubCollection(tree)) {
-                addSubCollection(tree);
+                classCode = addSubCollection(className, tree);
             }
             else {
-                addCollection(tree);
+                classCode = addCollection(className, tree);
             }
+        }
+        if (classCode != null) {
+            code.put(className, classCode);
         }
     }
 
-    private void addResource(Tree<Location> entityTree) {
-        String className = BrokerRules.getBrokerType(entityTree);
-        String classCode = new ResourceTemplate().evaluate(entityTree);
-        code.put(className, classCode);
+    private String addResource(String className, Tree<Location> entityTree) {
+        return new ResourceTemplate().evaluate(className, entityTree);
     }
 
-    private void addSubResource(Tree<Location> entityTree) {
-        String className = BrokerRules.getBrokerType(entityTree);
-        String classCode = new SubResourceTemplate().evaluate(entityTree);
-        code.put(className, classCode);
+    private String addSubResource(String className, Tree<Location> entityTree) 
{
+        return new SubResourceTemplate().evaluate(className, entityTree);
     }
 
-    private void addCollection(Tree<Location> collectionTree) {
-        String className = BrokerRules.getBrokerType(collectionTree);
-        String classCode = new CollectionTemplate().evaluate(collectionTree);
-        code.put(className, classCode);
+    private String addCollection(String className, Tree<Location> 
collectionTree) {
+        return new CollectionTemplate().evaluate(className, collectionTree);
     }
 
-    private void addSubCollection(Tree<Location> collectionTree) {
-        String className = BrokerRules.getBrokerType(collectionTree);
-        String classCode = new 
SubCollectionTemplate().evaluate(collectionTree);
-        code.put(className, classCode);
+    private String addSubCollection(String className, Tree<Location> 
collectionTree) {
+        return new SubCollectionTemplate().evaluate(className, collectionTree);
     }
 
     private Map<String, List<String>> getPublicAccessors() {
diff --git 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/documentation/DocsGen.java
 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/documentation/DocsGen.java
index e29ec0c..bae2e78 100644
--- 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/documentation/DocsGen.java
+++ 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/documentation/DocsGen.java
@@ -16,8 +16,10 @@
 
 package org.ovirt.engine.sdk.generator.java.documentation;
 
+import java.util.ArrayList;
 import java.util.List;
 
+import org.ovirt.engine.sdk.generator.java.ParameterData;
 import org.ovirt.engine.sdk.generator.java.utils.FormatUtils;
 import org.ovirt.engine.sdk.generator.java.utils.StringUtils;
 import org.ovirt.engine.sdk.generator.java.utils.UrlUtils;
@@ -25,6 +27,8 @@
 import org.ovirt.engine.sdk.entities.Header;
 import org.ovirt.engine.sdk.entities.Parameter;
 import org.ovirt.engine.sdk.entities.ParametersSet;
+
+import static java.util.stream.Collectors.joining;
 
 /**
  * Provides documentation related codegen capabilities
@@ -131,8 +135,55 @@
         return buffer.toString();
     }
 
+
     /**
-     * Generates the docuemntation for the URL parameters available in the 
given link.
+     * Generates the documentation for the given parameters.
+     *
+     * @param parameters the list of parameters
+     * @result a list containing the lines of the documentation
+     */
+    public static String generateParameters(List<ParameterData> parameters) {
+        List<String> lines = generateParameterLines(parameters);
+        if (lines.isEmpty()) {
+            return PREFIX;
+        }
+        return String.join(NEW_LINE, lines);
+    }
+
+    /**
+     * Generates the documentation for the given parameters.
+     *
+     * @param parameters the list of parameters
+     * @result a list containing the lines of the documentation
+     */
+    private static List<String> generateParameterLines(List<ParameterData> 
parameters) {
+        List<String> lines = new ArrayList<>();
+        parameters.forEach(x -> lines.addAll(generateParameterLines(x)));
+        return lines;
+    }
+
+    /**
+     * Generates the documentation for the given parameter.
+     *
+     * @param parameter the parameter
+     * @return a list containing the lines of the documentation
+     */
+    private static List<String> generateParameterLines(ParameterData 
parameter) {
+        List<String> lines = new ArrayList<>();
+        lines.add(PARAM  + parameter.getJavaName());
+        lines.add(PREFIX + PARAM_DETAILS_OFFSET + PRE_OPEN);
+        if (parameter.isRequired()) {
+            lines.add(PREFIX + PARAM_DETAILS_OFFSET + parameter.getValues());
+        }
+        else {
+            lines.add(PREFIX + PARAM_DETAILS_OFFSET + BREACKS_OPEN + 
parameter.getValues() + BREACKS_CLOSE);
+        }
+        lines.add(PREFIX + PARAM_DETAILS_OFFSET + PRE_CLOSE);
+        return lines;
+    }
+
+    /**
+     * Generates the documentation for the URL parameters available in the 
given link.
      */
     public static String generateUrlParameters(DetailedLink detailedLink) {
         StringBuffer docParams = new StringBuffer();
diff --git 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/AbstractOverloadableTemplate.java
 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/AbstractOverloadableTemplate.java
index 7ec8701..bdf230e 100644
--- 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/AbstractOverloadableTemplate.java
+++ 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/AbstractOverloadableTemplate.java
@@ -16,21 +16,16 @@
 
 package org.ovirt.engine.sdk.generator.java.templates;
 
-import java.util.ArrayList;
 import java.util.List;
 
-import org.ovirt.engine.sdk.generator.java.utils.FormatUtils;
-import org.ovirt.engine.sdk.generator.java.utils.TypeUtils;
-import org.ovirt.engine.sdk.generator.java.utils.UrlUtils;
+import org.ovirt.engine.sdk.generator.java.ParameterData;
+import org.ovirt.engine.sdk.generator.java.ParameterType;
 import org.ovirt.engine.sdk.generator.templates.AbstractTemplate;
-import org.ovirt.engine.sdk.entities.Header;
-import org.ovirt.engine.sdk.entities.Parameter;
 
 /**
  * Abstract Overloadable-Template class
  */
 public abstract class AbstractOverloadableTemplate extends AbstractTemplate {
-    private static final String XSD_STRING_TYPE = "xs:string";
     protected static final String DOC_SEPARATOR = "     *";
 
     /**
@@ -39,73 +34,31 @@
      *
      * @param parameters the list of parameters to add
      */
-    protected String getUrlBuilderCode(List<Parameter> parameters) {
+    protected String getUrlBuilderCode(List<ParameterData> parameters) {
         StringBuilder buffer = new StringBuilder();
-        for (Parameter parameter : parameters) {
-            UrlBuilderParameterTemplate template = new 
UrlBuilderParameterTemplate();
-            buffer.append("\n");
-            buffer.append(
-                template.evaluate(
-                    parameter.getName(),
-                    UrlUtils.toQueryParam(parameter.getName()),
-                    UrlUtils.toParamType(parameter.getContext())
-                )
-            );
+        for (ParameterData parameter : parameters) {
+            if (parameter.getType() == ParameterType.URL) {
+                UrlBuilderParameterTemplate template = new 
UrlBuilderParameterTemplate();
+                buffer.append("\n");
+                buffer.append(template.evaluate(parameter));
+            }
         }
         return buffer.toString();
     }
 
     /**
-     * Get a list of the method parameter declarations that corresponding to 
the given URL parameters.
+     * Generates the code that adds to the request the given header parameters.
      *
-     * @param params a list containing the URL parameters
+     * @param parameters the list of header parameters to add
      */
-    protected List<String> getUrlParameterDeclarations(List<Parameter> params) 
{
-        List<String> paramDecls = new ArrayList<>();
-        for (Parameter param : params) {
-            String paramName = UrlUtils.toQueryParam(param.getName());
-            String paramType = TypeUtils.toJava(param.getType());
-            MethodParameterTemplate paramDeclTemplate = new 
MethodParameterTemplate();
-            String paramDecl = paramDeclTemplate.evaluate(paramType, 
paramName);
-            paramDecls.add(paramDecl);
-        }
-        return paramDecls;
-    }
-
-    /**
-     * Get a list of the method parameter declarations that corresponding to 
the given headers.
-     *
-     * @param headers a list containing the headers
-     */
-    protected List<String> getHeaderDeclarations(List<Header> headers) {
-        List<String> paramDecls = new ArrayList<>();
-        for (Header header : headers) {
-            String paramName = FormatUtils.toJava(header.getName());
-            String paramType = TypeUtils.toJava(XSD_STRING_TYPE);
-            MethodParameterTemplate paramDeclTemplate = new 
MethodParameterTemplate();
-            String paramDecl = paramDeclTemplate.evaluate(paramType, 
paramName);
-            paramDecls.add(paramDecl);
-        }
-        return paramDecls;
-    }
-
-    /**
-     * Appends header params
-     *
-     * @param headers the list of headers
-     */
-    protected String getHeaderBuilderCode(List<Header> headers) {
+    protected String getHeaderBuilderCode(List<ParameterData> parameters) {
         StringBuilder buffer = new StringBuilder();
-        for (Header header : headers) {
-            String headerName = header.getName();
-            HeaderBuilderParameterTemplate template = new 
HeaderBuilderParameterTemplate();
-            buffer.append("\n");
-            buffer.append(
-                template.evaluate(
-                    headerName,
-                    FormatUtils.toJava(headerName)
-                )
-            );
+        for (ParameterData parameter : parameters) {
+            if (parameter.getType() == ParameterType.HEADER) {
+                HeaderBuilderParameterTemplate template = new 
HeaderBuilderParameterTemplate();
+                buffer.append("\n");
+                buffer.append(template.evaluate(parameter));
+            }
         }
         return buffer.toString();
     }
diff --git 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/CollectionActionMethodTemplate.java
 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/CollectionActionMethodTemplate.java
index c0fc972..e69e19d 100644
--- 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/CollectionActionMethodTemplate.java
+++ 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/CollectionActionMethodTemplate.java
@@ -16,39 +16,34 @@
 
 package org.ovirt.engine.sdk.generator.java.templates;
 
-import java.util.ArrayList;
 import java.util.List;
 
 import org.ovirt.engine.sdk.generator.java.documentation.DocsGen;
 import org.ovirt.engine.sdk.generator.BrokerRules;
 import org.ovirt.engine.sdk.generator.Location;
 import org.ovirt.engine.sdk.generator.LocationRules;
+import org.ovirt.engine.sdk.generator.java.ParameterData;
 import org.ovirt.engine.sdk.generator.java.utils.LinkUtils;
+import org.ovirt.engine.sdk.generator.java.utils.MethodUtils;
 import org.ovirt.engine.sdk.generator.java.utils.StringUtils;
 import org.ovirt.engine.sdk.generator.utils.Tree;
 import org.ovirt.engine.sdk.entities.DetailedLink;
-import org.ovirt.engine.sdk.entities.Header;
-import org.ovirt.engine.sdk.entities.Parameter;
 
 public class CollectionActionMethodTemplate extends 
AbstractOverloadableTemplate {
     private String evaluate(
-            List<Parameter> urlParameters,
-            List<Header> headers,
+            List<ParameterData> parameters,
             String methodName,
             String actionName,
             String docParams) {
-        // Generate the parameter declarations, for both URL parameters and 
headers:
-        List<String> paramDecls = new ArrayList<>();
-        paramDecls.addAll(getUrlParameterDeclarations(urlParameters));
-        paramDecls.addAll(getHeaderDeclarations(headers));
-        String paramList = "";
-        if (!paramDecls.isEmpty()) {
-            paramList = ", " + StringUtils.formatList(paramDecls, ", ");
-        }
-
         // Generate the code that populates the list of URL parameters to send 
tot the server:
-        String urlBuilderCode = getUrlBuilderCode(urlParameters);
-        String headerBuilderCode = getHeaderBuilderCode(headers);
+        String urlBuilderCode = getUrlBuilderCode(parameters);
+        String headerBuilderCode = getHeaderBuilderCode(parameters);
+
+        // Format the parameter list, adding a comma to separate from the 
action parameter if needed:
+        String paramList = MethodUtils.formatParameters(parameters);
+        if (!paramList.isEmpty()) {
+            paramList = ", " + paramList;
+        }
 
         // Generate the method:
         set("methodName", methodName);
@@ -61,7 +56,7 @@
         return evaluate();
     }
 
-    public String evaluate(Tree<Location> actionTree) {
+    public String evaluate(String className, Tree<Location> actionTree) {
         DetailedLink dl = actionTree.get().getLinks().get(0);
 
         String docParams = DocsGen.generateBodyParams(dl);
@@ -71,55 +66,24 @@
 
         StringBuilder buffer = new StringBuilder();
 
-        // Generate URL and header parameters:
-        List<Parameter> urlParameters = LinkUtils.getUrlParameters(dl);
-        List<Header> headers = LinkUtils.getHeaders(dl);
+        // Get the list of parameters:
+        List<ParameterData> parameters = LinkUtils.getParameters(dl);
 
-        // Add default method, without URL or header parameters:
-        buffer.append(
-            evaluate(
-                    new ArrayList<>(0),
-                    new ArrayList<>(0),
-                    methodName,
-                    actionName,
-                    docParams
-            )
-        );
+        // Reorder the parameters declarations for backwards compatibility:
+        parameters = MethodUtils.reorderParameters(className, methodName, 
parameters);
 
-        // Add method overload containing all the URL parameters but none of 
the header parameters:
-        if (!urlParameters.isEmpty()) {
+        // Generate a version of the method for each prefix of the list of 
parameter declarations, including the
+        // empty prefix and the complete list:
+        for (int i = 0; i <= parameters.size(); i++) {
+            List<ParameterData> prefix = parameters.subList(0, i);
             buffer.append(
                 evaluate(
-                        urlParameters,
-                        new ArrayList<>(0),
-                        methodName,
-                        actionName,
-                        StringUtils.combine(
-                                docParams,
-                                DocsGen.generateUrlParameters(dl)
-                        )
+                    prefix,
+                    methodName,
+                    actionName,
+                    StringUtils.combine(docParams, 
DocsGen.generateParameters(prefix))
                 )
             );
-        }
-
-        // Add method overloads containg all the URL parameters and all the 
sublists of the header parameters:
-        if (!headers.isEmpty()) {
-            for (int i = 1; i <= headers.size(); i++) {
-                List<Header> headerSublist = headers.subList(0, i);
-                buffer.append(
-                    evaluate(
-                            urlParameters,
-                            headerSublist,
-                            methodName,
-                            actionName,
-                            StringUtils.combine(
-                                    docParams,
-                                    DocsGen.generateHeaders(headerSublist),
-                                    DocsGen.generateUrlParameters(dl)
-                            )
-                    )
-                );
-            }
         }
 
         return buffer.toString();
diff --git 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/CollectionAddMethodTemplate.java
 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/CollectionAddMethodTemplate.java
index 92e4990..5ceb452 100644
--- 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/CollectionAddMethodTemplate.java
+++ 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/CollectionAddMethodTemplate.java
@@ -16,7 +16,6 @@
 
 package org.ovirt.engine.sdk.generator.java.templates;
 
-import java.util.ArrayList;
 import java.util.List;
 
 import org.ovirt.engine.sdk.generator.java.documentation.DocsGen;
@@ -24,33 +23,28 @@
 import org.ovirt.engine.sdk.generator.Location;
 import org.ovirt.engine.sdk.generator.LocationRules;
 import org.ovirt.engine.sdk.generator.SchemaRules;
+import org.ovirt.engine.sdk.generator.java.ParameterData;
 import org.ovirt.engine.sdk.generator.java.utils.LinkUtils;
+import org.ovirt.engine.sdk.generator.java.utils.MethodUtils;
 import org.ovirt.engine.sdk.generator.java.utils.StringUtils;
 import org.ovirt.engine.sdk.generator.utils.Tree;
 import org.ovirt.engine.sdk.entities.DetailedLink;
-import org.ovirt.engine.sdk.entities.Header;
-import org.ovirt.engine.sdk.entities.Parameter;
 
 public class CollectionAddMethodTemplate extends AbstractOverloadableTemplate {
     private String evaluate(
-            List<Parameter> urlParameters,
-            List<Header> headers,
+            List<ParameterData> parameters,
             String decoratorName,
             String publicEntityName,
             String docParams) {
-
-        // Generate the parameter declarations, for both URL parameters and 
headers:
-        List<String> paramDecls = new ArrayList<>();
-        paramDecls.addAll(getUrlParameterDeclarations(urlParameters));
-        paramDecls.addAll(getHeaderDeclarations(headers));
-        String paramList = "";
-        if (!paramDecls.isEmpty()) {
-            paramList = ", " + StringUtils.formatList(paramDecls, ", ");
-        }
-
         // Generate the code that populates the list of URL parameters to send 
tot the server:
-        String urlBuilderCode = getUrlBuilderCode(urlParameters);
-        String headerBuilderCode = getHeaderBuilderCode(headers);
+        String urlBuilderCode = getUrlBuilderCode(parameters);
+        String headerBuilderCode = getHeaderBuilderCode(parameters);
+
+        // Format the parameter list, adding a comma to separate from the 
added entity parameter if needed:
+        String paramList = MethodUtils.formatParameters(parameters);
+        if (!paramList.isEmpty()) {
+            paramList = ", " + paramList;
+        }
 
         // Generate the method:
         set("decoratorName", decoratorName);
@@ -63,7 +57,7 @@
         return evaluate();
     }
 
-    public String evaluate(Tree<Location> collectionTree, DetailedLink dl) {
+    public String evaluate(String className, Tree<Location> collectionTree, 
DetailedLink dl) {
         Tree<Location> entityTree = 
collectionTree.getChild(LocationRules::isEntity);
 
         String brokerType = BrokerRules.getBrokerType(entityTree);
@@ -73,55 +67,24 @@
 
         StringBuilder buffer = new StringBuilder();
 
-        // Generate URL and header parameters:
-        List<Parameter> urlParameters = LinkUtils.getUrlParameters(dl);
-        List<Header> headers = LinkUtils.getHeaders(dl);
+        // Get the list of parameters:
+        List<ParameterData> parameters = LinkUtils.getParameters(dl);
 
-        // Add default method, without URL or header parameters:
-        buffer.append(
-            evaluate(
-                    new ArrayList<>(0),
-                    new ArrayList<>(0),
-                    brokerType,
-                    entityType,
-                    docParams
-            )
-        );
+        // Reorder the parameters declarations for backwards compatibility:
+        parameters = MethodUtils.reorderParameters(className, "add", 
parameters);
 
-        // Add method overload containing all the URL parameters but none of 
the header parameters:
-        if (!urlParameters.isEmpty()) {
+        // Generate a version of the method for each prefix of the list of 
parameter declarations, including the
+        // empty prefix and the complete list:
+        for (int i = 0; i <= parameters.size(); i++) {
+            List<ParameterData> prefix = parameters.subList(0, i);
             buffer.append(
                 evaluate(
-                        urlParameters,
-                        new ArrayList<>(0),
-                        brokerType,
-                        entityType,
-                        StringUtils.combine(
-                                docParams,
-                                DocsGen.generateUrlParameters(dl)
-                        )
+                    prefix,
+                    brokerType,
+                    entityType,
+                    StringUtils.combine(docParams, 
DocsGen.generateParameters(prefix))
                 )
             );
-        }
-
-        // Add method overloads containg all the URL parameters and all the 
sublists of the header parameters:
-        if (!headers.isEmpty()) {
-            for (int i = 1; i <= headers.size(); i++) {
-                List<Header> headerSublist = headers.subList(0, i);
-                buffer.append(
-                    evaluate(
-                            urlParameters,
-                            headerSublist,
-                            brokerType,
-                            entityType,
-                            StringUtils.combine(
-                                    docParams,
-                                    DocsGen.generateHeaders(headerSublist),
-                                    DocsGen.generateUrlParameters(dl)
-                            )
-                    )
-                );
-            }
         }
 
         return buffer.toString();
diff --git 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/CollectionTemplate.java
 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/CollectionTemplate.java
index cf37739..296f03a 100644
--- 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/CollectionTemplate.java
+++ 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/CollectionTemplate.java
@@ -30,7 +30,7 @@
 import static 
org.ovirt.engine.sdk.generator.java.utils.StringUtils.concatenateValues;
 
 public class CollectionTemplate extends AbstractTemplate {
-    public String evaluate(Tree<Location> collectionTree) {
+    public String evaluate(String className, Tree<Location> collectionTree) {
         Tree<Location> entityTree = 
collectionTree.getChild(LocationRules::isEntity);
 
         String collectionBrokerType = 
BrokerRules.getBrokerType(collectionTree);
@@ -48,11 +48,11 @@
             String methodName = methodLink.getRel();
             switch (methodName) {
             case "add":
-                String addMethod = new 
CollectionAddMethodTemplate().evaluate(collectionTree, methodLink);
+                String addMethod = new 
CollectionAddMethodTemplate().evaluate(className, collectionTree, methodLink);
                 methodsMap.put(methodName, addMethod);
                 break;
             case "get":
-                String listMethod = new 
CollectionListMethodTemplate().evaluate(collectionTree, methodLink);
+                String listMethod = new 
CollectionListMethodTemplate().evaluate(className, collectionTree, methodLink);
                 methodsMap.put(methodName, listMethod);
                 break;
             }
diff --git 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/DeleteMethodTemplate.java
 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/DeleteMethodTemplate.java
index 91ab547..539706c 100644
--- 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/DeleteMethodTemplate.java
+++ 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/DeleteMethodTemplate.java
@@ -16,91 +16,52 @@
 
 package org.ovirt.engine.sdk.generator.java.templates;
 
-import java.util.ArrayList;
 import java.util.List;
 
-import org.ovirt.engine.sdk.generator.java.documentation.DocsGen;
 import org.ovirt.engine.sdk.generator.Location;
+import org.ovirt.engine.sdk.generator.java.ParameterData;
+import org.ovirt.engine.sdk.generator.java.documentation.DocsGen;
 import org.ovirt.engine.sdk.generator.java.utils.LinkUtils;
-import org.ovirt.engine.sdk.generator.java.utils.StringUtils;
+import org.ovirt.engine.sdk.generator.java.utils.MethodUtils;
 import org.ovirt.engine.sdk.generator.utils.Tree;
 import org.ovirt.engine.sdk.entities.DetailedLink;
-import org.ovirt.engine.sdk.entities.Header;
-import org.ovirt.engine.sdk.entities.Parameter;
 
 public class DeleteMethodTemplate extends AbstractOverloadableTemplate {
-    private String evaluate(List<Parameter> urlParameters, List<Header> 
headers, String docParams) {
-        // Generate the parameter declarations, for both URL parameters and 
headers:
-        List<String> paramDecls = new ArrayList<>();
-        paramDecls.addAll(getUrlParameterDeclarations(urlParameters));
-        paramDecls.addAll(getHeaderDeclarations(headers));
-        String paramList = StringUtils.formatList(paramDecls, ", ");
-
+    private String evaluate(List<ParameterData> parameters) {
         // Generate the code that populates the list of URL parameters to send 
tot the server:
-        String urlBuilderCode = getUrlBuilderCode(urlParameters);
-        String headerBuilderCode = getHeaderBuilderCode(headers);
+        String urlBuilderCode = getUrlBuilderCode(parameters);
+        String headerBuilderCode = getHeaderBuilderCode(parameters);
 
         // Generate the method:
-        set("docParams", docParams);
-        set("paramList", paramList);
+        set("docParams", DocsGen.generateParameters(parameters));
+        set("paramList", MethodUtils.formatParameters(parameters));
         set("headersToBuild", headerBuilderCode);
         set("urlParamsToBuild", urlBuilderCode);
 
         return evaluate();
     }
 
-    public String evaluate(Tree<Location> entityTree, DetailedLink dl) {
+    public String evaluate(String className, Tree<Location> entityTree, 
DetailedLink dl) {
         StringBuilder buffer = new StringBuilder();
 
         if (dl.isSetRequest() && dl.getRequest().isSetBody() && 
dl.getRequest().getBody().isSetType() && !
                 dl.getRequest().getBody().getType().equals("") && 
dl.getRequest().getBody().isRequired() != null
                 && 
dl.getRequest().getBody().isRequired().equals(Boolean.TRUE)) {
             // add delete() with body overload (body is mandatory)
-            buffer.append(new DeleteMethodWithBodyTemplate().evaluate(dl));
-        } else {
-            // Generate URL and header parameters:
-            List<Parameter> urlParameters = LinkUtils.getUrlParameters(dl);
-            List<Header> headers = LinkUtils.getHeaders(dl);
+            buffer.append(new 
DeleteMethodWithBodyTemplate().evaluate(className, dl));
+        }
+        else {
+            // Get the list of parameters:
+            List<ParameterData> parameters = LinkUtils.getParameters(dl);
 
-            // Add default method, without URL or header parameters:
-            buffer.append(
-                evaluate(
-                    new ArrayList<>(0),
-                    new ArrayList<>(0),
-                    DOC_SEPARATOR
-                )
-            );
+            // Reorder the parameters declarations for backwards compatibility:
+            parameters = MethodUtils.reorderParameters(className, "delete", 
parameters);
 
-            // Add method overload containing all the URL parameters but none 
of the header parameters:
-            if (!urlParameters.isEmpty()) {
-                buffer.append(
-                    evaluate(
-                        urlParameters,
-                        new ArrayList<>(0),
-                        StringUtils.combine(
-                            DOC_SEPARATOR,
-                            DocsGen.generateUrlParameters(dl)
-                        )
-                    )
-                );
-            }
-
-            // Add method overloads containg all the URL parameters and all 
the sublists of the header parameters:
-            if (!headers.isEmpty()) {
-                for (int i = 1; i <= headers.size(); i++) {
-                    List<Header> headerSublist = headers.subList(0, i);
-                    buffer.append(
-                        evaluate(
-                            urlParameters,
-                            headerSublist,
-                            StringUtils.combine(
-                                DOC_SEPARATOR,
-                                DocsGen.generateHeaders(headerSublist),
-                                DocsGen.generateUrlParameters(dl)
-                            )
-                        )
-                    );
-                }
+            // Generate a version of the method for each prefix of the list of 
parameter declarations, including the
+            // empty prefix and the complete list:
+            for (int i = 0; i <= parameters.size(); i++) {
+                List<ParameterData> prefix = parameters.subList(0, i);
+                buffer.append(evaluate(prefix));
             }
 
             // add delete() with body overload (body is optional)
@@ -110,7 +71,7 @@
                     && 
!dl.getRequest().getBody().isRequired().equals(Boolean.TRUE))
                     ||
                     dl.getRequest().getBody().isRequired() == null)) {
-                buffer.append(new DeleteMethodWithBodyTemplate().evaluate(dl));
+                buffer.append(new 
DeleteMethodWithBodyTemplate().evaluate(className, dl));
             }
         }
 
diff --git 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/DeleteMethodWithBodyTemplate.java
 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/DeleteMethodWithBodyTemplate.java
index f15643a..8003199 100644
--- 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/DeleteMethodWithBodyTemplate.java
+++ 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/DeleteMethodWithBodyTemplate.java
@@ -16,30 +16,26 @@
 
 package org.ovirt.engine.sdk.generator.java.templates;
 
-import java.util.ArrayList;
 import java.util.List;
 
 import org.ovirt.engine.sdk.generator.java.documentation.DocsGen;
+import org.ovirt.engine.sdk.generator.java.ParameterData;
 import org.ovirt.engine.sdk.generator.java.utils.LinkUtils;
-import org.ovirt.engine.sdk.generator.java.utils.StringUtils;
+import org.ovirt.engine.sdk.generator.java.utils.MethodUtils;
 import org.ovirt.engine.sdk.entities.DetailedLink;
-import org.ovirt.engine.sdk.entities.Header;
-import org.ovirt.engine.sdk.entities.Parameter;
+import org.ovirt.engine.sdk.generator.java.utils.StringUtils;
 
 public class DeleteMethodWithBodyTemplate extends AbstractOverloadableTemplate 
{
-    private String evaluate(List<Parameter> urlParameters, List<Header> 
headers, String deleteBody, String docParams) {
-        // Generate the parameter declarations, for both URL parameters and 
headers:
-        List<String> paramDecls = new ArrayList<>();
-        paramDecls.addAll(getUrlParameterDeclarations(urlParameters));
-        paramDecls.addAll(getHeaderDeclarations(headers));
-        String paramList = "";
-        if (!paramDecls.isEmpty()) {
-            paramList = ", " + StringUtils.formatList(paramDecls, ", ");
-        }
-
+    private String evaluate(List<ParameterData> parameters, String deleteBody, 
String docParams) {
         // Generate the code that populates the list of URL parameters to send 
tot the server:
-        String urlBuilderCode = getUrlBuilderCode(urlParameters);
-        String headerBuilderCode = getHeaderBuilderCode(headers);
+        String urlBuilderCode = getUrlBuilderCode(parameters);
+        String headerBuilderCode = getHeaderBuilderCode(parameters);
+
+        // Format the parameter list, adding a comma to separate from the 
action parameter if needed:
+        String paramList = MethodUtils.formatParameters(parameters);
+        if (!paramList.isEmpty()) {
+            paramList = ", " + paramList;
+        }
 
         // Generate the method:
         set("deleteBody", deleteBody);
@@ -51,47 +47,28 @@
         return evaluate();
     }
 
-    public String evaluate(DetailedLink dl) {
-        String docParams = DocsGen.generateBodyParams(dl);
-
+    public String evaluate(String className, DetailedLink dl) {
         StringBuilder buffer = new StringBuilder();
 
-        // Generate URL and header parameters:
-        List<Parameter> urlParameters = LinkUtils.getUrlParameters(dl);
-        List<Header> headers = LinkUtils.getHeaders(dl);
+        String docParams = DocsGen.generateBodyParams(dl);
 
-        // Add method overload containing all the URL parameters but none of 
the header parameters:
-        if (!urlParameters.isEmpty()) {
+        // Get the list of parameters:
+        List<ParameterData> parameters = LinkUtils.getParameters(dl);
+
+        // Reorder the parameters declarations for backwards compatibility:
+        parameters = MethodUtils.reorderParameters(className, "delete", 
parameters);
+
+        // Generate a version of the method for each prefix of the list of 
parameter declarations, including the
+        // empty prefix and the complete list:
+        for (int i = 0; i <= parameters.size(); i++) {
+            List<ParameterData> prefix = parameters.subList(0, i);
             buffer.append(
                 evaluate(
-                        urlParameters,
-                        new ArrayList<>(0),
-                        dl.getRequest().getBody().getType(),
-                        StringUtils.combine(
-                                docParams,
-                                DocsGen.generateUrlParameters(dl)
-                        )
+                    prefix,
+                    dl.getRequest().getBody().getType(),
+                    StringUtils.combine(docParams, 
DocsGen.generateParameters(prefix))
                 )
             );
-        }
-
-        // Add method overloads containg all the URL parameters and all the 
sublists of the header parameters:
-        if (!headers.isEmpty()) {
-            for (int i = 1; i <= headers.size(); i++) {
-                List<Header> headerSublist = headers.subList(0, i);
-                buffer.append(
-                    evaluate(
-                            urlParameters,
-                            headerSublist,
-                            dl.getRequest().getBody().getType(),
-                            StringUtils.combine(
-                                    docParams,
-                                    DocsGen.generateHeaders(headerSublist),
-                                    DocsGen.generateUrlParameters(dl)
-                            )
-                    )
-                );
-            }
         }
 
         return buffer.toString();
diff --git 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/HeaderBuilderParameterTemplate
 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/HeaderBuilderParameterTemplate
index fc41266..fc92c86 100644
--- 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/HeaderBuilderParameterTemplate
+++ 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/HeaderBuilderParameterTemplate
@@ -1,3 +1,3 @@
-        if ($headerParamName$ != null) {
-            headersBuilder.add("$realUrlParamName$", $headerParamName$);
+        if ($javaName$ != null) {
+            headersBuilder.add("$headerName$", $javaName$);
         }
\ No newline at end of file
diff --git 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/HeaderBuilderParameterTemplate.java
 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/HeaderBuilderParameterTemplate.java
index f4e0885..8c865da 100644
--- 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/HeaderBuilderParameterTemplate.java
+++ 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/HeaderBuilderParameterTemplate.java
@@ -16,12 +16,13 @@
 
 package org.ovirt.engine.sdk.generator.java.templates;
 
+import org.ovirt.engine.sdk.generator.java.ParameterData;
 import org.ovirt.engine.sdk.generator.templates.AbstractTemplate;
 
 public class HeaderBuilderParameterTemplate extends AbstractTemplate {
-    public String evaluate(String realUrlParamName, String headerParamName) {
-        set("realUrlParamName", realUrlParamName);
-        set("headerParamName", headerParamName);
+    public String evaluate(ParameterData parameter) {
+        set("headerName", parameter.getName());
+        set("javaName", parameter.getJavaName());
         return evaluate();
     }
 }
diff --git 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/ListMethodTemplate.java
 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/ListMethodTemplate.java
index 7754a15..d1a4f77 100644
--- 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/ListMethodTemplate.java
+++ 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/ListMethodTemplate.java
@@ -16,7 +16,6 @@
 
 package org.ovirt.engine.sdk.generator.java.templates;
 
-import java.util.ArrayList;
 import java.util.List;
 
 import org.ovirt.engine.sdk.generator.java.documentation.DocsGen;
@@ -24,41 +23,34 @@
 import org.ovirt.engine.sdk.generator.Location;
 import org.ovirt.engine.sdk.generator.LocationRules;
 import org.ovirt.engine.sdk.generator.SchemaRules;
+import org.ovirt.engine.sdk.generator.java.ParameterData;
 import org.ovirt.engine.sdk.generator.java.utils.LinkUtils;
+import org.ovirt.engine.sdk.generator.java.utils.MethodUtils;
 import org.ovirt.engine.sdk.generator.java.utils.StringUtils;
 import org.ovirt.engine.sdk.generator.utils.Tree;
 import org.ovirt.engine.sdk.entities.DetailedLink;
-import org.ovirt.engine.sdk.entities.Header;
-import org.ovirt.engine.sdk.entities.Parameter;
 
 public class ListMethodTemplate extends AbstractOverloadableTemplate {
     private String evaluate(
-            List<Parameter> urlParameters,
-            List<Header> headers,
+            List<ParameterData> parameters,
             String decoratorName,
             String publicCollectionName,
             String docParams) {
-        // Generate the parameter declarations, for both URL parameters and 
headers:
-        List<String> paramDecls = new ArrayList<>();
-        paramDecls.addAll(getUrlParameterDeclarations(urlParameters));
-        paramDecls.addAll(getHeaderDeclarations(headers));
-        String paramList = StringUtils.formatList(paramDecls, ", ");
-
         // Generate the code that populates the list of URL parameters to send 
tot the server:
-        String urlBuilderCode = getUrlBuilderCode(urlParameters);
-        String headerBuilderCode = getHeaderBuilderCode(headers);
+        String urlBuilderCode = getUrlBuilderCode(parameters);
+        String headerBuilderCode = getHeaderBuilderCode(parameters);
 
         // Generate the method:
         set("decoratorName", decoratorName);
         set("publicCollectionName", publicCollectionName);
         set("docParams", docParams);
-        set("paramList", paramList);
+        set("paramList", MethodUtils.formatParameters(parameters));
         set("headersToBuild", headerBuilderCode);
         set("urlParamsToBuild", urlBuilderCode);
         return evaluate();
     }
 
-    public String evaluate(Tree<Location> collectionTree, DetailedLink dl) {
+    public String evaluate(String className, Tree<Location> collectionTree, 
DetailedLink dl) {
         Tree<Location> entityTree = 
collectionTree.getChild(LocationRules::isEntity);
 
         String brokerType = BrokerRules.getBrokerType(entityTree);
@@ -68,44 +60,24 @@
 
         StringBuilder buffer = new StringBuilder();
 
-        // Generate URL and header parameters:
-        List<Parameter> urlParameters = LinkUtils.getUrlParameters(dl);
-        List<Header> headers = LinkUtils.getHeaders(dl);
+        // Get the list of parameters:
+        List<ParameterData> parameters = LinkUtils.getParameters(dl);
 
-        // Add method overload containing all the URL parameters but none of 
the header parameters:
-        if (!urlParameters.isEmpty()) {
+        // Reorder the parameters declarations for backwards compatibility:
+        parameters = MethodUtils.reorderParameters(className, "list", 
parameters);
+
+        // Generate a version of the method for each prefix of the list of 
parameter declarations, not including the
+        // empty list, as that is already part of the template:
+        for (int i = 1; i <= parameters.size(); i++) {
+            List<ParameterData> prefix = parameters.subList(0, i);
             buffer.append(
                 evaluate(
-                        urlParameters,
-                        new ArrayList<Header>(0),
-                        brokerType,
-                        collectionType,
-                        StringUtils.combine(
-                                docParams,
-                                DocsGen.generateUrlParameters(dl)
-                        )
+                    prefix,
+                    brokerType,
+                    collectionType,
+                    StringUtils.combine(docParams, 
DocsGen.generateParameters(prefix))
                 )
             );
-        }
-
-        // Add method overloads containg all the URL parameters and all the 
sublists of the header parameters:
-        if (!headers.isEmpty()) {
-            for (int i = 1; i <= headers.size(); i++) {
-                List<Header> headerSublist = headers.subList(0, i);
-                buffer.append(
-                    evaluate(
-                            urlParameters,
-                            headerSublist,
-                            brokerType,
-                            collectionType,
-                            StringUtils.combine(
-                                    docParams,
-                                    DocsGen.generateHeaders(headerSublist),
-                                    DocsGen.generateUrlParameters(dl)
-                            )
-                    )
-                );
-            }
         }
 
         return buffer.toString();
diff --git 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/MethodParameterTemplate
 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/MethodParameterTemplate
deleted file mode 100644
index 795e910..0000000
--- 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/MethodParameterTemplate
+++ /dev/null
@@ -1 +0,0 @@
-$type$ $name$
\ No newline at end of file
diff --git 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/MethodParameterTemplate.java
 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/MethodParameterTemplate.java
deleted file mode 100644
index e51eba9..0000000
--- 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/MethodParameterTemplate.java
+++ /dev/null
@@ -1,30 +0,0 @@
-//
-// Copyright (c) 2014 Red Hat, Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
-package org.ovirt.engine.sdk.generator.java.templates;
-
-import org.ovirt.engine.sdk.generator.templates.AbstractTemplate;
-
-/**
- * Template to generate the declaration of a method parameter given its type 
and its name.
- */
-public class MethodParameterTemplate extends AbstractTemplate {
-    public String evaluate(String type, String name) {
-        set("type", type);
-        set("name", name);
-        return evaluate();
-    }
-}
diff --git 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/ResourceActionMethodTemplate.java
 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/ResourceActionMethodTemplate.java
index ffe19c5..0d09ed7 100644
--- 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/ResourceActionMethodTemplate.java
+++ 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/ResourceActionMethodTemplate.java
@@ -16,39 +16,34 @@
 
 package org.ovirt.engine.sdk.generator.java.templates;
 
-import java.util.ArrayList;
 import java.util.List;
 
 import org.ovirt.engine.sdk.generator.java.documentation.DocsGen;
 import org.ovirt.engine.sdk.generator.BrokerRules;
 import org.ovirt.engine.sdk.generator.Location;
 import org.ovirt.engine.sdk.generator.LocationRules;
+import org.ovirt.engine.sdk.generator.java.ParameterData;
 import org.ovirt.engine.sdk.generator.java.utils.LinkUtils;
+import org.ovirt.engine.sdk.generator.java.utils.MethodUtils;
 import org.ovirt.engine.sdk.generator.java.utils.StringUtils;
 import org.ovirt.engine.sdk.generator.utils.Tree;
 import org.ovirt.engine.sdk.entities.DetailedLink;
-import org.ovirt.engine.sdk.entities.Header;
-import org.ovirt.engine.sdk.entities.Parameter;
 
 public class ResourceActionMethodTemplate extends AbstractOverloadableTemplate 
{
     private String evaluate(
-            List<Parameter> urlParameters,
-            List<Header> headers,
+            List<ParameterData> parameters,
             String methodName,
             String actionName,
             String docParams) {
-        // Generate the parameter declarations, for both URL parameters and 
headers:
-        List<String> paramDecls = new ArrayList<>();
-        paramDecls.addAll(getUrlParameterDeclarations(urlParameters));
-        paramDecls.addAll(getHeaderDeclarations(headers));
-        String paramList = "";
-        if (!paramDecls.isEmpty()) {
-            paramList = ", " + StringUtils.formatList(paramDecls, ", ");
-        }
-
         // Generate the code that populates the list of URL parameters to send 
tot the server:
-        String urlBuilderCode = getUrlBuilderCode(urlParameters);
-        String headerBuilderCode = getHeaderBuilderCode(headers);
+        String urlBuilderCode = getUrlBuilderCode(parameters);
+        String headerBuilderCode = getHeaderBuilderCode(parameters);
+
+        // Format the parameter list, adding a comma to separate from the 
action parameter if needed:
+        String paramList = MethodUtils.formatParameters(parameters);
+        if (!paramList.isEmpty()) {
+            paramList = ", " + paramList;
+        }
 
         // Generate the method:
         set("methodName", methodName);
@@ -60,7 +55,7 @@
         return evaluate();
     }
 
-    public String evaluate(Tree<Location> actionTree) {
+    public String evaluate(String className, Tree<Location> actionTree) {
         DetailedLink dl = actionTree.get().getLinks().get(0);
 
         String actionName = LocationRules.getName(actionTree);
@@ -70,55 +65,24 @@
 
         StringBuilder buffer = new StringBuilder();
 
-        // Generate URL and header parameters:
-        List<Parameter> urlParameters = LinkUtils.getUrlParameters(dl);
-        List<Header> headers = LinkUtils.getHeaders(dl);
+        // Get the list of parameters:
+        List<ParameterData> parameters = LinkUtils.getParameters(dl);
 
-        // Add default method, without URL or header parameters:
-        buffer.append(
-            evaluate(
-                    new ArrayList<Parameter>(0),
-                    new ArrayList<Header>(0),
-                    methodName,
-                    actionName,
-                    docParams
-            )
-        );
+        // Reorder the parameters declarations for backwards compatibility:
+        parameters = MethodUtils.reorderParameters(className, methodName, 
parameters);
 
-        // Add method overload containing all the URL parameters but none of 
the header parameters:
-        if (!urlParameters.isEmpty()) {
+        // Generate a version of the method for each prefix of the list of 
parameter declarations, including the
+        // empty prefix and the complete list:
+        for (int i = 0; i <= parameters.size(); i++) {
+            List<ParameterData> prefix = parameters.subList(0, i);
             buffer.append(
                 evaluate(
-                        urlParameters,
-                        new ArrayList<Header>(0),
-                        methodName,
-                        actionName,
-                        StringUtils.combine(
-                                docParams,
-                                DocsGen.generateUrlParameters(dl)
-                        )
+                    prefix,
+                    methodName,
+                    actionName,
+                    StringUtils.combine(docParams, 
DocsGen.generateParameters(prefix))
                 )
             );
-        }
-
-        // Add method overloads containg all the URL parameters and all the 
sublists of the header parameters:
-        if (!headers.isEmpty()) {
-            for (int i = 1; i <= headers.size(); i++) {
-                List<Header> headerSublist = headers.subList(0, i);
-                buffer.append(
-                    evaluate(
-                            urlParameters,
-                            headerSublist,
-                            methodName,
-                            actionName,
-                            StringUtils.combine(
-                                    docParams,
-                                    DocsGen.generateHeaders(headerSublist),
-                                    DocsGen.generateUrlParameters(dl)
-                            )
-                    )
-                );
-            }
         }
 
         return buffer.toString();
diff --git 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/ResourceTemplate.java
 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/ResourceTemplate.java
index 748512c..7ffde9c 100644
--- 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/ResourceTemplate.java
+++ 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/ResourceTemplate.java
@@ -31,7 +31,7 @@
 import static 
org.ovirt.engine.sdk.generator.java.utils.StringUtils.concatenateValues;
 
 public class ResourceTemplate extends AbstractTemplate {
-    public String evaluate(Tree<Location> entityTree) {
+    public String evaluate(String className, Tree<Location> entityTree) {
         String brokerType = BrokerRules.getBrokerType(entityTree);
         String entityType = SchemaRules.getSchemaType(entityTree);
 
@@ -64,11 +64,11 @@
             String methodName = methodLink.getRel();
             switch (methodName) {
             case "delete":
-                String deleteMethod = new 
DeleteMethodTemplate().evaluate(entityTree, methodLink);
+                String deleteMethod = new 
DeleteMethodTemplate().evaluate(className, entityTree, methodLink);
                 methodsMap.put(methodName, deleteMethod);
                 break;
             case "update":
-                String updateMethod = new 
UpdateMethodTemplate().evaluate(entityTree, methodLink);
+                String updateMethod = new 
UpdateMethodTemplate().evaluate(className, entityTree, methodLink);
                 methodsMap.put(methodName, updateMethod);
                 break;
             }
@@ -77,7 +77,7 @@
         // Generate the code for the actions:
         for (Tree<Location> actionTree : 
entityTree.getChildren(LocationRules::isAction)) {
             String actionName = LocationRules.getName(actionTree);
-            String actionMethod = new 
ResourceActionMethodTemplate().evaluate(actionTree);
+            String actionMethod = new 
ResourceActionMethodTemplate().evaluate(className, actionTree);
             methodsMap.put(actionName, actionMethod);
         }
 
diff --git 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/SubCollectionAddMethodTemplate.java
 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/SubCollectionAddMethodTemplate.java
index 73c8412..ada0abe 100644
--- 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/SubCollectionAddMethodTemplate.java
+++ 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/SubCollectionAddMethodTemplate.java
@@ -16,7 +16,6 @@
 
 package org.ovirt.engine.sdk.generator.java.templates;
 
-import java.util.ArrayList;
 import java.util.List;
 
 import org.ovirt.engine.sdk.generator.java.documentation.DocsGen;
@@ -24,32 +23,28 @@
 import org.ovirt.engine.sdk.generator.Location;
 import org.ovirt.engine.sdk.generator.LocationRules;
 import org.ovirt.engine.sdk.generator.SchemaRules;
+import org.ovirt.engine.sdk.generator.java.ParameterData;
 import org.ovirt.engine.sdk.generator.java.utils.LinkUtils;
+import org.ovirt.engine.sdk.generator.java.utils.MethodUtils;
 import org.ovirt.engine.sdk.generator.java.utils.StringUtils;
 import org.ovirt.engine.sdk.generator.utils.Tree;
 import org.ovirt.engine.sdk.entities.DetailedLink;
-import org.ovirt.engine.sdk.entities.Header;
-import org.ovirt.engine.sdk.entities.Parameter;
 
 public class SubCollectionAddMethodTemplate extends 
AbstractOverloadableTemplate {
     private String evaluate(
-            List<Parameter> urlParameters,
-            List<Header> headers,
+            List<ParameterData> parameters,
             String decoratorName,
             String publicEntityName,
             String docParams) {
-        // Generate the parameter declarations, for both URL parameters and 
headers:
-        List<String> paramDecls = new ArrayList<>();
-        paramDecls.addAll(getUrlParameterDeclarations(urlParameters));
-        paramDecls.addAll(getHeaderDeclarations(headers));
-        String paramList = "";
-        if (!paramDecls.isEmpty()) {
-            paramList = ", " + StringUtils.formatList(paramDecls, ", ");
-        }
-
         // Generate the code that populates the list of URL parameters to send 
tot the server:
-        String urlBuilderCode = getUrlBuilderCode(urlParameters);
-        String headerBuilderCode = getHeaderBuilderCode(headers);
+        String urlBuilderCode = getUrlBuilderCode(parameters);
+        String headerBuilderCode = getHeaderBuilderCode(parameters);
+
+        // Format the parameter list, adding a comma to separate from the 
added entity parameter if needed:
+        String paramList = MethodUtils.formatParameters(parameters);
+        if (!paramList.isEmpty()) {
+            paramList = ", " + paramList;
+        }
 
         // Generate the method:
         set("decoratorName", decoratorName);
@@ -62,7 +57,7 @@
         return evaluate();
     }
 
-    public String evaluate(Tree<Location> collectionTree, DetailedLink dl) {
+    public String evaluate(String className, Tree<Location> collectionTree, 
DetailedLink dl) {
         Tree<Location> entityTree = 
collectionTree.getChild(LocationRules::isEntity);
 
         String brokerType = BrokerRules.getBrokerType(entityTree);
@@ -72,55 +67,24 @@
 
         StringBuilder buffer = new StringBuilder();
 
-        // Generate URL and header parameters:
-        List<Parameter> urlParameters = LinkUtils.getUrlParameters(dl);
-        List<Header> headers = LinkUtils.getHeaders(dl);
+        // Get the list of parameters:
+        List<ParameterData> parameters = LinkUtils.getParameters(dl);
 
-        // Add default method, without URL or header parameters:
-        buffer.append(
-            evaluate(
-                    new ArrayList<Parameter>(0),
-                    new ArrayList<Header>(0),
-                    brokerType,
-                    entityType,
-                    docParams
-            )
-        );
+        // Reorder the parameters declarations for backwards compatibility:
+        parameters = MethodUtils.reorderParameters(className, "add", 
parameters);
 
-        // Add method overload containing all the URL parameters but none of 
the header parameters:
-        if (!urlParameters.isEmpty()) {
+        // Generate a version of the method for each prefix of the list of 
parameter declarations, including the
+        // empty prefix and the complete list:
+        for (int i = 0; i <= parameters.size(); i++) {
+            List<ParameterData> prefix = parameters.subList(0, i);
             buffer.append(
                 evaluate(
-                        urlParameters,
-                        new ArrayList<Header>(0),
-                        brokerType,
-                        entityType,
-                        StringUtils.combine(
-                                docParams,
-                                DocsGen.generateUrlParameters(dl)
-                        )
+                    prefix,
+                    brokerType,
+                    entityType,
+                    StringUtils.combine(docParams, 
DocsGen.generateParameters(prefix))
                 )
             );
-        }
-
-        // Add method overloads containg all the URL parameters and all the 
sublists of the header parameters:
-        if (!headers.isEmpty()) {
-            for (int i = 1; i <= headers.size(); i++) {
-                List<Header> headerSublist = headers.subList(0, i);
-                buffer.append(
-                    evaluate(
-                            urlParameters,
-                            headerSublist,
-                            brokerType,
-                            entityType,
-                            StringUtils.combine(
-                                    docParams,
-                                    DocsGen.generateHeaders(headerSublist),
-                                    DocsGen.generateUrlParameters(dl)
-                            )
-                    )
-                );
-            }
         }
 
         return buffer.toString();
diff --git 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/SubCollectionTemplate.java
 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/SubCollectionTemplate.java
index 2dae1a4..2d9d179 100644
--- 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/SubCollectionTemplate.java
+++ 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/SubCollectionTemplate.java
@@ -30,7 +30,7 @@
 import static 
org.ovirt.engine.sdk.generator.java.utils.StringUtils.concatenateValues;
 
 public class SubCollectionTemplate extends AbstractTemplate {
-    public String evaluate(Tree<Location> collectionTree) {
+    public String evaluate(String className, Tree<Location> collectionTree) {
         Tree<Location> parentTree = collectionTree.getParent();
         Tree<Location> entityTree = 
collectionTree.getChild(LocationRules::isEntity);
 
@@ -50,11 +50,11 @@
             String methodName = methodLink.getRel();
             switch (methodName) {
             case "add":
-                String addMethod = new 
SubCollectionAddMethodTemplate().evaluate(collectionTree, methodLink);
+                String addMethod = new 
SubCollectionAddMethodTemplate().evaluate(className, collectionTree, 
methodLink);
                 methodsMap.put(methodName, addMethod);
                 break;
             case "get":
-                String listMethod = new 
SubCollectionListMethodTemplate().evaluate(collectionTree, methodLink);
+                String listMethod = new 
SubCollectionListMethodTemplate().evaluate(className, collectionTree, 
methodLink);
                 methodsMap.put(methodName, listMethod);
                 break;
             }
@@ -63,7 +63,7 @@
         // Generate the code for the action methods:
         for (Tree<Location> actionTree : 
collectionTree.getChildren(LocationRules::isAction)) {
             String actionName = LocationRules.getName(actionTree);
-            String actionMethod = new 
CollectionActionMethodTemplate().evaluate(actionTree);
+            String actionMethod = new 
CollectionActionMethodTemplate().evaluate(className, actionTree);
             methodsMap.put(actionName, actionMethod);
         }
 
diff --git 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/SubResourceTemplate.java
 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/SubResourceTemplate.java
index ed0be99..a4bca33 100644
--- 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/SubResourceTemplate.java
+++ 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/SubResourceTemplate.java
@@ -31,7 +31,7 @@
 import static 
org.ovirt.engine.sdk.generator.java.utils.StringUtils.concatenateValues;
 
 public class SubResourceTemplate extends AbstractTemplate {
-    public String evaluate(Tree<Location> entityTree) {
+    public String evaluate(String className, Tree<Location> entityTree) {
         String brokerType = BrokerRules.getBrokerType(entityTree);
         String entityType = SchemaRules.getSchemaType(entityTree);
 
@@ -65,11 +65,11 @@
             String methodName = methodLink.getRel();
             switch (methodName) {
             case "delete":
-                String deleteMethod = new 
DeleteMethodTemplate().evaluate(entityTree, methodLink);
+                String deleteMethod = new 
DeleteMethodTemplate().evaluate(className, entityTree, methodLink);
                 methodsMap.put(methodName, deleteMethod);
                 break;
             case "update":
-                String updateMethod = new 
UpdateMethodTemplate().evaluate(entityTree, methodLink);
+                String updateMethod = new 
UpdateMethodTemplate().evaluate(className, entityTree, methodLink);
                 methodsMap.put(methodName, updateMethod);
                 break;
             }
@@ -78,7 +78,7 @@
         // Generate the code for the actions:
         for (Tree<Location> actionTree : 
entityTree.getChildren(LocationRules::isAction)) {
             String actionName = LocationRules.getName(actionTree);
-            String actionMethod = new 
ResourceActionMethodTemplate().evaluate(actionTree);
+            String actionMethod = new 
ResourceActionMethodTemplate().evaluate(className, actionTree);
             methodsMap.put(actionName, actionMethod);
         }
 
diff --git 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/UpdateMethodTemplate.java
 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/UpdateMethodTemplate.java
index 7746687..cf022eb 100644
--- 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/UpdateMethodTemplate.java
+++ 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/UpdateMethodTemplate.java
@@ -16,49 +16,40 @@
 
 package org.ovirt.engine.sdk.generator.java.templates;
 
-import java.util.ArrayList;
 import java.util.List;
 
 import org.ovirt.engine.sdk.generator.java.documentation.DocsGen;
 import org.ovirt.engine.sdk.generator.BrokerRules;
 import org.ovirt.engine.sdk.generator.Location;
 import org.ovirt.engine.sdk.generator.SchemaRules;
+import org.ovirt.engine.sdk.generator.java.ParameterData;
 import org.ovirt.engine.sdk.generator.java.utils.LinkUtils;
+import org.ovirt.engine.sdk.generator.java.utils.MethodUtils;
 import org.ovirt.engine.sdk.generator.java.utils.StringUtils;
 import org.ovirt.engine.sdk.generator.utils.Tree;
 import org.ovirt.engine.sdk.entities.DetailedLink;
-import org.ovirt.engine.sdk.entities.Header;
-import org.ovirt.engine.sdk.entities.Parameter;
 
 public class UpdateMethodTemplate extends AbstractOverloadableTemplate {
     private String evaluate(
-            List<Parameter> urlParameters,
-            List<Header> headers,
+            List<ParameterData> parameters,
             String decoratorName,
             String publicEntityName,
             String docParams) {
-
-        // Generate the parameter declarations, for both URL parameters and 
headers:
-        List<String> paramDecls = new ArrayList<>();
-        paramDecls.addAll(getUrlParameterDeclarations(urlParameters));
-        paramDecls.addAll(getHeaderDeclarations(headers));
-        String paramList = StringUtils.formatList(paramDecls, ", ");
-
         // Generate the code that populates the list of URL parameters to send 
tot the server:
-        String urlBuilderCode = getUrlBuilderCode(urlParameters);
-        String headerBuilderCode = getHeaderBuilderCode(headers);
+        String urlBuilderCode = getUrlBuilderCode(parameters);
+        String headerBuilderCode = getHeaderBuilderCode(parameters);
 
         // Generate the method:
         set("decoratorName", decoratorName);
         set("publicEntityName", publicEntityName);
         set("docParams", docParams);
-        set("paramList", paramList);
+        set("paramList", MethodUtils.formatParameters(parameters));
         set("headersToBuild", headerBuilderCode);
         set("urlParamsToBuild", urlBuilderCode);
         return evaluate();
     }
 
-    public String evaluate(Tree<Location> entityTree, DetailedLink dl) {
+    public String evaluate(String className, Tree<Location> entityTree, 
DetailedLink dl) {
         String brokerType = BrokerRules.getBrokerType(entityTree);
         String entityType = SchemaRules.getSchemaType(entityTree);
 
@@ -66,55 +57,24 @@
 
         StringBuilder buffer = new StringBuilder();
 
-        // Generate URL and header parameters:
-        List<Parameter> urlParameters = LinkUtils.getUrlParameters(dl);
-        List<Header> headers = LinkUtils.getHeaders(dl);
+        // Get the list of parameters:
+        List<ParameterData> parameters = LinkUtils.getParameters(dl);
 
-        // Add default method, without URL or header parameters:
-        buffer.append(
-            evaluate(
-                    new ArrayList<>(0),
-                    new ArrayList<>(0),
-                    brokerType,
-                    entityType,
-                    docParams
-            )
-        );
+        // Reorder the parameters declarations for backwards compatibility:
+        parameters = MethodUtils.reorderParameters(className, "update", 
parameters);
 
-        // Add method overload containing all the URL parameters but none of 
the header parameters:
-        if (!urlParameters.isEmpty()) {
+        // Generate a version of the method for each prefix of the list of 
parameter declarations, including the
+        // empty prefix and the complete list:
+        for (int i = 0; i <= parameters.size(); i++) {
+            List<ParameterData> prefix = parameters.subList(0, i);
             buffer.append(
                 evaluate(
-                    urlParameters,
-                    new ArrayList<>(0),
+                    prefix,
                     brokerType,
                     entityType,
-                    StringUtils.combine(
-                        docParams,
-                        DocsGen.generateUrlParameters(dl)
-                    )
+                    StringUtils.combine(docParams, 
DocsGen.generateParameters(prefix))
                 )
             );
-        }
-
-        // Add method overloads containg all the URL parameters and all the 
sublists of the header parameters:
-        if (!headers.isEmpty()) {
-            for (int i = 1; i <= headers.size(); i++) {
-                List<Header> headerSublist = headers.subList(0, i);
-                buffer.append(
-                    evaluate(
-                        urlParameters,
-                        headerSublist,
-                        brokerType,
-                        entityType,
-                        StringUtils.combine(
-                            docParams,
-                            DocsGen.generateHeaders(headerSublist),
-                            DocsGen.generateUrlParameters(dl)
-                        )
-                    )
-                );
-            }
         }
 
         return buffer.toString();
diff --git 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/UrlBuilderParameterTemplate
 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/UrlBuilderParameterTemplate
index b1e40a2..0cea738 100644
--- 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/UrlBuilderParameterTemplate
+++ 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/UrlBuilderParameterTemplate
@@ -1,3 +1,3 @@
-        if ($urlParamName$ != null) {
-            urlBuilder.add("$realUrlParamName$", $urlParamName$, 
UrlParameterType.$urlParamType$);
+        if ($javaName$ != null) {
+            urlBuilder.add("$parameterName$", $javaName$, 
UrlParameterType.$parameterContext$);
         }
diff --git 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/UrlBuilderParameterTemplate.java
 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/UrlBuilderParameterTemplate.java
index ef92fa0..b1fde2f 100644
--- 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/UrlBuilderParameterTemplate.java
+++ 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/templates/UrlBuilderParameterTemplate.java
@@ -16,13 +16,14 @@
 
 package org.ovirt.engine.sdk.generator.java.templates;
 
+import org.ovirt.engine.sdk.generator.java.ParameterData;
 import org.ovirt.engine.sdk.generator.templates.AbstractTemplate;
 
 public class UrlBuilderParameterTemplate extends AbstractTemplate {
-    public String evaluate(String realUrlParamName, String urlParamName, 
String urlParamType) {
-        set("realUrlParamName", realUrlParamName);
-        set("urlParamName", urlParamName);
-        set("urlParamType", urlParamType);
+    public String evaluate(ParameterData parameter) {
+        set("parameterName", parameter.getName());
+        set("parameterContext", parameter.getContext());
+        set("javaName", parameter.getJavaName());
         return evaluate();
     }
 }
diff --git 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/utils/ExceptionsAwareComparator.java
 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/utils/ExceptionsAwareComparator.java
index 7780a39..f0dc040 100644
--- 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/utils/ExceptionsAwareComparator.java
+++ 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/utils/ExceptionsAwareComparator.java
@@ -27,7 +27,7 @@
  * <pre>
  * List<String> names = ...;
  * List<String> exceptions = Arrays.asList("mary", "joe");
- * names.sort(new ExceptionsComparator<>(Person::getName, String::compareTo, 
exceptions);
+ * names.sort(new ExceptionsComparator<>(Person::getJavaName, 
String::compareTo, exceptions);
  * </pre>
  *
  * @param <T> the type of the objects to compare
diff --git 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/utils/LinkUtils.java
 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/utils/LinkUtils.java
index b40dd77..75d7603 100644
--- 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/utils/LinkUtils.java
+++ 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/utils/LinkUtils.java
@@ -27,11 +27,9 @@
 import org.ovirt.engine.sdk.entities.Parameter;
 import org.ovirt.engine.sdk.entities.ParametersSet;
 import org.ovirt.engine.sdk.entities.Request;
-import org.ovirt.engine.sdk.generator.Memory;
-
-import static java.util.Comparator.comparing;
-import static java.util.stream.Collectors.toList;
-import static 
org.ovirt.engine.sdk.generator.java.utils.ExceptionsAwareComparator.exceptions;
+import org.ovirt.engine.sdk.generator.java.ParameterContext;
+import org.ovirt.engine.sdk.generator.java.ParameterData;
+import org.ovirt.engine.sdk.generator.java.ParameterType;
 
 public class LinkUtils {
     /**
@@ -45,20 +43,46 @@
     }
 
     /**
-     * Key used to store the order of header parameters in the memory.
+     * Get the list of parameters that are available in the given link.
      */
-    private static final String HEADERS_ORDER_KEY = "headers.order";
+    public static List<ParameterData> getParameters(DetailedLink dl) {
+        List<ParameterData> result = new ArrayList<>();
+        result.addAll(getUrlParameters(dl));
+        result.addAll(getHeaderParameters(dl));
+        return result;
+    }
 
     /**
      * Get the list of URL parameters that are available in the given link.
      */
-    public static List<Parameter> getUrlParameters(DetailedLink dl) {
-        List<Parameter> result = new ArrayList<>();
+    public static List<ParameterData> getUrlParameters(DetailedLink dl) {
+        List<ParameterData> result = new ArrayList<>();
         if (dl.isSetRequest() && dl.getRequest().isSetUrl() &&
             dl.getRequest().getUrl().isSetParametersSets() &&
             !dl.getRequest().getUrl().getParametersSets().isEmpty()) {
             for (ParametersSet parametersSet : 
dl.getRequest().getUrl().getParametersSets()) {
-                result.addAll(parametersSet.getParameters());
+                for (Parameter parameter : parametersSet.getParameters()) {
+                    ParameterData parameterData = new ParameterData();
+                    parameterData.setName(parameter.getName());
+                    parameterData.setType(ParameterType.URL);
+                    switch (parameter.getContext()) {
+                    case "query":
+                        parameterData.setContext(ParameterContext.QUERY);
+                        break;
+                    case "matrix":
+                        parameterData.setContext(ParameterContext.MATRIX);
+                        break;
+                    default:
+                        throw new IllegalArgumentException(
+                            "The value \"" + parameter.getContext() + "\" 
isn't a valid URL parameter context."
+                        );
+                    }
+                    parameterData.setRequired(parameter.isRequired() != null 
&& parameter.isRequired());
+                    parameterData.setValues(parameter.getValue());
+                    
parameterData.setJavaName(UrlUtils.toQueryParam(parameter.getName()));
+                    
parameterData.setJavaType(TypeUtils.toJava(parameter.getType()));
+                    result.add(parameterData);
+                }
             }
         }
         return result;
@@ -67,34 +91,26 @@
     /**
      * Get the list of headers available in the given link, filtering out the 
ones that should be ignored.
      */
-    public static List<Header> getHeaders(DetailedLink dl) {
-        // Extract the header definitions from the link:
-        List<Header> result = new ArrayList<>();
+    public static List<ParameterData> getHeaderParameters(DetailedLink dl) {
+        List<ParameterData> result = new ArrayList<>();
         Request request = dl.getRequest();
         if (request != null) {
             Headers headers = request.getHeaders();
             if (headers != null) {
                 for (Header header : headers.getHeaders()) {
                     if (!HEADERS_EXCEPTIONS.contains(header.getName())) {
-                        result.add(header);
+                        ParameterData parameterData = new ParameterData();
+                        parameterData.setName(header.getName());
+                        parameterData.setType(ParameterType.HEADER);
+                        
parameterData.setJavaName(FormatUtils.toJava(header.getName()));
+                        parameterData.setRequired(header.isRequired() != null 
&& header.isRequired());
+                        parameterData.setValues(header.getValue());
+                        parameterData.setJavaType("String");
+                        result.add(parameterData);
                     }
                 }
             }
         }
-
-        // Get the order of the headers from the memory:
-        Memory memory = Memory.getInstance();
-        List<String> oldOrder = memory.getList(dl, HEADERS_ORDER_KEY);
-
-        // Sort the headers by name, taking into account the exceptions:
-        result.sort(comparing(Header::getName, exceptions(String::compareTo, 
oldOrder)));
-
-        // Make sure that we remember the new order for the next execution:
-        List<String> newOrder = 
result.stream().map(Header::getName).collect(toList());
-        if (!newOrder.isEmpty()) {
-            memory.putList(dl, HEADERS_ORDER_KEY, newOrder);
-        }
-
         return result;
     }
 }
diff --git 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/utils/MethodUtils.java
 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/utils/MethodUtils.java
new file mode 100644
index 0000000..d7ac4df
--- /dev/null
+++ 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/utils/MethodUtils.java
@@ -0,0 +1,82 @@
+/*
+Copyright (c) 2012 Red Hat, Inc.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package org.ovirt.engine.sdk.generator.java.utils;
+
+import org.ovirt.engine.sdk.generator.Memory;
+import org.ovirt.engine.sdk.generator.java.ParameterData;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import static java.util.Comparator.comparing;
+import static java.util.stream.Collectors.joining;
+import static java.util.stream.Collectors.toList;
+import static 
org.ovirt.engine.sdk.generator.java.utils.ExceptionsAwareComparator.exceptions;
+
+/**
+ * This class contains a collection of methods useful when working with 
generated methods.
+ */
+public class MethodUtils {
+    /**
+     * Generates the Java code for a method parameter declaration.
+     *
+     * @param parameter the parameter data
+     * @return the Java code for the method parameter declaration
+     */
+    public static String formatParameter(ParameterData parameter) {
+        return parameter.getJavaType() + " " + parameter.getJavaName();
+    }
+
+    /**
+     * Generates the Java code for a list of method parameter declarations.
+     *
+     * @param parameters the data of the parameters
+     * @return the Java code for the list of method parameter declarations
+     */
+    public static String formatParameters(List<ParameterData> parameters) {
+        return 
parameters.stream().map(MethodUtils::formatParameter).collect(joining(", "));
+    }
+
+    /**
+     * Given a list of parameter declarations reorder it so that new 
parameters are at the end of the list.
+     *
+     * @param className the name of the class
+     * @param methodName the name of the method
+     * @param parameters the parameter declarations
+     */
+    public static List<ParameterData> reorderParameters(
+            String className,
+            String methodName,
+            List<ParameterData> parameters) {
+        // Get the names of old parameters, as they were in the previous 
version of the SDK:
+        Memory memory = Memory.getInstance();
+        String key = className + "." + methodName + ".parameters";
+        List<String> oldOrder = memory.getList(key);
+
+        // Reorder the list using the old list of parameters as exceptions, so 
that old parameters are always at the
+        // beginning and new parameters at the end:
+        List<ParameterData> result = new ArrayList<>(parameters);
+        result.sort(comparing(ParameterData::getJavaName, 
exceptions(String::compareTo, oldOrder)));
+
+        // Save the new list of parameter names to the memory, for use in when 
generating the next version of
+        // the SDK:
+        List<String> newOrder = 
result.stream().map(ParameterData::getJavaName).collect(toList());
+        memory.putList(key, newOrder);
+
+        return result;
+    }
+}
diff --git 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/utils/StringUtils.java
 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/utils/StringUtils.java
index cb37256..23c1acc 100644
--- 
a/generator/src/main/java/org/ovirt/engine/sdk/generator/java/utils/StringUtils.java
+++ 
b/generator/src/main/java/org/ovirt/engine/sdk/generator/java/utils/StringUtils.java
@@ -50,6 +50,7 @@
         StringBuffer buffer = new StringBuffer(source);
         if (strings != null) {
             for (String str : strings) {
+                buffer.append("\n");
                 buffer.append(str);
             }
         }
diff --git a/generator/src/main/resources/memory.properties 
b/generator/src/main/resources/memory.properties
index 132df03..a7ffb62 100644
--- a/generator/src/main/resources/memory.properties
+++ b/generator/src/main/resources/memory.properties
@@ -1,293 +1,339 @@
-link.bookmarks.add.headers.order=Correlation-Id Expect
-link.clusters.add.headers.order=Expect Correlation-Id
-link.clusters.cluster_id.affinitygroups.add.headers.order=Expect Correlation-Id
-link.clusters.cluster_id.affinitygroups.affinitygroup_id.delete.headers.order=Correlation-Id
-link.clusters.cluster_id.affinitygroups.affinitygroup_id.update.headers.order=Correlation-Id
 Expect
-link.clusters.cluster_id.affinitygroups.affinitygroup_id.vms.add.headers.order=Expect
 Correlation-Id
-link.clusters.cluster_id.affinitygroups.affinitygroup_id.vms.vm_id.delete.headers.order=Correlation-Id
-link.clusters.cluster_id.cpuprofiles.add.headers.order=Expect Correlation-Id
-link.clusters.cluster_id.cpuprofiles.cpuprofile_id.delete.headers.order=Correlation-Id
-link.clusters.cluster_id.delete.headers.order=Correlation-Id
-link.clusters.cluster_id.glusterhooks.glusterhook_id.delete.headers.order=Correlation-Id
-link.clusters.cluster_id.glusterhooks.glusterhook_id.disable.disable.headers.order=Correlation-Id
-link.clusters.cluster_id.glusterhooks.glusterhook_id.enable.enable.headers.order=Correlation-Id
-link.clusters.cluster_id.glusterhooks.glusterhook_id.resolve.resolve.headers.order=Correlation-Id
-link.clusters.cluster_id.glustervolumes.add.headers.order=Expect Correlation-Id
-link.clusters.cluster_id.glustervolumes.glustervolume_id.bricks.activate.activate.headers.order=Correlation-Id
-link.clusters.cluster_id.glustervolumes.glustervolume_id.bricks.add.headers.order=Expect
 Correlation-Id
-link.clusters.cluster_id.glustervolumes.glustervolume_id.bricks.brick_id.replace.replace.headers.order=Correlation-Id
-link.clusters.cluster_id.glustervolumes.glustervolume_id.bricks.get.headers.order=All-Content
-link.clusters.cluster_id.glustervolumes.glustervolume_id.bricks.migrate.migrate.headers.order=Correlation-Id
-link.clusters.cluster_id.glustervolumes.glustervolume_id.bricks.stopmigrate.stopmigrate.headers.order=Correlation-Id
-link.clusters.cluster_id.glustervolumes.glustervolume_id.rebalance.rebalance.headers.order=Correlation-Id
-link.clusters.cluster_id.glustervolumes.glustervolume_id.resetalloptions.resetalloptions.headers.order=Correlation-Id
-link.clusters.cluster_id.glustervolumes.glustervolume_id.resetoption.resetoption.headers.order=Correlation-Id
-link.clusters.cluster_id.glustervolumes.glustervolume_id.setoption.setoption.headers.order=Correlation-Id
-link.clusters.cluster_id.glustervolumes.glustervolume_id.start.start.headers.order=Correlation-Id
-link.clusters.cluster_id.glustervolumes.glustervolume_id.startprofile.startprofile.headers.order=Correlation-Id
-link.clusters.cluster_id.glustervolumes.glustervolume_id.stop.stop.headers.order=Correlation-Id
-link.clusters.cluster_id.glustervolumes.glustervolume_id.stopprofile.stopprofile.headers.order=Correlation-Id
-link.clusters.cluster_id.glustervolumes.glustervolume_id.stoprebalance.stoprebalance.headers.order=Correlation-Id
-link.clusters.cluster_id.networks.add.headers.order=Expect Correlation-Id
-link.clusters.cluster_id.networks.network_id.delete.headers.order=Correlation-Id
-link.clusters.cluster_id.networks.network_id.update.headers.order=Correlation-Id
 Expect
-link.clusters.cluster_id.permissions.add.headers.order=Expect Correlation-Id
-link.clusters.cluster_id.permissions.permission_id.delete.headers.order=Correlation-Id
-link.clusters.cluster_id.resetemulatedmachine.resetemulatedmachine.headers.order=Correlation-Id
-link.clusters.cluster_id.update.headers.order=Correlation-Id Expect
-link.cpuprofiles.add.headers.order=Expect Correlation-Id
-link.cpuprofiles.cpuprofile_id.delete.headers.order=Correlation-Id
-link.cpuprofiles.cpuprofile_id.permissions.add.headers.order=Expect 
Correlation-Id
-link.cpuprofiles.cpuprofile_id.permissions.permission_id.delete.headers.order=Correlation-Id
-link.cpuprofiles.cpuprofile_id.update.headers.order=Correlation-Id Expect
-link.datacenters.add.headers.order=Expect Correlation-Id
-link.datacenters.datacenter_id.clusters.add.headers.order=Expect Correlation-Id
-link.datacenters.datacenter_id.clusters.cluster_id.delete.headers.order=Correlation-Id
-link.datacenters.datacenter_id.clusters.cluster_id.networks.add.headers.order=Expect
 Correlation-Id
-link.datacenters.datacenter_id.clusters.cluster_id.networks.network_id.delete.headers.order=Correlation-Id
-link.datacenters.datacenter_id.clusters.cluster_id.networks.network_id.update.headers.order=Correlation-Id
 Expect
-link.datacenters.datacenter_id.clusters.cluster_id.permissions.add.headers.order=Expect
 Correlation-Id
-link.datacenters.datacenter_id.clusters.cluster_id.permissions.permission_id.delete.headers.order=Correlation-Id
-link.datacenters.datacenter_id.clusters.cluster_id.update.headers.order=Correlation-Id
 Expect
-link.datacenters.datacenter_id.delete.headers.order=Correlation-Id
-link.datacenters.datacenter_id.iscsibonds.add.headers.order=Expect 
Correlation-Id
-link.datacenters.datacenter_id.iscsibonds.iscsibond_id.delete.headers.order=Correlation-Id
-link.datacenters.datacenter_id.iscsibonds.iscsibond_id.networks.add.headers.order=Correlation-Id
 Expect
-link.datacenters.datacenter_id.iscsibonds.iscsibond_id.update.headers.order=Expect
 Correlation-Id
-link.datacenters.datacenter_id.networks.add.headers.order=Expect Correlation-Id
-link.datacenters.datacenter_id.networks.network_id.delete.headers.order=Correlation-Id
-link.datacenters.datacenter_id.networks.network_id.labels.add.headers.order=Expect
 Correlation-Id
-link.datacenters.datacenter_id.networks.network_id.labels.label_id.delete.headers.order=Correlation-Id
-link.datacenters.datacenter_id.networks.network_id.update.headers.order=Correlation-Id
 Expect
-link.datacenters.datacenter_id.permissions.add.headers.order=Expect 
Correlation-Id
-link.datacenters.datacenter_id.permissions.permission_id.delete.headers.order=Correlation-Id
-link.datacenters.datacenter_id.qoss.add.headers.order=Expect Correlation-Id
-link.datacenters.datacenter_id.qoss.qos_id.delete.headers.order=Correlation-Id
-link.datacenters.datacenter_id.qoss.qos_id.update.headers.order=Correlation-Id 
Expect
-link.datacenters.datacenter_id.storagedomains.add.headers.order=Expect 
Correlation-Id
-link.datacenters.datacenter_id.storagedomains.storagedomain_id.activate.activate.headers.order=Correlation-Id
-link.datacenters.datacenter_id.storagedomains.storagedomain_id.deactivate.deactivate.headers.order=Correlation-Id
-link.datacenters.datacenter_id.storagedomains.storagedomain_id.delete.headers.order=Correlation-Id
-link.datacenters.datacenter_id.storagedomains.storagedomain_id.disks.add.headers.order=Expect
 Correlation-Id
-link.datacenters.datacenter_id.storagedomains.storagedomain_id.disks.disk_id.delete.headers.order=Correlation-Id
-link.datacenters.datacenter_id.storagedomains.storagedomain_id.disks.disk_id.export.export.headers.order=Correlation-Id
-link.datacenters.datacenter_id.update.headers.order=Correlation-Id Expect
-link.diskprofiles.add.headers.order=Expect Correlation-Id
-link.diskprofiles.diskprofile_id.delete.headers.order=Correlation-Id
-link.diskprofiles.diskprofile_id.permissions.add.headers.order=Expect 
Correlation-Id
-link.diskprofiles.diskprofile_id.permissions.permission_id.delete.headers.order=Correlation-Id
-link.diskprofiles.diskprofile_id.update.headers.order=Correlation-Id Expect
-link.disks.add.headers.order=Expect Correlation-Id
-link.disks.disk_id.copy.copy.headers.order=Correlation-Id
-link.disks.disk_id.delete.headers.order=Correlation-Id
-link.disks.disk_id.export.export.headers.order=Correlation-Id
-link.disks.disk_id.move.move.headers.order=Correlation-Id
-link.events.add.headers.order=Expect Correlation-Id
-link.events.event_id.delete.headers.order=Correlation-Id
-link.externalhostproviders.add.headers.order=Expect Correlation-Id
-link.externalhostproviders.externalhostprovider_id.delete.headers.order=Correlation-Id
-link.externalhostproviders.externalhostprovider_id.importcertificates.importcertificates.headers.order=Correlation-Id
-link.externalhostproviders.externalhostprovider_id.testconnectivity.testconnectivity.headers.order=Correlation-Id
-link.externalhostproviders.externalhostprovider_id.update.headers.order=Correlation-Id
 Expect
-link.groups.add.headers.order=Correlation-Id Expect
-link.groups.group_id.delete.headers.order=Correlation-Id
-link.groups.group_id.permissions.add.headers.order=Expect Correlation-Id
-link.groups.group_id.permissions.permission_id.delete.headers.order=Correlation-Id
-link.groups.group_id.roles.role_id.permits.add.headers.order=Expect 
Correlation-Id
-link.groups.group_id.roles.role_id.permits.permit_id.delete.headers.order=Correlation-Id
-link.groups.group_id.tags.add.headers.order=Expect Correlation-Id
-link.groups.group_id.tags.tag_id.delete.headers.order=Correlation-Id
-link.hosts.add.headers.order=Expect Correlation-Id
-link.hosts.get.headers.order=All-Content
-link.hosts.host_id.activate.activate.headers.order=Correlation-Id
-link.hosts.host_id.approve.approve.headers.order=Correlation-Id
-link.hosts.host_id.commitnetconfig.commitnetconfig.headers.order=Correlation-Id
-link.hosts.host_id.deactivate.deactivate.headers.order=Correlation-Id
-link.hosts.host_id.delete.headers.order=Correlation-Id
-link.hosts.host_id.fence.fence.headers.order=Correlation-Id
-link.hosts.host_id.fenceagents.add.headers.order=Expect Correlation-Id
-link.hosts.host_id.fenceagents.fenceagent_id.delete.headers.order=Correlation-Id
-link.hosts.host_id.fenceagents.fenceagent_id.update.headers.order=Expect 
Correlation-Id
-link.hosts.host_id.forceselectspm.forceselectspm.headers.order=Correlation-Id
-link.hosts.host_id.install.install.headers.order=Correlation-Id
-link.hosts.host_id.iscsidiscover.iscsidiscover.headers.order=Correlation-Id
-link.hosts.host_id.iscsilogin.iscsilogin.headers.order=Correlation-Id
-link.hosts.host_id.nics.add.headers.order=Expect Correlation-Id
-link.hosts.host_id.nics.nic_id.attach.attach.headers.order=Correlation-Id
-link.hosts.host_id.nics.nic_id.delete.headers.order=Correlation-Id
-link.hosts.host_id.nics.nic_id.detach.detach.headers.order=Correlation-Id
-link.hosts.host_id.nics.nic_id.labels.add.headers.order=Expect Correlation-Id
-link.hosts.host_id.nics.nic_id.labels.label_id.delete.headers.order=Correlation-Id
-link.hosts.host_id.nics.nic_id.update.headers.order=Correlation-Id Expect
-link.hosts.host_id.nics.setupnetworks.setupnetworks.headers.order=Correlation-Id
-link.hosts.host_id.permissions.add.headers.order=Expect Correlation-Id
-link.hosts.host_id.permissions.permission_id.delete.headers.order=Correlation-Id
-link.hosts.host_id.refreshcapabilities.refreshcapabilities.headers.order=Correlation-Id
-link.hosts.host_id.tags.add.headers.order=Expect Correlation-Id
-link.hosts.host_id.tags.tag_id.delete.headers.order=Correlation-Id
-link.hosts.host_id.unregisteredstoragedomainsdiscover.unregisteredstoragedomainsdiscover.headers.order=Correlation-Id
-link.hosts.host_id.update.headers.order=Correlation-Id Expect
-link.hosts.host_id.upgrade.upgrade.headers.order=Correlation-Id
-link.instancetypes.add.headers.order=Expect Correlation-Id
-link.instancetypes.instancetype_id.delete.headers.order=Correlation-Id
-link.jobs.add.headers.order=Expect Correlation-Id
-link.jobs.job_id.clear.clear.headers.order=Correlation-Id
-link.jobs.job_id.end.end.headers.order=Correlation-Id
-link.jobs.job_id.steps.add.headers.order=Expect Correlation-Id
-link.jobs.job_id.steps.step_id.end.end.headers.order=Correlation-Id
-link.macpools.add.headers.order=Expect Correlation-Id
-link.macpools.macpool_id.delete.headers.order=Correlation-Id
-link.macpools.macpool_id.update.headers.order=Correlation-Id Expect
-link.networks.add.headers.order=Expect Correlation-Id
-link.networks.network_id.delete.headers.order=Correlation-Id
-link.networks.network_id.labels.add.headers.order=Expect Correlation-Id
-link.networks.network_id.labels.label_id.delete.headers.order=Correlation-Id
-link.networks.network_id.permissions.add.headers.order=Expect Correlation-Id
-link.networks.network_id.permissions.permission_id.delete.headers.order=Correlation-Id
-link.networks.network_id.update.headers.order=Correlation-Id Expect
-link.networks.network_id.vnicprofiles.add.headers.order=Expect Correlation-Id
-link.networks.network_id.vnicprofiles.vnicprofile_id.delete.headers.order=Correlation-Id
-link.openstackimageproviders.add.headers.order=Expect Correlation-Id
-link.openstackimageproviders.openstackimageprovider_id.delete.headers.order=Correlation-Id
-link.openstackimageproviders.openstackimageprovider_id.images.image_id.import.import.headers.order=Correlation-Id
-link.openstackimageproviders.openstackimageprovider_id.importcertificates.importcertificates.headers.order=Correlation-Id
-link.openstackimageproviders.openstackimageprovider_id.testconnectivity.testconnectivity.headers.order=Correlation-Id
-link.openstackimageproviders.openstackimageprovider_id.update.headers.order=Correlation-Id
 Expect
-link.openstacknetworkproviders.add.headers.order=Expect Correlation-Id
-link.openstacknetworkproviders.openstacknetworkprovider_id.delete.headers.order=Correlation-Id
-link.openstacknetworkproviders.openstacknetworkprovider_id.update.headers.order=Correlation-Id
 Expect
-link.openstackvolumeproviders.add.headers.order=Correlation-Id Expect
-link.openstackvolumeproviders.openstackvolumeprovider_id.delete.headers.order=Correlation-Id
-link.openstackvolumeproviders.openstackvolumeprovider_id.update.headers.order=Correlation-Id
 Expect
-link.permissions.add.headers.order=Expect Correlation-Id
-link.permissions.permission_id.delete.headers.order=Correlation-Id
-link.roles.add.headers.order=Expect Correlation-Id
-link.roles.role_id.delete.headers.order=Correlation-Id
-link.roles.role_id.permits.add.headers.order=Expect Correlation-Id
-link.roles.role_id.permits.permit_id.delete.headers.order=Correlation-Id
-link.roles.role_id.update.headers.order=Correlation-Id Expect
-link.schedulingpolicies.add.headers.order=Expect Correlation-Id
-link.schedulingpolicies.schedulingpolicy_id.balances.add.headers.order=Expect 
Correlation-Id
-link.schedulingpolicies.schedulingpolicy_id.balances.balance_id.delete.headers.order=Correlation-Id
-link.schedulingpolicies.schedulingpolicy_id.delete.headers.order=Correlation-Id
-link.schedulingpolicies.schedulingpolicy_id.filters.add.headers.order=Expect 
Correlation-Id
-link.schedulingpolicies.schedulingpolicy_id.filters.filter_id.delete.headers.order=Correlation-Id
-link.schedulingpolicies.schedulingpolicy_id.update.headers.order=Correlation-Id
 Expect
-link.schedulingpolicies.schedulingpolicy_id.weights.add.headers.order=Expect 
Correlation-Id
-link.schedulingpolicies.schedulingpolicy_id.weights.weight_id.delete.headers.order=Correlation-Id
-link.schedulingpolicyunits.schedulingpolicyunit_id.delete.headers.order=Correlation-Id
-link.storageconnections.add.headers.order=Expect Correlation-Id
-link.storageconnections.storageconnection_id.delete.headers.order=Correlation-Id
-link.storageconnections.storageconnection_id.update.headers.order=Correlation-Id
 Expect
-link.storagedomains.add.headers.order=Expect Correlation-Id
-link.storagedomains.storagedomain_id.delete.headers.order=Correlation-Id
-link.storagedomains.storagedomain_id.diskprofiles.add.headers.order=Expect 
Correlation-Id
-link.storagedomains.storagedomain_id.diskprofiles.diskprofile_id.delete.headers.order=Correlation-Id
-link.storagedomains.storagedomain_id.disks.add.headers.order=Expect 
Correlation-Id
-link.storagedomains.storagedomain_id.disks.disk_id.delete.headers.order=Correlation-Id
-link.storagedomains.storagedomain_id.disks.disk_id.export.export.headers.order=Correlation-Id
-link.storagedomains.storagedomain_id.disksnapshots.disksnapshot_id.delete.headers.order=Correlation-Id
-link.storagedomains.storagedomain_id.images.image_id.import.import.headers.order=Correlation-Id
-link.storagedomains.storagedomain_id.isattached.isattached.headers.order=Correlation-Id
-link.storagedomains.storagedomain_id.permissions.add.headers.order=Expect 
Correlation-Id
-link.storagedomains.storagedomain_id.permissions.permission_id.delete.headers.order=Correlation-Id
-link.storagedomains.storagedomain_id.storageconnections.add.headers.order=Expect
 Correlation-Id
-link.storagedomains.storagedomain_id.storageconnections.storageconnection_id.delete.headers.order=Correlation-Id
-link.storagedomains.storagedomain_id.templates.template_id.delete.headers.order=Correlation-Id
-link.storagedomains.storagedomain_id.templates.template_id.import.import.headers.order=Correlation-Id
-link.storagedomains.storagedomain_id.templates.template_id.register.register.headers.order=Correlation-Id
-link.storagedomains.storagedomain_id.update.headers.order=Correlation-Id Expect
-link.storagedomains.storagedomain_id.vms.vm_id.delete.headers.order=Correlation-Id
-link.storagedomains.storagedomain_id.vms.vm_id.import.import.headers.order=Correlation-Id
-link.storagedomains.storagedomain_id.vms.vm_id.register.register.headers.order=Correlation-Id
-link.tags.add.headers.order=Correlation-Id Expect
-link.tags.tag_id.delete.headers.order=Correlation-Id
-link.tags.tag_id.update.headers.order=Correlation-Id Expect
-link.templates.add.headers.order=Expect Correlation-Id
-link.templates.get.headers.order=All-Content
-link.templates.template_id.delete.headers.order=Correlation-Id
-link.templates.template_id.disks.disk_id.copy.copy.headers.order=Correlation-Id
-link.templates.template_id.disks.disk_id.delete.headers.order=Correlation-Id
-link.templates.template_id.disks.disk_id.export.export.headers.order=Correlation-Id
-link.templates.template_id.export.export.headers.order=Correlation-Id
-link.templates.template_id.nics.add.headers.order=Expect Correlation-Id
-link.templates.template_id.nics.nic_id.delete.headers.order=Correlation-Id
-link.templates.template_id.nics.nic_id.update.headers.order=Correlation-Id 
Expect
-link.templates.template_id.permissions.add.headers.order=Expect Correlation-Id
-link.templates.template_id.permissions.permission_id.delete.headers.order=Correlation-Id
-link.templates.template_id.tags.add.headers.order=Expect Correlation-Id
-link.templates.template_id.tags.tag_id.delete.headers.order=Correlation-Id
-link.templates.template_id.update.headers.order=Correlation-Id Expect
-link.templates.template_id.watchdogs.add.headers.order=Expect Correlation-Id
-link.templates.template_id.watchdogs.watchdog_id.delete.headers.order=Correlation-Id
-link.templates.template_id.watchdogs.watchdog_id.update.headers.order=Correlation-Id
 Expect
-link.users.add.headers.order=Expect Correlation-Id
-link.users.user_id.delete.headers.order=Correlation-Id
-link.users.user_id.permissions.add.headers.order=Expect Correlation-Id
-link.users.user_id.permissions.permission_id.delete.headers.order=Correlation-Id
-link.users.user_id.roles.role_id.permits.add.headers.order=Expect 
Correlation-Id
-link.users.user_id.roles.role_id.permits.permit_id.delete.headers.order=Correlation-Id
-link.users.user_id.tags.add.headers.order=Expect Correlation-Id
-link.users.user_id.tags.tag_id.delete.headers.order=Correlation-Id
-link.vmpools.add.headers.order=Expect Correlation-Id
-link.vmpools.vmpool_id.allocatevm.allocatevm.headers.order=Correlation-Id
-link.vmpools.vmpool_id.delete.headers.order=Correlation-Id
-link.vmpools.vmpool_id.permissions.add.headers.order=Expect Correlation-Id
-link.vmpools.vmpool_id.permissions.permission_id.delete.headers.order=Correlation-Id
-link.vmpools.vmpool_id.update.headers.order=Correlation-Id Expect
-link.vms.add.headers.order=Correlation-Id Expect
-link.vms.get.headers.order=All-Content
-link.vms.vm_id.cdroms.add.headers.order=Expect Correlation-Id
-link.vms.vm_id.cdroms.cdrom_id.delete.headers.order=Correlation-Id
-link.vms.vm_id.cdroms.cdrom_id.update.headers.order=Correlation-Id Expect
-link.vms.vm_id.clone.clone.headers.order=Correlation-Id
-link.vms.vm_id.commit_snapshot.commit_snapshot.headers.order=Correlation-Id
-link.vms.vm_id.delete.headers.order=Correlation-Id
-link.vms.vm_id.detach.detach.headers.order=Correlation-Id
-link.vms.vm_id.disks.add.headers.order=Expect Correlation-Id
-link.vms.vm_id.disks.disk_id.activate.activate.headers.order=Correlation-Id
-link.vms.vm_id.disks.disk_id.deactivate.deactivate.headers.order=Correlation-Id
-link.vms.vm_id.disks.disk_id.delete.headers.order=Correlation-Id
-link.vms.vm_id.disks.disk_id.export.export.headers.order=Correlation-Id
-link.vms.vm_id.disks.disk_id.move.move.headers.order=Correlation-Id
-link.vms.vm_id.disks.disk_id.update.headers.order=Correlation-Id Expect
-link.vms.vm_id.export.export.headers.order=Correlation-Id
-link.vms.vm_id.logon.logon.headers.order=Correlation-Id
-link.vms.vm_id.maintenance.maintenance.headers.order=Correlation-Id
-link.vms.vm_id.migrate.migrate.headers.order=Correlation-Id
-link.vms.vm_id.move.move.headers.order=Correlation-Id
-link.vms.vm_id.nics.add.headers.order=Expect Correlation-Id
-link.vms.vm_id.nics.get.headers.order=All-Content
-link.vms.vm_id.nics.nic_id.activate.activate.headers.order=Correlation-Id
-link.vms.vm_id.nics.nic_id.deactivate.deactivate.headers.order=Correlation-Id
-link.vms.vm_id.nics.nic_id.delete.headers.order=Correlation-Id
-link.vms.vm_id.nics.nic_id.update.headers.order=Correlation-Id Expect
-link.vms.vm_id.numanodes.add.headers.order=Expect Correlation-Id
-link.vms.vm_id.numanodes.numanode_id.delete.headers.order=Correlation-Id
-link.vms.vm_id.numanodes.numanode_id.update.headers.order=Correlation-Id Expect
-link.vms.vm_id.permissions.add.headers.order=Expect Correlation-Id
-link.vms.vm_id.permissions.permission_id.delete.headers.order=Correlation-Id
-link.vms.vm_id.preview_snapshot.preview_snapshot.headers.order=Correlation-Id
-link.vms.vm_id.reboot.reboot.headers.order=Correlation-Id
-link.vms.vm_id.shutdown.shutdown.headers.order=Correlation-Id
-link.vms.vm_id.snapshots.add.headers.order=Expect Correlation-Id
-link.vms.vm_id.snapshots.get.headers.order=All-Content
-link.vms.vm_id.snapshots.snapshot_id.delete.headers.order=Correlation-Id
-link.vms.vm_id.snapshots.snapshot_id.disks.disk_id.delete.headers.order=Correlation-Id
-link.vms.vm_id.snapshots.snapshot_id.restore.restore.headers.order=Correlation-Id
-link.vms.vm_id.start.start.headers.order=Correlation-Id
-link.vms.vm_id.stop.stop.headers.order=Correlation-Id
-link.vms.vm_id.suspend.suspend.headers.order=Correlation-Id
-link.vms.vm_id.tags.add.headers.order=Expect Correlation-Id
-link.vms.vm_id.tags.tag_id.delete.headers.order=Correlation-Id
-link.vms.vm_id.ticket.ticket.headers.order=Correlation-Id
-link.vms.vm_id.undo_snapshot.undo_snapshot.headers.order=Correlation-Id
-link.vms.vm_id.update.headers.order=Correlation-Id Expect
-link.vms.vm_id.watchdogs.add.headers.order=Expect Correlation-Id
-link.vms.vm_id.watchdogs.watchdog_id.delete.headers.order=Correlation-Id
-link.vms.vm_id.watchdogs.watchdog_id.update.headers.order=Correlation-Id Expect
-link.vnicprofiles.add.headers.order=Expect Correlation-Id
-link.vnicprofiles.vnicprofile_id.delete.headers.order=Correlation-Id
-link.vnicprofiles.vnicprofile_id.permissions.add.headers.order=Expect 
Correlation-Id
-link.vnicprofiles.vnicprofile_id.permissions.permission_id.delete.headers.order=Correlation-Id
-link.vnicprofiles.vnicprofile_id.update.headers.order=Correlation-Id Expect
+Cluster.delete.parameters=async correlationId
+Cluster.update.parameters=correlationId
+ClusterAffinityGroupVMs.add.parameters=expect
+ClusterAffinityGroupVMs.list.parameters=max
+ClusterAffinityGroups.add.parameters=expect
+ClusterAffinityGroups.list.parameters=max
+ClusterCpuProfile.delete.parameters=async correlationId
+ClusterCpuProfiles.add.parameters=expect correlationId
+ClusterCpuProfiles.list.parameters=max
+ClusterGlusterHook.delete.parameters=async correlationId
+ClusterGlusterHook.disable.parameters=correlationId
+ClusterGlusterHook.enable.parameters=correlationId
+ClusterGlusterHook.resolve.parameters=correlationId
+ClusterGlusterVolume.rebalance.parameters=correlationId
+ClusterGlusterVolume.resetalloptions.parameters=correlationId
+ClusterGlusterVolume.resetoption.parameters=correlationId
+ClusterGlusterVolume.setoption.parameters=correlationId
+ClusterGlusterVolume.start.parameters=correlationId
+ClusterGlusterVolume.startprofile.parameters=correlationId
+ClusterGlusterVolume.stop.parameters=correlationId
+ClusterGlusterVolume.stopprofile.parameters=correlationId
+ClusterGlusterVolume.stoprebalance.parameters=correlationId
+ClusterGlusterVolumeGlusterBrick.replace.parameters=correlationId
+ClusterGlusterVolumeGlusterBrickStatistics.list.parameters=max
+ClusterGlusterVolumeGlusterBricks.activate.parameters=correlationId
+ClusterGlusterVolumeGlusterBricks.add.parameters=force expect correlationId
+ClusterGlusterVolumeGlusterBricks.list.parameters=max
+ClusterGlusterVolumeGlusterBricks.migrate.parameters=correlationId
+ClusterGlusterVolumeGlusterBricks.stopmigrate.parameters=correlationId
+ClusterGlusterVolumes.add.parameters=force expect correlationId
+ClusterGlusterVolumes.list.parameters=query caseSensitive
+ClusterNetwork.delete.parameters=async correlationId
+ClusterNetwork.update.parameters=correlationId
+ClusterNetworks.add.parameters=expect correlationId
+ClusterNetworks.list.parameters=max
+ClusterPermission.delete.parameters=async correlationId
+ClusterPermissions.add.parameters=expect correlationId
+ClusterPermissions.list.parameters=max
+Clusters.add.parameters=expect correlationId
+Clusters.list.parameters=query caseSensitive max
+CpuProfile.delete.parameters=async correlationId
+CpuProfile.update.parameters=correlationId
+CpuProfilePermission.delete.parameters=async correlationId
+CpuProfilePermissions.add.parameters=expect correlationId
+CpuProfilePermissions.list.parameters=max
+CpuProfiles.add.parameters=expect correlationId
+CpuProfiles.list.parameters=max
+DataCenter.delete.parameters=async correlationId
+DataCenter.update.parameters=correlationId
+DataCenterCluster.delete.parameters=async correlationId
+DataCenterCluster.update.parameters=correlationId
+DataCenterClusterNetwork.delete.parameters=async correlationId
+DataCenterClusterNetwork.update.parameters=correlationId
+DataCenterClusterNetworks.add.parameters=expect correlationId
+DataCenterClusterNetworks.list.parameters=max
+DataCenterClusterPermission.delete.parameters=async correlationId
+DataCenterClusterPermissions.add.parameters=expect correlationId
+DataCenterClusterPermissions.list.parameters=max
+DataCenterClusters.add.parameters=expect correlationId
+DataCenterClusters.list.parameters=max
+DataCenterIscsiBond.update.parameters=expect
+DataCenterIscsiBonds.add.parameters=expect
+DataCenterNetwork.delete.parameters=async correlationId
+DataCenterNetwork.update.parameters=correlationId
+DataCenterNetworkLabel.delete.parameters=async correlationId
+DataCenterNetworkLabels.add.parameters=expect correlationId
+DataCenterNetworks.add.parameters=expect correlationId
+DataCenterNetworks.list.parameters=max
+DataCenterPermission.delete.parameters=async correlationId
+DataCenterPermissions.add.parameters=expect correlationId
+DataCenterQoS.delete.parameters=async correlationId
+DataCenterQoS.update.parameters=correlationId
+DataCenterQoSs.add.parameters=expect correlationId
+DataCenterQoSs.list.parameters=max
+DataCenterStorageDomain.activate.parameters=correlationId
+DataCenterStorageDomain.deactivate.parameters=correlationId
+DataCenterStorageDomain.delete.parameters=async correlationId
+DataCenterStorageDomainDisk.delete.parameters=async correlationId
+DataCenterStorageDomainDisk.exportDisk.parameters=correlationId
+DataCenterStorageDomainDisks.add.parameters=unregistered expect correlationId
+DataCenterStorageDomainDisks.list.parameters=query caseSensitive max 
unregistered
+DataCenterStorageDomains.add.parameters=expect correlationId
+DataCenterStorageDomains.list.parameters=max
+DataCenters.add.parameters=expect correlationId
+DataCenters.list.parameters=query caseSensitive max
+Disk.copy.parameters=correlationId
+Disk.delete.parameters=async correlationId
+Disk.exportDisk.parameters=correlationId
+Disk.move.parameters=correlationId
+DiskPermissions.list.parameters=max
+DiskProfile.delete.parameters=async correlationId
+DiskProfile.update.parameters=correlationId
+DiskProfilePermission.delete.parameters=async correlationId
+DiskProfilePermissions.add.parameters=expect correlationId
+DiskProfilePermissions.list.parameters=max
+DiskProfiles.add.parameters=expect correlationId
+DiskProfiles.list.parameters=max
+DiskStatistics.list.parameters=max
+Disks.add.parameters=expect correlationId
+Disks.list.parameters=query caseSensitive max
+DomainGroups.list.parameters=query caseSensitive max
+DomainUsers.list.parameters=query caseSensitive max
+Domains.list.parameters=max
+Events.add.parameters=expect correlationId
+Events.list.parameters=query caseSensitive from max
+Group.delete.parameters=async correlationId
+GroupPermission.delete.parameters=async correlationId
+GroupPermissions.add.parameters=expect correlationId
+GroupPermissions.list.parameters=max
+GroupRole.delete.parameters=async correlationId
+GroupRolePermit.delete.parameters=async correlationId
+GroupRolePermits.add.parameters=expect correlationId
+GroupRolePermits.list.parameters=max
+GroupRoles.add.parameters=expect correlationId
+GroupRoles.list.parameters=max
+GroupTag.delete.parameters=async correlationId
+GroupTags.add.parameters=expect correlationId
+GroupTags.list.parameters=max
+Groups.add.parameters=correlationId
+Groups.list.parameters=query caseSensitive max
+Host.activate.parameters=correlationId
+Host.approve.parameters=correlationId
+Host.commitnetconfig.parameters=correlationId
+Host.deactivate.parameters=correlationId
+Host.delete.parameters=async correlationId
+Host.fence.parameters=correlationId
+Host.forceselectspm.parameters=correlationId
+Host.install.parameters=correlationId
+Host.iscsidiscover.parameters=correlationId
+Host.iscsilogin.parameters=correlationId
+Host.unregisteredstoragedomainsdiscover.parameters=correlationId
+Host.update.parameters=async correlationId
+HostNIC.attach.parameters=correlationId
+HostNIC.delete.parameters=async correlationId
+HostNIC.detach.parameters=correlationId
+HostNIC.update.parameters=async correlationId
+HostNICLabel.delete.parameters=async correlationId
+HostNICLabels.add.parameters=expect correlationId
+HostNICStatistics.list.parameters=max
+HostNICs.add.parameters=expect correlationId
+HostNICs.list.parameters=max
+HostNICs.setupnetworks.parameters=correlationId
+HostNumaNodeStatistics.list.parameters=max
+HostNumaNodes.list.parameters=max
+HostPermission.delete.parameters=async correlationId
+HostPermissions.add.parameters=expect correlationId
+HostPermissions.list.parameters=max
+HostStatistics.list.parameters=max
+HostTag.delete.parameters=async correlationId
+HostTags.add.parameters=expect correlationId
+HostTags.list.parameters=max
+Hosts.add.parameters=expect correlationId
+Hosts.list.parameters=query caseSensitive max allContent
+InstanceType.delete.parameters=async correlationId
+InstanceTypes.add.parameters=expect correlationId
+InstanceTypes.list.parameters=max
+Job.clear.parameters=correlationId
+Job.end.parameters=correlationId
+JobStep.end.parameters=correlationId
+JobStepStatistics.list.parameters=max
+JobSteps.add.parameters=expect correlationId
+JobSteps.list.parameters=max
+Jobs.add.parameters=expect correlationId
+Jobs.list.parameters=max
+Network.delete.parameters=async correlationId
+Network.update.parameters=correlationId
+NetworkLabel.delete.parameters=async correlationId
+NetworkLabels.add.parameters=expect correlationId
+NetworkPermission.delete.parameters=async correlationId
+NetworkPermissions.add.parameters=expect correlationId
+NetworkPermissions.list.parameters=max
+NetworkVnicProfile.delete.parameters=async correlationId
+NetworkVnicProfiles.add.parameters=expect correlationId
+NetworkVnicProfiles.list.parameters=max
+Networks.add.parameters=expect correlationId
+Networks.list.parameters=query caseSensitive max
+Permission.delete.parameters=async correlationId
+Permissions.add.parameters=expect correlationId
+Permissions.list.parameters=max
+Role.delete.parameters=async correlationId
+Role.update.parameters=correlationId
+RolePermit.delete.parameters=async correlationId
+RolePermits.add.parameters=expect correlationId
+RolePermits.list.parameters=max
+Roles.add.parameters=expect correlationId
+Roles.list.parameters=max
+SchedulingPolicies.add.parameters=expect correlationId
+SchedulingPolicies.list.parameters=caseSensitive max
+SchedulingPolicyUnit.delete.parameters=async correlationId
+SchedulingPolicyUnits.list.parameters=caseSensitive max
+StorageConnection.delete.parameters=async correlationId
+StorageConnection.update.parameters=correlationId
+StorageConnections.add.parameters=expect correlationId
+StorageDomain.delete.parameters=async correlationId
+StorageDomain.isattached.parameters=async correlationId
+StorageDomain.update.parameters=async correlationId
+StorageDomainDisk.delete.parameters=async correlationId
+StorageDomainDisk.exportDisk.parameters=correlationId
+StorageDomainDiskProfile.delete.parameters=async correlationId
+StorageDomainDiskProfiles.add.parameters=expect correlationId
+StorageDomainDiskProfiles.list.parameters=max
+StorageDomainDiskSnapshot.delete.parameters=async correlationId
+StorageDomainDiskSnapshots.list.parameters=max
+StorageDomainDisks.add.parameters=unregistered expect correlationId
+StorageDomainDisks.list.parameters=query caseSensitive max unregistered
+StorageDomainFiles.list.parameters=query caseSensitive max
+StorageDomainImages.list.parameters=max
+StorageDomainPermission.delete.parameters=async correlationId
+StorageDomainPermissions.add.parameters=expect correlationId
+StorageDomainPermissions.list.parameters=max
+StorageDomainStorageConnection.delete.parameters=async
+StorageDomainStorageConnections.add.parameters=expect correlationId
+StorageDomainStorageConnections.list.parameters=max
+StorageDomainTemplate.delete.parameters=async correlationId
+StorageDomainTemplate.importTemplate.parameters=correlationId
+StorageDomainTemplate.register.parameters=correlationId
+StorageDomainTemplates.list.parameters=max unregistered
+StorageDomainVM.delete.parameters=async correlationId
+StorageDomainVM.importVm.parameters=correlationId
+StorageDomainVM.register.parameters=correlationId
+StorageDomainVMs.list.parameters=max unregistered
+StorageDomains.add.parameters=async expect correlationId
+StorageDomains.list.parameters=query caseSensitive max
+Tag.delete.parameters=async correlationId
+Tag.update.parameters=correlationId
+Tags.add.parameters=correlationId
+Tags.list.parameters=max
+Template.delete.parameters=async correlationId
+Template.exportTemplate.parameters=correlationId
+Template.update.parameters=correlationId
+TemplateCdRoms.list.parameters=max
+TemplateDisk.copy.parameters=correlationId
+TemplateDisk.delete.parameters=async correlationId
+TemplateDisk.exportDisk.parameters=correlationId
+TemplateDisks.list.parameters=max
+TemplateNIC.delete.parameters=async correlationId
+TemplateNIC.update.parameters=correlationId
+TemplateNICs.add.parameters=expect correlationId
+TemplateNICs.list.parameters=max
+TemplatePermission.delete.parameters=async correlationId
+TemplatePermissions.add.parameters=expect correlationId
+TemplatePermissions.list.parameters=max
+TemplateTag.delete.parameters=async correlationId
+TemplateTags.add.parameters=expect correlationId
+TemplateTags.list.parameters=max
+TemplateWatchDog.delete.parameters=async correlationId
+TemplateWatchDog.update.parameters=correlationId
+TemplateWatchDogs.add.parameters=expect correlationId
+TemplateWatchDogs.list.parameters=max
+Templates.add.parameters=expect correlationId
+Templates.list.parameters=query caseSensitive max allContent
+User.delete.parameters=async correlationId
+UserPermission.delete.parameters=async correlationId
+UserPermissions.add.parameters=expect correlationId
+UserPermissions.list.parameters=max
+UserRole.delete.parameters=async correlationId
+UserRolePermit.delete.parameters=async correlationId
+UserRolePermits.add.parameters=expect correlationId
+UserRolePermits.list.parameters=max
+UserRoles.add.parameters=expect correlationId
+UserRoles.list.parameters=max
+UserTag.delete.parameters=async correlationId
+UserTags.add.parameters=expect correlationId
+UserTags.list.parameters=max
+Users.add.parameters=expect correlationId
+Users.list.parameters=query caseSensitive max
+VM.clone.parameters=correlationId
+VM.commit_snapshot.parameters=correlationId
+VM.delete.parameters=async correlationId
+VM.detach.parameters=correlationId
+VM.exportVm.parameters=correlationId
+VM.logon.parameters=correlationId
+VM.maintenance.parameters=correlationId
+VM.migrate.parameters=correlationId
+VM.move.parameters=correlationId
+VM.preview_snapshot.parameters=correlationId
+VM.reboot.parameters=correlationId
+VM.shutdown.parameters=correlationId
+VM.start.parameters=correlationId
+VM.stop.parameters=correlationId
+VM.suspend.parameters=correlationId
+VM.ticket.parameters=correlationId
+VM.undo_snapshot.parameters=correlationId
+VM.update.parameters=correlationId
+VMCdRom.delete.parameters=async correlationId
+VMCdRom.update.parameters=async current correlationId
+VMCdRoms.add.parameters=expect correlationId
+VMCdRoms.list.parameters=max current
+VMDisk.activate.parameters=correlationId
+VMDisk.deactivate.parameters=correlationId
+VMDisk.delete.parameters=async correlationId
+VMDisk.exportDisk.parameters=correlationId
+VMDisk.move.parameters=correlationId
+VMDisk.update.parameters=correlationId
+VMDisks.add.parameters=expect correlationId
+VMDisks.list.parameters=max
+VMNIC.activate.parameters=correlationId
+VMNIC.deactivate.parameters=correlationId
+VMNIC.delete.parameters=async correlationId
+VMNIC.update.parameters=correlationId
+VMNICs.add.parameters=expect correlationId
+VMNICs.list.parameters=max allContent
+VMPermission.delete.parameters=async correlationId
+VMPermissions.add.parameters=expect correlationId
+VMPermissions.list.parameters=max
+VMSnapshot.delete.parameters=async correlationId
+VMSnapshot.restore.parameters=correlationId
+VMSnapshotDisk.delete.parameters=async correlationId
+VMSnapshots.add.parameters=expect correlationId
+VMSnapshots.list.parameters=max allContent
+VMStatistics.list.parameters=max
+VMTag.delete.parameters=async correlationId
+VMTags.add.parameters=expect correlationId
+VMTags.list.parameters=max
+VMVirtualNumaNode.delete.parameters=async correlationId
+VMVirtualNumaNode.update.parameters=async correlationId
+VMVirtualNumaNodes.add.parameters=expect correlationId
+VMVirtualNumaNodes.list.parameters=max
+VMWatchDog.delete.parameters=async correlationId
+VMWatchDog.update.parameters=correlationId
+VMWatchDogs.add.parameters=expect correlationId
+VMWatchDogs.list.parameters=max
+VMs.add.parameters=correlationId expect
+VMs.list.parameters=query caseSensitive max allContent
+VmPool.allocatevm.parameters=correlationId
+VmPool.delete.parameters=async correlationId
+VmPool.update.parameters=correlationId
+VmPoolPermission.delete.parameters=async correlationId
+VmPoolPermissions.add.parameters=expect correlationId
+VmPoolPermissions.list.parameters=max
+VmPools.add.parameters=expect correlationId
+VmPools.list.parameters=query caseSensitive max
+VnicProfile.delete.parameters=async correlationId
+VnicProfile.update.parameters=correlationId
+VnicProfilePermission.delete.parameters=async correlationId
+VnicProfilePermissions.add.parameters=expect correlationId
+VnicProfilePermissions.list.parameters=max
+VnicProfiles.add.parameters=expect correlationId
+VnicProfiles.list.parameters=max
diff --git a/sdk/README.md b/sdk/README.md
index 71f61a3..1cac324 100644
--- a/sdk/README.md
+++ b/sdk/README.md
@@ -74,7 +74,10 @@
 modified metadata and source files.
 
 The process will also potentially modify the `memory.properties` file
-used by the generator. Changes to this file must also be commited.
+used by the generator. Changes to this file must also be commited if the
+SDK is going to be released. If the SDK isn't going to be released then
+it isn't necessary to update the memory, as there is no commitment of
+backwards compatibility between non released versions.
 
 The commit message for this change should include a reference to the
 commit or tag of the engine that was used to download the updated


-- 
To view, visit https://gerrit.ovirt.org/42452
To unsubscribe, visit https://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I1c71aa8fb26f7f11c84b4b556245db36420c29c2
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine-sdk-java
Gerrit-Branch: master
Gerrit-Owner: Juan Hernandez <juan.hernan...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to