X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=binding%2Fmdsal-binding-generator-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fsal%2Fbinding%2Fgenerator%2Fimpl%2FBindingGeneratorImpl.java;h=c485d01a87306170cc51a496354898ad4d2e1957;hb=e54d13bf867f7f7ff392b5746f028a6743717417;hp=8ae66d0d0b6ccb1090f5b222ee5592c2650190f7;hpb=abb67fcf38fdf119522795cc8adab2c265216daf;p=mdsal.git diff --git a/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/yangtools/sal/binding/generator/impl/BindingGeneratorImpl.java b/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/yangtools/sal/binding/generator/impl/BindingGeneratorImpl.java index 8ae66d0d0b..c485d01a87 100644 --- a/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/yangtools/sal/binding/generator/impl/BindingGeneratorImpl.java +++ b/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/yangtools/sal/binding/generator/impl/BindingGeneratorImpl.java @@ -100,6 +100,8 @@ import org.opendaylight.yangtools.yang.model.api.Status; 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; @@ -512,7 +514,9 @@ public class BindingGeneratorImpl implements BindingGenerator { final ContainerSchemaNode input = rpc.getInput(); final ContainerSchemaNode output = rpc.getOutput(); - if (input != null) { + //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); @@ -525,7 +529,9 @@ public class BindingGeneratorImpl implements BindingGenerator { } Type outTypeInstance = VOID; - if (output != null) { + //in case of implicit RPC output (StatementSource.CONTEXT), + //stay compatible (Future> return type generated) + if (output != null && isExplicitStatement(output)) { final GeneratedTypeBuilder outType = addRawInterfaceDefinition(basePackageName, output, rpcName); addImplementedInterfaceFromUses(output, outType); outType.addImplementsType(DATA_OBJECT); @@ -545,6 +551,11 @@ public class BindingGeneratorImpl implements BindingGenerator { genCtx.get(module).addTopLevelNodeType(interfaceBuilder); } + private static boolean isExplicitStatement(ContainerSchemaNode node) { + return node instanceof EffectiveStatement + && ((EffectiveStatement) node).getDeclared().getStatementSource() == StatementSource.DECLARATION; + } + /** * Converts all notifications of the module to the list of * Type objects. In addition are to this list added containers