X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=binding%2Fmdsal-binding-generator%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fmdsal%2Fbinding%2Fgenerator%2Fimpl%2Freactor%2FOpaqueObjectGenerator.java;h=63564ce2f621105e56dede5f9434625890fd83c1;hb=ecdcdb340457ded6898193197e88ea33c84d58ae;hp=f020779dca5b6b679a5245ab53823f4f6b2ce3d8;hpb=60039d4d027e172f6e1d644fb1c2fa60688c06c0;p=mdsal.git diff --git a/binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/OpaqueObjectGenerator.java b/binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/OpaqueObjectGenerator.java index f020779dca..63564ce2f6 100644 --- a/binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/OpaqueObjectGenerator.java +++ b/binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/OpaqueObjectGenerator.java @@ -7,27 +7,60 @@ */ package org.opendaylight.mdsal.binding.generator.impl.reactor; -import org.opendaylight.mdsal.binding.generator.impl.tree.SchemaTreeChild; +import org.opendaylight.mdsal.binding.generator.impl.rt.DefaultAnydataRuntimeType; +import org.opendaylight.mdsal.binding.generator.impl.rt.DefaultAnyxmlRuntimeType; import org.opendaylight.mdsal.binding.model.api.GeneratedType; import org.opendaylight.mdsal.binding.model.api.Type; import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTypeBuilder; import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTypeBuilderBase; import org.opendaylight.mdsal.binding.model.ri.BindingTypes; +import org.opendaylight.mdsal.binding.runtime.api.AnydataRuntimeType; +import org.opendaylight.mdsal.binding.runtime.api.AnyxmlRuntimeType; +import org.opendaylight.mdsal.binding.runtime.api.OpaqueRuntimeType; +import org.opendaylight.yangtools.yang.model.api.stmt.AnydataEffectiveStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.AnyxmlEffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.DataTreeEffectiveStatement; import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack; /** * Common generator for {@code anydata} and {@code anyxml}. */ -final class OpaqueObjectGenerator> extends AbstractExplicitGenerator - implements SchemaTreeChild> { - OpaqueObjectGenerator(final T statement, final AbstractCompositeGenerator parent) { - super(statement, parent); +abstract class OpaqueObjectGenerator, R extends OpaqueRuntimeType> + extends AbstractExplicitGenerator { + static final class Anydata extends OpaqueObjectGenerator { + Anydata(final AnydataEffectiveStatement statement, final AbstractCompositeGenerator parent) { + super(statement, parent); + } + + @Override + AnydataRuntimeType createRuntimeType() { + return generatedType().map(type -> new DefaultAnydataRuntimeType(type, statement())).orElse(null); + } + + @Override + AnydataRuntimeType rebaseRuntimeType(final AnydataRuntimeType type, final AnydataEffectiveStatement statement) { + return new DefaultAnydataRuntimeType(type.javaType(), statement); + } } - @Override - public OpaqueObjectGenerator generator() { - return this; + static final class Anyxml extends OpaqueObjectGenerator { + Anyxml(final AnyxmlEffectiveStatement statement, final AbstractCompositeGenerator parent) { + super(statement, parent); + } + + @Override + AnyxmlRuntimeType createRuntimeType() { + return generatedType().map(type -> new DefaultAnyxmlRuntimeType(type, statement())).orElse(null); + } + + @Override + AnyxmlRuntimeType rebaseRuntimeType(final AnyxmlRuntimeType type, final AnyxmlEffectiveStatement statement) { + return new DefaultAnyxmlRuntimeType(type.javaType(), statement); + } + } + + OpaqueObjectGenerator(final S statement, final AbstractCompositeGenerator parent) { + super(statement, parent); } @Override