Generate bindingToString() and use it in generated implementations
[mdsal.git] / binding / mdsal-binding-generator-impl / src / main / java / org / opendaylight / mdsal / binding / generator / impl / AbstractTypeGenerator.java
index 036a192b767690f38235064462470d9a43df37ba..ff1197b8e8c0239ade7785de4b68adda8892a328 100644 (file)
@@ -291,7 +291,7 @@ abstract class AbstractTypeGenerator {
             return null;
         }
         final GeneratedTypeBuilder genType = addDefaultInterfaceDefinition(context, node, baseInterface);
-        defaultImplementedInterace(genType);
+        addConcreteInterfaceMethods(genType);
         annotateDeprecatedIfNecessary(node, genType);
 
         final Module module = context.module();
@@ -571,7 +571,7 @@ abstract class AbstractTypeGenerator {
         addImplementedInterfaceFromUses(schema, outType);
         outType.addImplementsType(type);
         outType.addImplementsType(augmentable(outType));
-        defaultImplementedInterace(outType);
+        addConcreteInterfaceMethods(outType);
         annotateDeprecatedIfNecessary(rpc, outType);
         resolveDataSchemaNodes(context, outType, outType, schema.getChildNodes(), false);
         context.addChildNodeType(schema, outType);
@@ -611,7 +611,7 @@ abstract class AbstractTypeGenerator {
 
                 final GeneratedTypeBuilder notificationInterface = addDefaultInterfaceDefinition(
                     context.modulePackageName(), notification, DATA_OBJECT, context);
-                defaultImplementedInterace(notificationInterface);
+                addConcreteInterfaceMethods(notificationInterface);
                 annotateDeprecatedIfNecessary(notification, notificationInterface);
                 notificationInterface.addImplementsType(NOTIFICATION);
                 context.addChildNodeType(notification, notificationInterface);
@@ -652,7 +652,7 @@ abstract class AbstractTypeGenerator {
 
             final GeneratedTypeBuilder notifInterface = addDefaultInterfaceDefinition(
                 packageNameForGeneratedType(context.modulePackageName(), notif.getPath()), notif, DATA_OBJECT, context);
-            defaultImplementedInterace(notifInterface);
+            addConcreteInterfaceMethods(notifInterface);
             annotateDeprecatedIfNecessary(notif, notifInterface);
 
             notifInterface.addImplementsType(keyType != null ? keyedListNotification(notifInterface, parent, keyType)
@@ -1020,7 +1020,7 @@ abstract class AbstractTypeGenerator {
             JavaTypeName.create(augmentPackageName, augTypeName));
 
         augTypeBuilder.addImplementsType(augmentation(targetTypeRef));
-        defaultImplementedInterace(augTypeBuilder);
+        addConcreteInterfaceMethods(augTypeBuilder);
 
         annotateDeprecatedIfNecessary(augSchema, augTypeBuilder);
         addImplementedInterfaceFromUses(augSchema, augTypeBuilder);
@@ -1233,7 +1233,7 @@ abstract class AbstractTypeGenerator {
             if (caseNode != null && !caseNode.isAddedByUses() && !caseNode.isAugmenting()) {
                 final GeneratedTypeBuilder caseTypeBuilder = addDefaultInterfaceDefinition(context, caseNode);
                 caseTypeBuilder.addImplementsType(refChoiceType);
-                defaultImplementedInterace(caseTypeBuilder);
+                addConcreteInterfaceMethods(caseTypeBuilder);
                 annotateDeprecatedIfNecessary(caseNode, caseTypeBuilder);
                 context.addCaseType(caseNode.getPath(), caseTypeBuilder);
                 context.addChoiceToCaseMapping(refChoiceType, caseTypeBuilder, caseNode);
@@ -1313,7 +1313,7 @@ abstract class AbstractTypeGenerator {
             if (caseNode != null) {
                 final GeneratedTypeBuilder caseTypeBuilder = addDefaultInterfaceDefinition(context, caseNode);
                 caseTypeBuilder.addImplementsType(targetType);
-                defaultImplementedInterace(caseTypeBuilder);
+                addConcreteInterfaceMethods(caseTypeBuilder);
 
                 CaseSchemaNode node = null;
                 final String caseLocalName = caseNode.getQName().getLocalName();
@@ -2056,6 +2056,15 @@ abstract class AbstractTypeGenerator {
         }
     }
 
+    private static void addConcreteInterfaceMethods(final GeneratedTypeBuilder typeBuilder) {
+        defaultImplementedInterace(typeBuilder);
+
+        typeBuilder.addMethod(BindingMapping.BINDING_TO_STRING_NAME)
+            .setAccessModifier(AccessModifier.PUBLIC)
+            .setStatic(true)
+            .setReturnType(STRING);
+    }
+
     private static void narrowImplementedInterface(final GeneratedTypeBuilder typeBuilder) {
         defineImplementedInterfaceMethod(typeBuilder, wildcardTypeFor(typeBuilder.getIdentifier()));
     }