- corresponding fix for MD-SAL
- rely on yang model API only
Change-Id: I7380b7d8366c4c18925da09a95a14f5309a8e9ef
Signed-off-by: Martin Ciglan <mciglan@cisco.com>
(cherry picked from commit
cca0a276d2e55ccc92bd1c3e4e51bffb29d482c6)
import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
import org.opendaylight.yangtools.yang.model.api.UsesNode;
import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
import org.opendaylight.yangtools.yang.model.api.UsesNode;
+import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
+import org.opendaylight.yangtools.yang.model.api.meta.StatementSource;
import org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.UnionTypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.UnionTypeDefinition;
final ContainerSchemaNode input = rpc.getInput();
final ContainerSchemaNode output = rpc.getOutput();
final ContainerSchemaNode input = rpc.getInput();
final ContainerSchemaNode output = rpc.getOutput();
+ //in case of implicit RPC input (StatementSource.CONTEXT),
+ // stay compatible (no input argument generated)
+ if (input != null && isExplicitStatement(input)) {
final GeneratedTypeBuilder inType = addRawInterfaceDefinition(basePackageName, input, rpcName);
addImplementedInterfaceFromUses(input, inType);
inType.addImplementsType(DATA_OBJECT);
final GeneratedTypeBuilder inType = addRawInterfaceDefinition(basePackageName, input, rpcName);
addImplementedInterfaceFromUses(input, inType);
inType.addImplementsType(DATA_OBJECT);
}
Type outTypeInstance = VOID;
}
Type outTypeInstance = VOID;
+ //in case of implicit RPC output (StatementSource.CONTEXT),
+ //stay compatible (Future<RpcResult<Void>> return type generated)
+ if (output != null && isExplicitStatement(output)) {
final GeneratedTypeBuilder outType = addRawInterfaceDefinition(basePackageName, output, rpcName);
addImplementedInterfaceFromUses(output, outType);
outType.addImplementsType(DATA_OBJECT);
final GeneratedTypeBuilder outType = addRawInterfaceDefinition(basePackageName, output, rpcName);
addImplementedInterfaceFromUses(output, outType);
outType.addImplementsType(DATA_OBJECT);
genCtx.get(module).addTopLevelNodeType(interfaceBuilder);
}
genCtx.get(module).addTopLevelNodeType(interfaceBuilder);
}
+ private static boolean isExplicitStatement(ContainerSchemaNode node) {
+ return node instanceof EffectiveStatement
+ && ((EffectiveStatement) node).getDeclared().getStatementSource() == StatementSource.DECLARATION;
+ }
+
/**
* Converts all <b>notifications</b> of the module to the list of
* <code>Type</code> objects. In addition are to this list added containers
/**
* Converts all <b>notifications</b> of the module to the list of
* <code>Type</code> objects. In addition are to this list added containers