From: Robert Varga Date: Fri, 21 Jul 2023 09:07:29 +0000 (+0200) Subject: Reduce use of yang.model.api X-Git-Tag: v12.0.0~96 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=4f1fee0946f93c6b39afd74585cfd5d1ef99dce0;p=yangtools.git Reduce use of yang.model.api AbstractModuleStringInstanceIdentifierCodec really needs only QNameModule, update its contract to not rely on yang.model.api.Module. JIRA: YANGTOOLS-1524 Change-Id: I2648be150328a945a3f53c85820d91c9a112674e Signed-off-by: Robert Varga --- diff --git a/codec/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONInstanceIdentifierCodec.java b/codec/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONInstanceIdentifierCodec.java index ad1989cb1b..ee5f777cc6 100644 --- a/codec/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONInstanceIdentifierCodec.java +++ b/codec/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONInstanceIdentifierCodec.java @@ -23,7 +23,6 @@ import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode; import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode; -import org.opendaylight.yangtools.yang.model.api.stmt.ModuleEffectiveStatement; import org.opendaylight.yangtools.yang.model.util.LeafrefResolver; abstract sealed class JSONInstanceIdentifierCodec extends AbstractStringInstanceIdentifierCodec @@ -63,9 +62,9 @@ abstract sealed class JSONInstanceIdentifierCodec extends AbstractStringInstance } @Override - protected final ModuleEffectiveStatement moduleForPrefix(final String prefix) { + protected final QNameModule moduleForPrefix(final String prefix) { final var modules = context.findModuleStatements(prefix).iterator(); - return modules.hasNext() ? modules.next() : null; + return modules.hasNext() ? modules.next().localQNameModule() : null; } @Override diff --git a/codec/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/InstanceIdentifierDeserializer.java b/codec/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/InstanceIdentifierDeserializer.java index 6048c600a5..fcd02a4c01 100644 --- a/codec/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/InstanceIdentifierDeserializer.java +++ b/codec/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/InstanceIdentifierDeserializer.java @@ -11,12 +11,12 @@ import static java.util.Objects.requireNonNull; import javax.xml.namespace.NamespaceContext; import org.eclipse.jdt.annotation.NonNull; +import org.opendaylight.yangtools.yang.common.QNameModule; import org.opendaylight.yangtools.yang.common.XMLNamespace; import org.opendaylight.yangtools.yang.data.util.DataSchemaContextTree; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode; import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode; -import org.opendaylight.yangtools.yang.model.api.stmt.ModuleEffectiveStatement; import org.opendaylight.yangtools.yang.model.util.LeafrefResolver; final class InstanceIdentifierDeserializer extends AbstractInstanceIdentifierCodec { @@ -31,11 +31,11 @@ final class InstanceIdentifierDeserializer extends AbstractInstanceIdentifierCod } @Override - protected ModuleEffectiveStatement moduleForPrefix(final String prefix) { - final var prefixedNS = namespaceContext.getNamespaceURI(prefix); - final var modules = codecFactory.getEffectiveModelContext().findModuleStatements(XMLNamespace.of(prefixedNS)) + protected QNameModule moduleForPrefix(final String prefix) { + final var modules = codecFactory.getEffectiveModelContext() + .findModuleStatements(XMLNamespace.of(namespaceContext.getNamespaceURI(prefix))) .iterator(); - return modules.hasNext() ? modules.next() : null; + return modules.hasNext() ? modules.next().localQNameModule() : null; } @Override diff --git a/codec/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/InstanceIdentifierSerializer.java b/codec/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/InstanceIdentifierSerializer.java index 8a20564846..082bb8bbda 100644 --- a/codec/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/InstanceIdentifierSerializer.java +++ b/codec/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/InstanceIdentifierSerializer.java @@ -11,10 +11,10 @@ import java.util.List; import java.util.Map.Entry; import javax.xml.namespace.NamespaceContext; import org.eclipse.jdt.annotation.Nullable; +import org.opendaylight.yangtools.yang.common.QNameModule; import org.opendaylight.yangtools.yang.common.XMLNamespace; import org.opendaylight.yangtools.yang.data.util.DataSchemaContextTree; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; -import org.opendaylight.yangtools.yang.model.api.stmt.ModuleEffectiveStatement; import org.opendaylight.yangtools.yang.model.util.LeafrefResolver; final class InstanceIdentifierSerializer extends AbstractInstanceIdentifierCodec { @@ -31,7 +31,7 @@ final class InstanceIdentifierSerializer extends AbstractInstanceIdentifierCodec } @Override - protected ModuleEffectiveStatement moduleForPrefix(final String prefix) { + protected QNameModule moduleForPrefix(final String prefix) { // This is deserialize() path, we do not support that in this class throw new UnsupportedOperationException("Not implemented"); } diff --git a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/AbstractStringInstanceIdentifierCodec.java b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/AbstractStringInstanceIdentifierCodec.java index 23752a6445..a449d54a41 100644 --- a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/AbstractStringInstanceIdentifierCodec.java +++ b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/AbstractStringInstanceIdentifierCodec.java @@ -24,7 +24,6 @@ import org.opendaylight.yangtools.yang.data.api.codec.InstanceIdentifierCodec; import org.opendaylight.yangtools.yang.data.util.DataSchemaContext.Composite; import org.opendaylight.yangtools.yang.data.util.DataSchemaContext.PathMixin; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; -import org.opendaylight.yangtools.yang.model.api.stmt.ModuleEffectiveStatement; import org.opendaylight.yangtools.yang.model.util.LeafrefResolver; /** @@ -180,7 +179,7 @@ public abstract class AbstractStringInstanceIdentifierCodec extends AbstractName protected final QName createQName(final String prefix, final String localName) { final var module = moduleForPrefix(prefix); if (module != null) { - return QName.create(module.localQNameModule(), localName); + return QName.create(module, localName); } throw new IllegalArgumentException("Failed to lookup prefix " + prefix); } @@ -191,7 +190,7 @@ public abstract class AbstractStringInstanceIdentifierCodec extends AbstractName * @param prefix Prefix * @return module mapped to prefix, or null if the module cannot be resolved */ - protected abstract @Nullable ModuleEffectiveStatement moduleForPrefix(@NonNull String prefix); + protected abstract @Nullable QNameModule moduleForPrefix(@NonNull String prefix); // FIXME: YANGTOOLS-1426: this will not be necessary when we have dedicated bits type private static @NonNull String checkBitsItem(final Object obj) {