X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=binding%2Fmdsal-binding-dom-codec%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fmdsal%2Fbinding%2Fdom%2Fcodec%2Fimpl%2FDataContainerCodecPrototype.java;h=2a6abd3d7942472a169cdb8dfbac015303d0f5e2;hb=refs%2Fchanges%2F44%2F99844%2F1;hp=8294508bfe12f343d915775d1be6facbfe0f99ff;hpb=6dc0dbb76325cf16bc6980fe474eba00370a5703;p=mdsal.git diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataContainerCodecPrototype.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataContainerCodecPrototype.java index 8294508bfe..2a6abd3d79 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataContainerCodecPrototype.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataContainerCodecPrototype.java @@ -26,10 +26,12 @@ import org.opendaylight.yangtools.yang.model.api.AnyxmlSchemaNode; import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode; import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode; import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode; +import org.opendaylight.yangtools.yang.model.api.ContainerLike; import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.opendaylight.yangtools.yang.model.api.DocumentedNode.WithStatus; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; import org.opendaylight.yangtools.yang.model.api.ListSchemaNode; import org.opendaylight.yangtools.yang.model.api.NotificationDefinition; import org.opendaylight.yangtools.yang.model.api.SchemaContext; @@ -158,9 +160,9 @@ final class DataContainerCodecPrototype implements NodeCon return ChildAddressabilitySummary.UNADDRESSABLE; } - static DataContainerCodecPrototype rootPrototype(final CodecContextFactory factory) { - final SchemaContext schema = factory.getRuntimeContext().getEffectiveModelContext(); - final NodeIdentifier arg = NodeIdentifier.create(schema.getQName()); + static DataContainerCodecPrototype rootPrototype(final CodecContextFactory factory) { + final EffectiveModelContext schema = factory.getRuntimeContext().getEffectiveModelContext(); + final NodeIdentifier arg = NodeIdentifier.create(SchemaContext.NAME); return new DataContainerCodecPrototype<>(DataRoot.class, arg, schema, factory); } @@ -220,16 +222,16 @@ final class DataContainerCodecPrototype implements NodeCon } private @NonNull DataContainerCodecContext loadInstance() { - final DataContainerCodecContext tmp = createInstance(); - final Object witness = INSTANCE.compareAndExchangeRelease(this, null, tmp); - return witness == null ? tmp : (DataContainerCodecContext) witness; + final var tmp = createInstance(); + final var witness = (DataContainerCodecContext) INSTANCE.compareAndExchangeRelease(this, null, tmp); + return witness == null ? tmp : witness; } @SuppressWarnings({ "rawtypes", "unchecked" }) // This method must allow concurrent loading, i.e. nothing in it may have effects outside of the loaded object private @NonNull DataContainerCodecContext createInstance() { // FIXME: make protected abstract - if (schema instanceof ContainerSchemaNode) { + if (schema instanceof ContainerLike) { return new ContainerNodeCodecContext(this); } else if (schema instanceof ListSchemaNode) { return Identifiable.class.isAssignableFrom(getBindingClass()) @@ -245,6 +247,7 @@ final class DataContainerCodecPrototype implements NodeCon throw new IllegalArgumentException("Unsupported type " + getBindingClass() + " " + schema); } + // FIXME: eliminate with above createInstance() item boolean isChoice() { return schema instanceof ChoiceSchemaNode; }