Added sorting of constructor arguments. 46/1646/1
authorMartin Vitez <mvitez@cisco.com>
Thu, 3 Oct 2013 13:36:46 +0000 (15:36 +0200)
committerMartin Vitez <mvitez@cisco.com>
Thu, 3 Oct 2013 13:36:46 +0000 (15:36 +0200)
Fix for Bug 101.

Signed-off-by: Martin Vitez <mvitez@cisco.com>
code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/ClassTemplate.xtend
code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/PropertyComparator.java [new file with mode: 0644]
code-generator/binding-java-api-generator/src/test/java/org/opendaylight/yangtools/sal/java/api/generator/test/ClassCodeGeneratorTest.java

index 4869c3f847ba7dba2ade9eea1b89bf770bd49408..700e6f87b1253f0e80594476c13012a237c19bb0 100644 (file)
@@ -7,7 +7,8 @@ import org.opendaylight.yangtools.sal.binding.model.api.Enumeration
 import org.opendaylight.yangtools.sal.binding.model.api.GeneratedProperty\r
 import org.opendaylight.yangtools.sal.binding.model.api.GeneratedTransferObject\r
 import org.opendaylight.yangtools.sal.binding.model.api.GeneratedType\r
-\r
+import java.util.ArrayList\r
+import java.util.Collections\r
 \r
 /**\r
  * Template for generating JAVA class. \r
@@ -36,7 +37,7 @@ class ClassTemplate extends BaseTemplate {
     \r
     \r
     protected val GeneratedTransferObject genTO;\r
-    \r
+\r
     /**\r
      * Creates instance of this class with concrete <code>genType</code>.\r
      * \r
@@ -48,7 +49,13 @@ class ClassTemplate extends BaseTemplate {
         this.properties = genType.properties\r
         this.finalProperties = GeneratorUtil.resolveReadOnlyPropertiesFromTO(genTO.properties)\r
         this.parentProperties = GeneratorUtil.getPropertiesOfAllParents(genTO)\r
-        this.allProperties = properties + parentProperties\r
+\r
+        var List<GeneratedProperty> sorted = new ArrayList<GeneratedProperty>();\r
+        sorted.addAll(properties);\r
+        sorted.addAll(parentProperties);\r
+        Collections.sort(sorted, new PropertyComparator());\r
+        \r
+        this.allProperties = sorted\r
         this.enums = genType.enumerations\r
         this.consts = genType.constantDefinitions\r
         this.enclosedGeneratedTypes = genType.enclosedTypes\r
diff --git a/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/PropertyComparator.java b/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/PropertyComparator.java
new file mode 100644 (file)
index 0000000..ec73673
--- /dev/null
@@ -0,0 +1,21 @@
+/*
+ * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.yangtools.sal.java.api.generator;
+
+import java.util.Comparator;
+
+import org.opendaylight.yangtools.sal.binding.model.api.GeneratedProperty;
+
+public class PropertyComparator implements Comparator<GeneratedProperty> {
+
+    @Override
+    public int compare(GeneratedProperty p1, GeneratedProperty p2) {
+        return p1.getName().compareTo(p2.getName());
+    }
+
+}
index 86d7c413c17c573f2a74ce0d9562f1e546aa1505..60b732ae706b59f6890c8ce53262b0a20c5398ae 100644 (file)
@@ -77,9 +77,7 @@ public class ClassCodeGeneratorTest {
                     final String outputStr = clsGen.generate(genTO);\r
 \r
                     assertNotNull(outputStr);\r
-                    assertTrue(outputStr\r
-                            .contains("public CompositeKeyListKey(String _Key2, "\r
-                                    + "Byte _Key1)"));\r
+                    assertTrue(outputStr.contains("public CompositeKeyListKey(Byte _Key1, String _Key2)"));\r
 \r
                     assertEquals(2, propertyCount);\r
                     genTOsCount++;\r