Binding generator v2 - fix action #3 22/61422/1
authorJie Han <han.jie@zte.com.cn>
Mon, 17 Jul 2017 07:25:46 +0000 (15:25 +0800)
committerMartin Ciglan <martin.ciglan@pantheon.tech>
Wed, 9 Aug 2017 12:19:52 +0000 (12:19 +0000)
- Just let RPC process not throw exception when the parent is null.
  TODO: process action that the parent is null.

Change-Id: I730c7e19db6bd708dbf1693d8116bc088c45ba98
Signed-off-by: Jie Han <han.jie@zte.com.cn>
(cherry picked from commit ffd5a1f75a7f1eb930c16ba65c4c655b46db5c80)

binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/impl/RpcActionGenHelper.java

index a9b9f438c0cc89b02b3714be92581e1efa9e80ef..1a85b1ab455c05ebec062ed35545152e43893476 100644 (file)
@@ -260,29 +260,33 @@ final class RpcActionGenHelper {
         operationMethod.addParameter(inTypeInstance, "input");
 
         if (isAction) {
-            //action, routed RPC
-            checkState(parent != null, "Parent node of " + operation.getQName().getLocalName() + " can't be NULL");
-            GeneratedTypeBuilder parentType = genCtx.get(module).getChildNode(parent.getPath());
-            checkState(parentType != null, "Parent generated type for " + parent
-                    + " data schema node must have been generated already");
-            annotateDeprecatedIfNecessary(parent.getStatus(), parentType);
-
-            if (parent instanceof ListSchemaNode) {
-                //ListAction
-                GeneratedTransferObject keyType = null;
-                for (MethodSignatureBuilder method : parentType.getMethodDefinitions()) {
-                    if (method.getName().equals("getKey")) {
-                        keyType = (GeneratedTransferObject) method.toInstance(parentType).getReturnType();
+            if (parent != null) {
+                //action
+                GeneratedTypeBuilder parentType = genCtx.get(module).getChildNode(parent.getPath());
+                checkState(parentType != null, "Parent generated type for " + parent
+                        + " data schema node must have been generated already");
+                annotateDeprecatedIfNecessary(parent.getStatus(), parentType);
+
+                if (parent instanceof ListSchemaNode) {
+                    //ListAction
+                    GeneratedTransferObject keyType = null;
+                    for (MethodSignatureBuilder method : parentType.getMethodDefinitions()) {
+                        if (method.getName().equals("getKey")) {
+                            keyType = (GeneratedTransferObject) method.toInstance(parentType).getReturnType();
+                        }
                     }
-                }
 
-                operationMethod.addParameter(
-                        parameterizedTypeFor(KEYED_INSTANCE_IDENTIFIER, parentType, keyType), "kii");
-                interfaceBuilder.addImplementsType(parameterizedTypeFor(LIST_ACTION, parentType, inType, outType));
+                    operationMethod.addParameter(
+                            parameterizedTypeFor(KEYED_INSTANCE_IDENTIFIER, parentType, keyType), "kii");
+                    interfaceBuilder.addImplementsType(parameterizedTypeFor(LIST_ACTION, parentType, inType, outType));
+                } else {
+                    //Action
+                    operationMethod.addParameter(parameterizedTypeFor(INSTANCE_IDENTIFIER, parentType), "ii");
+                    interfaceBuilder.addImplementsType(parameterizedTypeFor(ACTION, parentType, inType, outType));
+                }
             } else {
-                //Action
-                operationMethod.addParameter(parameterizedTypeFor(INSTANCE_IDENTIFIER, parentType), "ii");
-                interfaceBuilder.addImplementsType(parameterizedTypeFor(ACTION, parentType, inType, outType));
+                //TODO:routed RPC
+                throw new UnsupportedOperationException("Not implemented yet.");
             }
         } else {
             //RPC