Reduce use of yang.model.api 53/106953/5
authorRobert Varga <robert.varga@pantheon.tech>
Fri, 21 Jul 2023 09:07:29 +0000 (11:07 +0200)
committerRobert Varga <nite@hq.sk>
Thu, 5 Oct 2023 15:39:40 +0000 (15:39 +0000)
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 <robert.varga@pantheon.tech>
codec/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONInstanceIdentifierCodec.java
codec/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/InstanceIdentifierDeserializer.java
codec/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/InstanceIdentifierSerializer.java
data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/AbstractStringInstanceIdentifierCodec.java

index ad1989cb1b55f010122e47312e20636804945d85..ee5f777cc6cd996eaafdd7a285375f0172b1f70a 100644 (file)
@@ -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
index 6048c600a5b1ba845ac2287d7e615d2c2c44edd2..fcd02a4c0151adbbebcf207484186ecc03618c06 100644 (file)
@@ -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
index 8a205648468c6d581cba194af8c1d5d8361ad172..082bb8bbda5fa9f3b28e67c57eb13e1fbd7053f5 100644 (file)
@@ -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");
     }
index 23752a64451ff6e3f869ab3edf226f11d9a509f5..a449d54a415527c10a1efbe6c31ce50a85450d70 100644 (file)
@@ -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) {