Juan Hernandez has uploaded a new change for review.

Change subject: codegen: Sort class members alphabetically
......................................................................

codegen: Sort class members alphabetically

Currently the code generator doesn't sort the class members in any
particular order. This means that each time the code is re-generated
things will potentially be in a different order, making it difficult to
visually analyze the changes (with the "diff" tool, for example). To
avoid this issue this patch changes the generator so that class members
will be sorted alphabetically.

Change-Id: I59940162b7fad175bd0bce7585f43cac65acb78a
Signed-off-by: Juan Hernandez <juan.hernan...@redhat.com>
---
M 
ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/holders/ResourceHolder.java
M 
ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/rsdl/ApiCodegen.java
2 files changed, 68 insertions(+), 35 deletions(-)


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

diff --git 
a/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/holders/ResourceHolder.java
 
b/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/holders/ResourceHolder.java
index 8a19e99..6e6e599 100644
--- 
a/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/holders/ResourceHolder.java
+++ 
b/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/holders/ResourceHolder.java
@@ -22,6 +22,11 @@
 import org.ovirt.engine.sdk.codegen.templates.VariableTemplate;
 import org.ovirt.engine.sdk.codegen.utils.StringUtils;
 
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
 /**
  * Holds sub-resources
  */
@@ -73,16 +78,19 @@
      */
     @Override
     String getSubCollectionsGetters() {
-        StringBuffer subCollectionGetters = new StringBuffer();
+        StringBuilder buffer = new StringBuilder();
 
-        for (CollectionHolder ch : this.getSubcollections().values()) {
-            subCollectionGetters.append(
-                            
this.subCollectionGetterTemplate.getTemplate(ch.getName(),
-                                    StringUtils.toLowerCase(ch.getName()),
-                                    ch.getPublicCollectionName()));
+        Map<String, CollectionHolder> subCollections = getSubcollections();
+        List<String> keys = new ArrayList<>(subCollections.keySet());
+        Collections.sort(keys);
+
+        for (String key : keys) {
+            CollectionHolder ch = subCollections.get(key);
+            
buffer.append(subCollectionGetterTemplate.getTemplate(ch.getName(), 
StringUtils.toLowerCase(ch.getName()),
+                    ch.getPublicCollectionName()));
         }
 
-        return subCollectionGetters.toString();
+        return buffer.toString();
     }
 
     /**
@@ -90,14 +98,17 @@
      */
     @Override
     String getSubCollectionsVariables() {
-        StringBuffer subCollectionVariables = new StringBuffer();
+        StringBuilder buffer = new StringBuilder();
 
-        for (CollectionHolder ch : this.getSubcollections().values()) {
-            subCollectionVariables.append(
-                            this.variableTemplate.getTemplate(ch.getName(),
-                                    StringUtils.toLowerCase(ch.getName())));
+        Map<String, CollectionHolder> subCollections = getSubcollections();
+        List<String> keys = new ArrayList<>(subCollections.keySet());
+        Collections.sort(keys);
+
+        for (String key : keys) {
+            CollectionHolder ch = subCollections.get(key);
+            buffer.append(variableTemplate.getTemplate(ch.getName(), 
StringUtils.toLowerCase(ch.getName())));
         }
 
-        return subCollectionVariables.toString();
+        return buffer.toString();
     }
 }
diff --git 
a/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/rsdl/ApiCodegen.java
 
b/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/rsdl/ApiCodegen.java
index d81e93d..b5f4dbc 100644
--- 
a/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/rsdl/ApiCodegen.java
+++ 
b/ovirt-engine-sdk-java-codegen/src/main/java/org/ovirt/engine/sdk/codegen/rsdl/ApiCodegen.java
@@ -18,6 +18,10 @@
 
 import java.io.IOException;
 import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import javax.xml.bind.JAXBException;
@@ -108,61 +112,79 @@
      * @throws IOException
      */
     private String produceRootMethods() throws IOException {
-        String rootMethods = "";
-
         String[] exceptions =
                 new String[] { "Actions", "Href", "Links", "ExtensionType",
                         "CreationStatus", "Id", "Name", "Description", "Class" 
};
 
         String[] staticMethods = new String[] { "SpecialObjects", 
"ProductInfo" };
 
+        Map<String, String> methods = new HashMap<>();
         for (Method method : API.class.getMethods()) {
             String simpleMethodName = method.getName().replace("get", "");
             if (method.getName().startsWith("get")
                     && !ArrayUtils.contains(exceptions, simpleMethodName)) {
+                String code;
                 if (ArrayUtils.contains(staticMethods, simpleMethodName)) { // 
static methods
-                    rootMethods +=
-                            
this.rootResourceStaticTemplate.getTemplate(method.getName(), 
method.getReturnType()
-                                    .getSimpleName(), 
method.getReturnType().getPackage().getName(), simpleMethodName);
+                    code = 
rootResourceStaticTemplate.getTemplate(method.getName(),
+                            method.getReturnType().getSimpleName(), 
method.getReturnType().getPackage().getName(),
+                            simpleMethodName);
                 } else { // dynamic methods
-                    rootMethods +=
-                            
this.rootResourceDynamicTemplate.getTemplate(method.getName(), 
method.getReturnType()
-                                    .getSimpleName(), 
method.getReturnType().getPackage().getName(), simpleMethodName);
+                    code = 
rootResourceDynamicTemplate.getTemplate(method.getName(),
+                            method.getReturnType().getSimpleName(), 
method.getReturnType().getPackage().getName(),
+                            simpleMethodName);
                 }
+                methods.put(simpleMethodName, code);
             }
         }
-        return rootMethods;
+
+        List<String> keys = new ArrayList<>(methods.size());
+        keys.addAll(methods.keySet());
+        Collections.sort(keys);
+
+        StringBuilder buffer = new StringBuilder();
+        for (String key : keys) {
+            buffer.append(methods.get(key));
+        }
+        return buffer.toString();
     }
 
     /**
      * @return root-collection/s getter/s
      */
     private String produceCollectionGetters() {
-        StringBuffer subCollectionGetters = new StringBuffer();
+        StringBuilder buffer = new StringBuilder();
 
-        for (CollectionHolder ch : this.collectionsHolder.values()) {
-            subCollectionGetters.append(
-                    this.collectionGetterTemplate.getTemplate(ch.getName(),
-                            StringUtils.toLowerCase(ch.getName()),
-                            ch.getPublicCollectionName()));
+        List<String> keys = new ArrayList<>(collectionsHolder.size());
+        keys.addAll(collectionsHolder.keySet());
+        Collections.sort(keys);
+
+        for (String key : keys) {
+            CollectionHolder ch = collectionsHolder.get(key);
+            String name = ch.getName();
+            String publicName = ch.getPublicCollectionName();
+            buffer.append(collectionGetterTemplate.getTemplate(name, 
StringUtils.toLowerCase(name), publicName));
         }
 
-        return subCollectionGetters.toString();
+        return buffer.toString();
     }
 
     /**
      * @return root-collection/s variable/s
      */
     private String produceCollectionVariables() {
-        StringBuffer subCollectionVariables = new StringBuffer();
+        StringBuilder buffer = new StringBuilder();
 
-        for (CollectionHolder ch : this.collectionsHolder.values()) {
-            subCollectionVariables.append(
-                    this.variableTemplate.getTemplate(ch.getName(),
-                            StringUtils.toLowerCase(ch.getName())));
+        List<String> keys = new ArrayList<>(collectionsHolder.size());
+        keys.addAll(collectionsHolder.keySet());
+        Collections.sort(keys);
+
+        for (String key : keys) {
+            CollectionHolder ch = collectionsHolder.get(key);
+            String name = ch.getName();
+            buffer.append(variableTemplate.getTemplate(name, 
StringUtils.toLowerCase(name)));
         }
 
-        return subCollectionVariables.toString();
+        return buffer.toString();
     }
 
     /**


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I59940162b7fad175bd0bce7585f43cac65acb78a
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