Fix actions in keyed lists
[mdsal.git] / binding / mdsal-binding-generator-impl / src / main / java / org / opendaylight / mdsal / binding / generator / impl / AbstractTypeGenerator.java
index 907eba6d20938d1346b0c21f505a6f3f73e64033..a70b7cf95951ae83ac301c6ae8c7fcf234f14a13 100644 (file)
@@ -29,6 +29,7 @@ import static org.opendaylight.mdsal.binding.model.util.BindingTypes.childOf;
 import static org.opendaylight.mdsal.binding.model.util.BindingTypes.choiceIn;
 import static org.opendaylight.mdsal.binding.model.util.BindingTypes.identifiable;
 import static org.opendaylight.mdsal.binding.model.util.BindingTypes.identifier;
+import static org.opendaylight.mdsal.binding.model.util.BindingTypes.keyedListAction;
 import static org.opendaylight.mdsal.binding.model.util.BindingTypes.rpcResult;
 import static org.opendaylight.mdsal.binding.model.util.Types.BOOLEAN;
 import static org.opendaylight.mdsal.binding.model.util.Types.listTypeFor;
@@ -285,7 +286,7 @@ abstract class AbstractTypeGenerator {
         if (genType != null) {
             constructGetter(parent, genType, node);
             resolveDataSchemaNodes(context, genType, genType, node.getChildNodes());
-            actionsToGenType(context, genType, node);
+            actionsToGenType(context, genType, node, null);
         }
     }
 
@@ -303,8 +304,8 @@ abstract class AbstractTypeGenerator {
                 genTOBuilder.addImplementsType(identifierMarker);
                 genType.addImplementsType(identifiableMarker);
 
-                actionsToGenType(context, genTOBuilder, node);
             }
+            actionsToGenType(context, genType, node, genTOBuilder);
 
             for (final DataSchemaNode schemaNode : node.getChildNodes()) {
                 if (!schemaNode.isAugmenting()) {
@@ -404,7 +405,7 @@ abstract class AbstractTypeGenerator {
     }
 
     private <T extends DataNodeContainer & ActionNodeContainer> void actionsToGenType(final ModuleContext context,
-            final Type parent, final T parentSchema) {
+            final Type parent, final T parentSchema, final Type keyType) {
         for (final ActionDefinition action : parentSchema.getActions()) {
             final GeneratedType input;
             final GeneratedType output;
@@ -429,7 +430,8 @@ abstract class AbstractTypeGenerator {
                     BindingMapping.MODULE_INFO_CLASS_NAME), qname.getLocalName());
 
                 annotateDeprecatedIfNecessary(action.getStatus(), builder);
-                builder.addImplementsType(action(parent, input, output));
+                builder.addImplementsType(keyType != null ? keyedListAction(parent, keyType, input, output)
+                        : action(parent, input, output));
 
                 addCodegenInformation(builder, context.module(), action);
                 context.addChildNodeType(action, builder);
@@ -669,7 +671,7 @@ abstract class AbstractTypeGenerator {
             resolveDataSchemaNodes(context, genType, genType, grouping.getChildNodes());
             groupingsToGenTypes(context, grouping.getGroupings());
             processUsesAugments(grouping, context);
-            actionsToGenType(context, genType, grouping);
+            actionsToGenType(context, genType, grouping, null);
         }
     }