Code generator prototype - Binding specification v2 12/55912/2
authorMartin Ciglan <mciglan@cisco.com>
Mon, 24 Apr 2017 11:35:26 +0000 (13:35 +0200)
committerRobert Varga <nite@hq.sk>
Mon, 24 Apr 2017 17:33:05 +0000 (17:33 +0000)
- fixes compilability in case of generated Java interfaces
- bit of a code clean-up

Change-Id: Ic8986733dea8fca60024c0a3639d2fd651ab16a0
Signed-off-by: Martin Ciglan <mciglan@cisco.com>
(cherry picked from commit 295af9be6152125183a1dc2ab73c99acafe879d4)

binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/impl/GenHelperUtil.java
binding2/mdsal-binding2-generator-util/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/util/BindingTypes.java
binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/renderers/BaseRenderer.java
binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/renderers/InterfaceRenderer.java

index df05610c04bd14aa0e126c3f5babd6cf32ab175e..1e82d6e24bfce93d246794c76cdace5fb143e67e 100644 (file)
@@ -24,6 +24,7 @@ import static org.opendaylight.mdsal.binding.javav2.generator.util.BindingGenera
 import static org.opendaylight.mdsal.binding.javav2.generator.util.BindingGeneratorUtil.encodeAngleBrackets;
 import static org.opendaylight.mdsal.binding.javav2.generator.util.BindingGeneratorUtil.packageNameForGeneratedType;
 import static org.opendaylight.mdsal.binding.javav2.generator.util.BindingTypes.NOTIFICATION;
+import static org.opendaylight.mdsal.binding.javav2.generator.util.Types.parameterizedTypeFor;
 import static org.opendaylight.yangtools.yang.model.util.SchemaContextUtil.findParentModule;
 
 import com.google.common.annotations.Beta;
@@ -389,8 +390,15 @@ final class GenHelperUtil {
         if (parent == null) {
             it.addImplementsType(BindingTypes.TREE_NODE);
         } else {
-            it.addImplementsType(BindingTypes.treeChildNode(parent));
+            if (parent instanceof ListSchemaNode) {
+                it.addImplementsType(parameterizedTypeFor(BindingTypes.TREE_CHILD_NODE, parent, parameterizedTypeFor
+                        (BindingTypes.IDENTIFIABLE_ITEM, parent)));
+            } else {
+                it.addImplementsType(parameterizedTypeFor(BindingTypes.TREE_CHILD_NODE, parent, parameterizedTypeFor
+                        (BindingTypes.ITEM, parent)));
+            }
         }
+
         if (!(schemaNode instanceof GroupingDefinition)) {
             it.addImplementsType(BindingTypes.augmentable(it));
         }
index d8aca39eb5a4daf9e3cbfce2c6e54ffda07a0347..09328e26c292eb517968ffd4e55798f6937ef89e 100644 (file)
@@ -20,6 +20,7 @@ import org.opendaylight.mdsal.binding.javav2.spec.base.IdentifiableItem;
 import org.opendaylight.mdsal.binding.javav2.spec.base.Input;
 import org.opendaylight.mdsal.binding.javav2.spec.base.InstanceIdentifier;
 import org.opendaylight.mdsal.binding.javav2.spec.base.Instantiable;
+import org.opendaylight.mdsal.binding.javav2.spec.base.Item;
 import org.opendaylight.mdsal.binding.javav2.spec.base.KeyedInstanceIdentifier;
 import org.opendaylight.mdsal.binding.javav2.spec.base.ListAction;
 import org.opendaylight.mdsal.binding.javav2.spec.base.Notification;
@@ -43,6 +44,7 @@ public final class BindingTypes {
     public static final ConcreteType INPUT = typeForClass(Input.class);
     public static final ConcreteType INSTANCE_IDENTIFIER = typeForClass(InstanceIdentifier.class);
     public static final ConcreteType INSTANTIABLE = typeForClass(Instantiable.class);
+    public static final ConcreteType ITEM = typeForClass(Item.class);
     public static final ConcreteType KEYED_INSTANCE_IDENTIFIER = typeForClass(KeyedInstanceIdentifier.class);
     public static final ConcreteType LIST_ACTION = typeForClass(ListAction.class);
     public static final ConcreteType NOTIFICATION = typeForClass(Notification.class);
@@ -52,8 +54,7 @@ public final class BindingTypes {
     public static final ConcreteType RPC_CALLBACK = typeForClass(RpcCallback.class);
     public static final ConcreteType TREE_NODE = typeForClass(TreeNode.class);
     public static final ConcreteType TREE_ROOT = typeForClass(TreeRoot.class);
-
-    private static final ConcreteType TREE_CHILD_NODE = typeForClass(TreeChildNode.class);
+    public static final ConcreteType TREE_CHILD_NODE = typeForClass(TreeChildNode.class);
 
     private BindingTypes() {
         throw new UnsupportedOperationException("Utility class");
@@ -62,9 +63,4 @@ public final class BindingTypes {
     public static ParameterizedType augmentable(Type t) {
         return parameterizedTypeFor(AUGMENTABLE, t);
     }
-
-    public static ParameterizedType treeChildNode(Type t) {
-        return parameterizedTypeFor(TREE_CHILD_NODE, t);
-    }
-
 }
index 434572c354602f44101be97d940f7b30c5f79498..41d3d81323dc13343f3e105e666ad4286f198a2c 100644 (file)
@@ -84,7 +84,7 @@ public abstract class BaseRenderer {
         final StringBuilder sb = new StringBuilder();
         sb.append("package ")
                 .append(type.getPackageName())
-                .append(";\n");
+                .append(";\n\n");
         return sb.toString();
     }
 
index 565a2571d2547643351259455f206bc6d900c5a2..c3e66d97debfcd9a63162e9521c20dabc680d16c 100644 (file)
@@ -135,6 +135,6 @@ public class InterfaceRenderer extends BaseRenderer {
             strings.add(importedName(parameter));
         }
 
-        return String.join(",", strings);
+        return String.join(", ", strings);
     }
 }
\ No newline at end of file