X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=binding%2Fmdsal-binding-generator%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fmdsal%2Fbinding%2Fgenerator%2Fimpl%2Freactor%2FLeafListGenerator.java;h=aa6263a192696b724237e364020118151b64c883;hb=refs%2Fchanges%2F22%2F100122%2F11;hp=f20ad882aa49fca638dc9ce408b9cace0ecd1bff;hpb=314a6573772c8593feecb69210357b193184e3be;p=mdsal.git diff --git a/binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/LeafListGenerator.java b/binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/LeafListGenerator.java index f20ad882aa..aa6263a192 100644 --- a/binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/LeafListGenerator.java +++ b/binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/LeafListGenerator.java @@ -7,17 +7,19 @@ */ package org.opendaylight.mdsal.binding.generator.impl.reactor; +import org.opendaylight.mdsal.binding.generator.impl.rt.DefaultLeafListRuntimeType; import org.opendaylight.mdsal.binding.model.api.Type; import org.opendaylight.mdsal.binding.model.ri.Types; +import org.opendaylight.mdsal.binding.runtime.api.LeafListRuntimeType; import org.opendaylight.yangtools.yang.common.Ordering; import org.opendaylight.yangtools.yang.model.api.stmt.LeafListEffectiveStatement; -import org.opendaylight.yangtools.yang.model.api.stmt.OrderedByEffectiveStatement; /** * Generator corresponding to a {@code leaf-list} statement. */ -final class LeafListGenerator extends AbstractTypeAwareGenerator { - LeafListGenerator(final LeafListEffectiveStatement statement, final AbstractCompositeGenerator parent) { +final class LeafListGenerator + extends AbstractTypeAwareGenerator { + LeafListGenerator(final LeafListEffectiveStatement statement, final AbstractCompositeGenerator parent) { super(statement, parent); } @@ -27,15 +29,21 @@ final class LeafListGenerator extends AbstractTypeAwareGenerator, we will try to narrow the return type in subclasses. final Type type = super.methodReturnType(builderFactory); final boolean isObject = Types.objectType().equals(type); - final Ordering ordering = statement().findFirstEffectiveSubstatementArgument(OrderedByEffectiveStatement.class) - .orElse(Ordering.SYSTEM); - switch (ordering) { - case SYSTEM: - return isObject ? Types.setTypeWildcard() : Types.setTypeFor(type); - case USER: - return isObject ? Types.listTypeWildcard() : Types.listTypeFor(type); - default: - throw new IllegalStateException("Unexpected ordering " + ordering); + + if (statement().ordering() == Ordering.SYSTEM) { + return isObject ? Types.setTypeWildcard() : Types.setTypeFor(type); } + return isObject ? Types.listTypeWildcard() : Types.listTypeFor(type); + } + + @Override + LeafListRuntimeType createExternalRuntimeType(final Type type) { + return new DefaultLeafListRuntimeType(type, statement()); + } + + @Override + LeafListRuntimeType createInternalRuntimeType(final ChildLookup lookup, final LeafListEffectiveStatement statement, + final Type type) { + return new DefaultLeafListRuntimeType(type, statement); } }