Adopt yangtools-11.0.0-SNAPSHOT 86/104586/27
authorRobert Varga <robert.varga@pantheon.tech>
Sat, 25 Feb 2023 10:50:36 +0000 (11:50 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Sun, 28 May 2023 12:31:48 +0000 (14:31 +0200)
yangtools is finalizing its bits, which have reprecussions on MD-SAL
APIs. Synchronize with current snapshot so we can start addressing those
bits.

Change-Id: I7d331e28ace9c8b512f960f4452da1fa8d178d05
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Signed-off-by: Ruslan Kashapov <ruslan.kashapov@pantheon.tech>
33 files changed:
binding/binding-parent/pom.xml
binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/LazySerializedContainerNode.java
binding/mdsal-binding-dom-codec-spi/src/main/java/org/opendaylight/mdsal/binding/dom/codec/spi/AbstractBindingLazyContainerNode.java
binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/BindingCodecContext.java
binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/CachingNormalizedNodeSerializer.java
binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataContainerCodecContext.java
binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/NormalizedNodeWriterWithAddChild.java
binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/ModuleGenerator.java
binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/YangDataGenerator.java
binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/YangDataNamingStrategy.java
binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/BaseTemplate.xtend
binding/mdsal-binding-runtime-spi/src/main/java/org/opendaylight/mdsal/binding/runtime/spi/ModuleInfoSnapshotBuilder.java
binding/yang-binding/src/main/java/org/opendaylight/yangtools/yang/binding/contract/Naming.java
binding/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/contract/NamingTest.java
docs/pom.xml
dom/dom-parent/pom.xml
features/feature-parent/pom.xml
features/odl-mdsal-binding-api/src/main/feature/feature.xml
features/odl-mdsal-binding-base/src/main/feature/feature.xml
features/odl-mdsal-binding-runtime-api/src/main/feature/feature.xml
features/odl-mdsal-common/src/main/feature/feature.xml
features/odl-mdsal-dom-api/src/main/feature/feature.xml
features/odl-mdsal-eos-common/src/main/feature/feature.xml
features/odl-mdsal-exp-yanglib-api/src/main/feature/feature.xml
features/odl-mdsal-replicate-netty/src/main/feature/feature.xml
features/odl-mdsal-rfc8294-netty/src/main/feature/feature.xml
trace/mdsal-trace-impl/src/main/java/org/opendaylight/mdsal/trace/impl/TracingBroker.java
yanglib/mdsal-yanglib-api/pom.xml
yanglib/mdsal-yanglib-api/src/main/java/module-info.java
yanglib/mdsal-yanglib-api/src/main/java/org/opendaylight/mdsal/yanglib/api/YangLibSupport.java
yanglib/mdsal-yanglib-rfc8525/pom.xml
yanglib/mdsal-yanglib-rfc8525/src/main/java/org/opendaylight/mdsal/yanglib/rfc8525/MountPointContextFactoryImpl.java
yanglib/mdsal-yanglib-rfc8525/src/main/java/org/opendaylight/mdsal/yanglib/rfc8525/YangLibrarySupport.java

index 3de10c6689aaae26a36577bc055d5747d02060e3..ef1c380484d42529d8124fbe73a62d8118ae62d9 100644 (file)
@@ -54,7 +54,7 @@
                         <plugin>
                             <groupId>org.opendaylight.yangtools</groupId>
                             <artifactId>yang-maven-plugin</artifactId>
-                            <version>10.0.7</version>
+                            <version>11.0.0-SNAPSHOT</version>
                             <dependencies>
                                 <dependency>
                                     <groupId>org.opendaylight.mdsal</groupId>
index 2526e920ea0189ee22f0d69122c8eb0f4d2b0bbc..3d3e3ed7751fe457e5bdb331a9431f96076753db 100644 (file)
@@ -14,7 +14,6 @@ import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSeriali
 import org.opendaylight.mdsal.binding.dom.codec.spi.AbstractBindingLazyContainerNode;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
 import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild;
 import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
@@ -63,7 +62,7 @@ class LazySerializedContainerNode
         }
 
         @Override
-        public DataContainerChild childByArg(final PathArgument child) {
+        public DataContainerChild childByArg(final NodeIdentifier child) {
             // Use pre-cached value of routing field and do not run full serialization if we are accessing it.
             return contextRef.getIdentifier().equals(child) ? contextRef : super.childByArg(child);
         }
index 661cada730dd4200de1fba81c493649fb0a62bf3..17441bbfe8e9975d8fb56a6164a52061b6a6798a 100644 (file)
@@ -19,7 +19,6 @@ import org.opendaylight.mdsal.binding.dom.codec.api.BindingLazyContainerNode;
 import org.opendaylight.yangtools.concepts.PrettyTree;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
 import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild;
 
@@ -54,10 +53,17 @@ public abstract class AbstractBindingLazyContainerNode<T extends DataObject, C>
     }
 
     @Override
+    public final @NonNull NodeIdentifier name() {
+        return identifier;
+    }
+
+    @Override
+    @Deprecated(since = "12.0.0", forRemoval = true)
     public final @NonNull NodeIdentifier getIdentifier() {
         return identifier;
     }
 
+
     @Override
     public final ContainerNode getDelegate() {
         return delegate();
@@ -69,7 +75,7 @@ public abstract class AbstractBindingLazyContainerNode<T extends DataObject, C>
     }
 
     @Override
-    public DataContainerChild childByArg(final PathArgument child) {
+    public DataContainerChild childByArg(final NodeIdentifier child) {
         return delegate().childByArg(child);
     }
 
@@ -94,10 +100,9 @@ public abstract class AbstractBindingLazyContainerNode<T extends DataObject, C>
         if (this == obj) {
             return true;
         }
-        if (!(obj instanceof ContainerNode)) {
+        if (!(obj instanceof ContainerNode other)) {
             return false;
         }
-        final ContainerNode other = (ContainerNode) obj;
         return delegate().equals(other);
     }
 
index 65193771673e1402c6d1607f4e2a666573a44e4b..b8949e4dc85a0008307a472c0487b07e4291fa8c 100644 (file)
@@ -82,7 +82,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.UnkeyedListNode;
 import org.opendaylight.yangtools.yang.data.api.schema.ValueNode;
 import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNormalizedNodeStreamWriter;
-import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult;
+import org.opendaylight.yangtools.yang.data.impl.schema.NormalizationResultHolder;
 import org.opendaylight.yangtools.yang.model.api.AnydataSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.AnyxmlSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
@@ -554,7 +554,7 @@ public final class BindingCodecContext extends AbstractBindingNormalizedNodeSeri
         final var yangPath = YangInstanceIdentifier.create(yangArgs);
 
         // We create DOM stream writer which produces normalized nodes
-        final var result = new NormalizedNodeResult();
+        final var result = new NormalizationResultHolder();
         final var domWriter = ImmutableNormalizedNodeStreamWriter.from(result);
         final var bindingWriter = new BindingToNormalizedStreamWriter(codecContext, domWriter);
         final var augment = codecContext instanceof BindingAugmentationCodecTreeNode<?> augmentNode ? augmentNode
@@ -581,9 +581,9 @@ public final class BindingCodecContext extends AbstractBindingNormalizedNodeSeri
         // Terminate the fake container and extract it to the result
         if (augment != null) {
             return new AugmentationResult(yangPath, augment.childPathArguments(),
-                ImmutableList.copyOf(((ContainerNode) result.getResult()).body()));
+                ImmutableList.copyOf(((ContainerNode) result.getResult().data()).body()));
         }
-        return new NodeResult(yangPath, result.getResult());
+        return new NodeResult(yangPath, result.getResult().data());
     }
 
     @Override
@@ -678,9 +678,9 @@ public final class BindingCodecContext extends AbstractBindingNormalizedNodeSeri
 
     private <T extends DataContainer> @NonNull ContainerNode serializeDataObject(final DataObject data,
             final WriterFactoryMethod<T> newWriter) {
-        final NormalizedNodeResult result = new NormalizedNodeResult();
+        final var result = new NormalizationResultHolder();
         // We create DOM stream writer which produces normalized nodes
-        final NormalizedNodeStreamWriter domWriter = ImmutableNormalizedNodeStreamWriter.from(result);
+        final var domWriter = ImmutableNormalizedNodeStreamWriter.from(result);
         final Class<? extends DataObject> type = data.implementedInterface();
         @SuppressWarnings("unchecked")
         final BindingStreamEventWriter writer = newWriter.createWriter(this, (Class<T>) type, domWriter);
@@ -690,16 +690,16 @@ public final class BindingCodecContext extends AbstractBindingNormalizedNodeSeri
             LOG.error("Unexpected failure while serializing data {}", data, e);
             throw new IllegalStateException("Failed to create normalized node", e);
         }
-        return (ContainerNode) result.getResult();
+        return (ContainerNode) result.getResult().data();
     }
 
 
     private static boolean notBindingRepresentable(final NormalizedNode data) {
         // ValueNode covers LeafNode and LeafSetEntryNode
         return data instanceof ValueNode
-                || data instanceof MapNode || data instanceof UnkeyedListNode
-                || data instanceof ChoiceNode
-                || data instanceof LeafSetNode;
+            || data instanceof MapNode || data instanceof UnkeyedListNode
+            || data instanceof ChoiceNode
+            || data instanceof LeafSetNode;
     }
 
     @SuppressWarnings("rawtypes")
index 373577dbe7c8dd2f7ec74f95708a1d75f7f26fa9..cc33058607653b08bd1cc6dc9075a7bdf1a0045f 100644 (file)
@@ -14,7 +14,7 @@ import org.opendaylight.mdsal.binding.dom.codec.api.BindingStreamEventWriter;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.TypeObject;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult;
+import org.opendaylight.yangtools.yang.data.impl.schema.NormalizationResultHolder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -33,7 +33,7 @@ final class CachingNormalizedNodeSerializer extends ForwardingBindingStreamEvent
         implements BindingSerializer<Object, DataObject> {
     private static final Logger LOG = LoggerFactory.getLogger(CachingNormalizedNodeSerializer.class);
 
-    private final NormalizedNodeResult domResult = new NormalizedNodeResult();
+    private final NormalizationResultHolder domResult = new NormalizationResultHolder();
     private final NormalizedNodeWriterWithAddChild domWriter = new NormalizedNodeWriterWithAddChild(domResult);
     private final AbstractBindingNormalizedNodeCacheHolder cacheHolder;
     private final BindingToNormalizedStreamWriter delegate;
@@ -60,7 +60,7 @@ final class CachingNormalizedNodeSerializer extends ForwardingBindingStreamEvent
         } catch (final IOException e) {
             throw new IllegalStateException(e);
         }
-        return writer.domResult.getResult();
+        return writer.domResult.getResult().data();
     }
 
     @Override
index addd780649fbd43875839395cbfaab00edb9ab0a..659d13b49f1ab4cc5129d0714d4cbcfae3532f2c 100644 (file)
@@ -49,9 +49,8 @@ import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNormalizedNodeStreamWriter;
-import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult;
+import org.opendaylight.yangtools.yang.data.impl.schema.NormalizationResultHolder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -262,15 +261,15 @@ abstract class DataContainerCodecContext<D extends DataObject, T extends Runtime
     }
 
     final @NonNull NormalizedNode serializeImpl(final @NonNull D data) {
-        final NormalizedNodeResult result = new NormalizedNodeResult();
+        final var result = new NormalizationResultHolder();
         // We create DOM stream writer which produces normalized nodes
-        final NormalizedNodeStreamWriter domWriter = ImmutableNormalizedNodeStreamWriter.from(result);
+        final var domWriter = ImmutableNormalizedNodeStreamWriter.from(result);
         try {
             eventStreamSerializer().serialize(data, new BindingToNormalizedStreamWriter(this, domWriter));
         } catch (final IOException e) {
             throw new IllegalStateException("Failed to serialize Binding DTO",e);
         }
-        return result.getResult();
+        return result.getResult().data();
     }
 
     static final <T extends NormalizedNode> @NonNull T checkDataArgument(final @NonNull Class<T> expectedType,
index 9201b38120a050580b7e596a776ceebe225b2747..26b527b29c4bd92589ae82a1c3476690072bb3e8 100644 (file)
@@ -9,15 +9,14 @@ package org.opendaylight.mdsal.binding.dom.codec.impl;
 
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNormalizedNodeStreamWriter;
-import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult;
+import org.opendaylight.yangtools.yang.data.impl.schema.NormalizationResultHolder;
 
 final class NormalizedNodeWriterWithAddChild extends ImmutableNormalizedNodeStreamWriter {
-
-    NormalizedNodeWriterWithAddChild(final NormalizedNodeResult result) {
+    NormalizedNodeWriterWithAddChild(final NormalizationResultHolder result) {
         super(result);
     }
 
     void addChild(final NormalizedNode child) {
-        this.writeChild(child);
+        writeChild(child);
     }
 }
index 7f63145ca70028c558919ce4a30165176e76ad23..9769b74a993827653ac52ff7921555d57e78c966 100644 (file)
@@ -26,6 +26,7 @@ import org.opendaylight.mdsal.binding.runtime.api.RuntimeType;
 import org.opendaylight.yangtools.yang.binding.contract.Naming;
 import org.opendaylight.yangtools.yang.common.AbstractQName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.common.YangDataName;
 import org.opendaylight.yangtools.yang.model.api.stmt.ModuleEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack;
 
@@ -114,8 +115,7 @@ public final class ModuleGenerator extends AbstractCompositeGenerator<ModuleEffe
             Map.entry(yangModuleInfo, localName.getLocalName()));
     }
 
-    // FIXME: use YangDataName
-    void addNameConstant(final GeneratedTypeBuilderBase<?> builder, final String templateName) {
+    void addNameConstant(final GeneratedTypeBuilderBase<?> builder, final YangDataName templateName) {
         builder.addConstant(BindingTypes.YANG_DATA_NAME, Naming.NAME_STATIC_FIELD_NAME,
             Map.entry(yangModuleInfo, templateName));
     }
index a69705e83b83ce8b2c0002dfe234541ec660114f..5f097171d3eedab4ed6aa55b1c840f1839ae32b0 100644 (file)
@@ -21,7 +21,6 @@ import org.opendaylight.mdsal.binding.runtime.api.AugmentRuntimeType;
 import org.opendaylight.mdsal.binding.runtime.api.RuntimeType;
 import org.opendaylight.mdsal.binding.runtime.api.YangDataRuntimeType;
 import org.opendaylight.yangtools.rfc8040.model.api.YangDataEffectiveStatement;
-import org.opendaylight.yangtools.yang.common.QNameModule;
 import org.opendaylight.yangtools.yang.common.UnresolvedQName;
 import org.opendaylight.yangtools.yang.common.UnresolvedQName.Unqualified;
 import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack;
@@ -65,7 +64,7 @@ abstract sealed class YangDataGenerator
         // yang-data's argument is not guaranteed to comply with YANG 'identifier', but it usually does. If it does, we
         // use the usual mechanics, but if it does not, we have to deal with any old string, similar to what we do for
         // bit names. Here we decide which path to take.
-        final String templateName = statement.argument();
+        final String templateName = statement.argument().name();
         final var identifier = UnresolvedQName.tryLocalName(templateName);
         return identifier != null ? new WithIdentifier(statement, parent, identifier)
             : new WithString(statement, parent);
@@ -73,8 +72,7 @@ abstract sealed class YangDataGenerator
 
     @Override
     final void pushToInference(final SchemaInferenceStack dataTree) {
-        final QNameModule moduleQName = currentModule().getQName().getModule();
-        dataTree.enterYangData(moduleQName, statement().argument());
+        dataTree.enterYangData(statement().argument());
     }
 
     @Override
index a45063d9ca232dbc2289ef243d8fc6ad60e01df4..1f0206f869195f9377f8d7286f72a2a0687030fe 100644 (file)
@@ -11,6 +11,7 @@ import com.google.common.base.MoreObjects.ToStringHelper;
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.yangtools.yang.binding.contract.Naming;
+import org.opendaylight.yangtools.yang.common.YangDataName;
 
 /**
  * Naming strategy for {@code ietf-restconf:yang-data} template which has a generic string not matching YANG identifier.
@@ -19,7 +20,7 @@ import org.opendaylight.yangtools.yang.binding.contract.Naming;
 final class YangDataNamingStrategy extends ClassNamingStrategy {
     private final String javaIdentifier;
 
-    YangDataNamingStrategy(final String templateName) {
+    YangDataNamingStrategy(final YangDataName templateName) {
         javaIdentifier = Naming.mapYangDataName(templateName);
     }
 
index ee717a9ac7a71e2fcd691668111819a3d8f22d59..6639d3854c9de407d94d81dbd483ec72788b9652 100644 (file)
@@ -33,6 +33,7 @@ import org.opendaylight.mdsal.binding.model.api.TypeMemberComment
 import org.opendaylight.mdsal.binding.model.ri.TypeConstants
 import org.opendaylight.yangtools.yang.binding.BaseIdentity
 import org.opendaylight.yangtools.yang.binding.contract.Naming
+import org.opendaylight.yangtools.yang.common.YangDataName
 
 abstract class BaseTemplate extends JavaFileTemplate {
     static final char NEW_LINE = '\n'
@@ -302,11 +303,11 @@ abstract class BaseTemplate extends JavaFileTemplate {
              */
             public static final Â«c.type.importedNonNull» Â«c.name» = Â«entry.key.importedName».«Naming.MODULE_INFO_QNAMEOF_METHOD_NAME»("«entry.value»");
         Â«ELSEIF Naming.NAME_STATIC_FIELD_NAME.equals(c.name)»
-            Â«val entry = c.value as Entry<JavaTypeName, String>»
+            Â«val entry = c.value as Entry<JavaTypeName, YangDataName>»
             /**
              * Yang Data template name of the statement represented by this class.
              */
-            public static final Â«c.type.importedNonNull» Â«c.name» = Â«entry.key.importedName».«Naming.MODULE_INFO_YANGDATANAMEOF_METHOD_NAME»("«entry.value»");
+            public static final Â«c.type.importedNonNull» Â«c.name» = Â«entry.key.importedName».«Naming.MODULE_INFO_YANGDATANAMEOF_METHOD_NAME»("«entry.value.name»");
         Â«ELSEIF Naming.VALUE_STATIC_FIELD_NAME.equals(c.name) && BaseIdentity.equals(c.value)»
             Â«val typeName = c.type.importedName»
             Â«val override = OVERRIDE.importedName»
index 83c7a2b0018ce6790801d32e5ea54d42acd4c494..457397cd60d08d62aa898558ebc84858585d3126 100644 (file)
@@ -13,7 +13,6 @@ import com.google.common.annotations.Beta;
 import com.google.common.base.Throwables;
 import com.google.common.collect.HashMultimap;
 import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Multimaps;
 import com.google.common.collect.SetMultimap;
@@ -31,8 +30,7 @@ import org.opendaylight.yangtools.yang.binding.YangFeature;
 import org.opendaylight.yangtools.yang.binding.YangModuleInfo;
 import org.opendaylight.yangtools.yang.binding.contract.Naming;
 import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.common.QNameModule;
-import org.opendaylight.yangtools.yang.model.repo.api.FeatureSet;
+import org.opendaylight.yangtools.yang.model.api.stmt.FeatureSet;
 import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
 import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
 import org.opendaylight.yangtools.yang.parser.api.YangParser;
@@ -123,14 +121,13 @@ public final class ModuleInfoSnapshotBuilder {
         }
 
         if (!moduleFeatures.isEmpty()) {
-            final var featuresByModule =
-                ImmutableMap.<QNameModule, ImmutableSet<String>>builderWithExpectedSize(moduleFeatures.size());
+            final var featuresByModule = FeatureSet.builder();
             for (var entry : Multimaps.asMap(moduleFeatures).entrySet()) {
-                featuresByModule.put(BindingReflections.getQNameModule(entry.getKey()),
+                featuresByModule.addModuleFeatures(BindingReflections.getQNameModule(entry.getKey()),
                     entry.getValue().stream().map(YangFeature::qname).map(QName::getLocalName).sorted()
                         .collect(ImmutableSet.toImmutableSet()));
             }
-            parser.setSupportedFeatures(new FeatureSet(featuresByModule.build()));
+            parser.setSupportedFeatures(featuresByModule.build());
         }
 
         return new DefaultModuleInfoSnapshot(parser.buildEffectiveModel(), mappedInfos, classLoaders);
index 3b3b56f01bccef8d3e5a8665ef08217adccefd6c..1f94a6c9272f24a5f6aaa52030464a771254b559 100644 (file)
@@ -36,6 +36,7 @@ import org.opendaylight.yangtools.yang.binding.ScalarTypeObject;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
 import org.opendaylight.yangtools.yang.common.Revision;
+import org.opendaylight.yangtools.yang.common.YangDataName;
 
 @Beta
 public final class Naming {
@@ -440,8 +441,8 @@ public final class Naming {
      * @throws IllegalArgumentException if (@code templateName} is empty
      */
     // TODO: take YangDataName once we have it readily available
-    public static String mapYangDataName(final String templateName) {
-        return mapEnumAssignedName(templateName);
+    public static String mapYangDataName(final YangDataName templateName) {
+        return mapEnumAssignedName(templateName.name());
     }
 
     // See https://docs.oracle.com/javase/specs/jls/se16/html/jls-3.html#jls-3.8
index b984d48a4f5b3a96d1e02a3024e8ffb5dbff29cf..3d241537bd114493820e472cd25a36dfe591da48 100644 (file)
@@ -11,12 +11,12 @@ import static org.junit.Assert.assertEquals;
 
 import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
 import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.common.XMLNamespace;
+import org.opendaylight.yangtools.yang.common.YangDataName;
 
 public class NamingTest {
 
@@ -107,7 +107,7 @@ public class NamingTest {
 
     private static void assertEqualMapping(final List<String> mapped, final List<String> yang) {
         assertEquals(mapped.size(), yang.size());
-        final Map<String, String> expected = new HashMap<>();
+        final var expected = new HashMap<String, String>();
         for (int i = 0; i < mapped.size(); ++i) {
             expected.put(yang.get(i), mapped.get(i));
         }
@@ -117,13 +117,15 @@ public class NamingTest {
 
     @Test
     public void yangDataMapping() {
+        final var ns = QNameModule.create(XMLNamespace.of("unused"));
+
         // single ascii compliant non-conflicting word - remain as is
-        assertEquals("single", Naming.mapYangDataName("single"));
+        assertEquals("single", Naming.mapYangDataName(new YangDataName(ns, "single")));
         // ascii compliant - non-compliany chars only encoded
-        assertEquals("$abc$20$cde", Naming.mapYangDataName("abc cde"));
+        assertEquals("$abc$20$cde", Naming.mapYangDataName(new YangDataName(ns, "abc cde")));
         // latin1 compliant -> latin chars normalized, non-compliant chars are encoded
-        assertEquals("$ľaľaho$20$papľuhu", Naming.mapYangDataName("ľaľaho papľuhu"));
+        assertEquals("$ľaľaho$20$papľuhu", Naming.mapYangDataName(new YangDataName(ns, "ľaľaho papľuhu")));
         // latin1 non-compliant - all non-compliant characters encoded
-        assertEquals("$привет$20$papľuhu", Naming.mapYangDataName("привет papľuhu"));
+        assertEquals("$привет$20$papľuhu", Naming.mapYangDataName(new YangDataName(ns, "привет papľuhu")));
     }
 }
\ No newline at end of file
index d45280dab0f09534d762c35f49d7ac1d9ce6f251..8115528e6c36aa67f50305c5c17c35e8ce79bad9 100644 (file)
                         <link>https://commons.apache.org/proper/commons-lang/javadocs/api-release/</link>
 
                         <link>https://www.javadoc.io/doc/org.opendaylight.odlparent/odlparent-docs/12.0.6/</link>
-                        <link>https://www.javadoc.io/doc/org.opendaylight.yangtools/yangtools-docs/10.0.7/</link>
+                        <link>https://www.javadoc.io/doc/org.opendaylight.yangtools/yangtools-docs/11.0.0-SNAPSHOT/</link>
                     </links>
                     <groups>
                         <group>
index 4f8c512f1835caf1e59e4c73a0a997ba2592890e..bb75f3791d8e89906a70bd7bf8d04802b7e87111 100644 (file)
@@ -29,7 +29,7 @@
             <dependency>
                 <groupId>org.opendaylight.yangtools</groupId>
                 <artifactId>yangtools-artifacts</artifactId>
-                <version>10.0.7</version>
+                <version>11.0.0-SNAPSHOT</version>
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
index fb24e1f3de38b6f4587bc05fa766551d91245102..7831d59744de78e6d2415652c8a5b30c7e420a1f 100644 (file)
@@ -27,7 +27,7 @@
             <dependency>
                 <groupId>org.opendaylight.yangtools</groupId>
                 <artifactId>yangtools-artifacts</artifactId>
-                <version>10.0.7</version>
+                <version>11.0.0-SNAPSHOT</version>
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
index cf0027b6b731dc8b5ef4de08748b808a28e594fe..998fc20dba342c030d680e441265b5fcb3d26ed5 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <features xmlns="http://karaf.apache.org/xmlns/features/v1.4.0" name="odl-mdsal-binding-api">
     <feature name="odl-mdsal-binding-api">
-        <feature version="[10,11)">odl-yangtools-data-api</feature>
+        <feature version="[11,12)">odl-yangtools-data-api</feature>
     </feature>
 </features>
index 4611715bee678da2327ae1ce0ad397e11dae66d0..01f47d6dee1e0eca18351e3824c42327e866753f 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <features xmlns="http://karaf.apache.org/xmlns/features/v1.4.0" name="odl-mdsal-binding-base">
     <feature name="odl-mdsal-binding-base">
-        <feature version="[10,11)">odl-yangtools-common</feature>
+        <feature version="[11,12)">odl-yangtools-common</feature>
     </feature>
 </features>
index 582657b26fd537918751e67d671e09588907cd69..119c5baab395c4c126f2a8bb911a790eeebfd2ee 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <features xmlns="http://karaf.apache.org/xmlns/features/v1.4.0" name="odl-mdsal-runtime-api">
     <feature name="odl-mdsal-binding-runtime-api">
-        <feature version="[10,11)">odl-yangtools-data</feature>
-        <feature version="[10,11)">odl-yangtools-parser</feature>
+        <feature version="[11,12)">odl-yangtools-data</feature>
+        <feature version="[11,12)">odl-yangtools-parser</feature>
     </feature>
 </features>
index ab7ba8b35c69b20a9290ea6e2382aeb2d51c0873..f4e3c49a0ceaff4acf6b25b1be4ebcd59fd0dc74 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <features xmlns="http://karaf.apache.org/xmlns/features/v1.4.0" name="odl-mdsal-common">
     <feature name="odl-mdsal-common">
-        <feature version="[10,11)">odl-yangtools-common</feature>
+        <feature version="[11,12)">odl-yangtools-common</feature>
     </feature>
 </features>
index e00bd53f70d7b38d2b5a89b2ea7f4631f4d45b9a..f3aa0821ea5e1a5079af7d8ee84027a0f7b166f8 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <features xmlns="http://karaf.apache.org/xmlns/features/v1.4.0" name="odl-mdsal-dom-api">
     <feature name="odl-mdsal-dom-api">
-        <feature version="[10,11)">odl-yangtools-data-api</feature>
+        <feature version="[11,12)">odl-yangtools-data-api</feature>
     </feature>
 </features>
index 9b716906ad1d3a22626c79757b40c117dea437a2..1f9cfcd7be22e9ec33b0e46d3b141e89a5a49b40 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <features xmlns="http://karaf.apache.org/xmlns/features/v1.4.0" name="odl-mdsal-eos-common">
     <feature name="odl-mdsal-eos-common">
-        <feature version="[10,11)">odl-yangtools-data-api</feature>
+        <feature version="[11,12)">odl-yangtools-data-api</feature>
     </feature>
 </features>
index 1a2308c6ebdfafa5f9513d5fba766e330b282fd9..db599fc1928ccab23e5d224e11f2d4532729a7dd 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <features xmlns="http://karaf.apache.org/xmlns/features/v1.4.0" name="odl-mdsal-exp-yanglib-api">
     <feature name="odl-mdsal-exp-yanglib-api">
-        <feature version="[10,11)">odl-yangtools-data-api</feature>
+        <feature version="[11,12)">odl-yangtools-data-api</feature>
     </feature>
 </features>
index 2f2998eaf7e168669e688547b2e77e86720a9cb5..f0241cb04c6be86ef819fa8feaa2ef88327d42f5 100644 (file)
@@ -4,6 +4,6 @@
         <configfile finalname="etc/org.opendaylight.mdsal.replicate.netty.sink.cfg">mvn:org.opendaylight.mdsal/mdsal-replicate-netty/${project.version}/config/sink</configfile>
         <configfile finalname="etc/org.opendaylight.mdsal.replicate.netty.source.cfg">mvn:org.opendaylight.mdsal/mdsal-replicate-netty/${project.version}/config/source</configfile>
         <feature version="[11,12)">odl-netty-4</feature>
-        <feature version="[10,11)">odl-yangtools-codec</feature>
+        <feature version="[11,12)">odl-yangtools-codec</feature>
     </feature>
 </features>
index c22ee82343259c6935f855ea721ca8438c9c076a..ecf2161ecd675e2e5590ceaa820ae61a739b597a 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <features xmlns="http://karaf.apache.org/xmlns/features/v1.4.0" name="odl-mdsal-uint24-netty">
     <feature name="odl-mdsal-uint24-netty">
-        <feature version="[10,11)">odl-yangtools-netty</feature>
+        <feature version="[11,12)">odl-yangtools-netty</feature>
     </feature>
 </features>
index 1bcedd14b4b7574b1c42d4f650b2e744ead9f1fa..9b33cabe80dc06de24c4a37b5b376b9897b91372 100644 (file)
@@ -118,7 +118,7 @@ public class TracingBroker implements TracingDOMDataBroker {
         final LogicalDatastoreType store;
 
         Watch(final String iidString, final LogicalDatastoreType storeOrNull) {
-            this.store = storeOrNull;
+            store = storeOrNull;
             this.iidString = iidString;
         }
 
@@ -167,12 +167,12 @@ public class TracingBroker implements TracingDOMDataBroker {
         this.codec = requireNonNull(codec, "codec");
         configure(config);
 
-        this.isDebugging = Boolean.TRUE.equals(config.getTransactionDebugContextEnabled());
+        isDebugging = Boolean.TRUE.equals(config.getTransactionDebugContextEnabled());
         final String db = "DataBroker";
-        this.transactionChainsRegistry     = new CloseTrackedRegistry<>(db, "createTransactionChain()", isDebugging);
-        this.readOnlyTransactionsRegistry  = new CloseTrackedRegistry<>(db, "newReadOnlyTransaction()", isDebugging);
-        this.writeTransactionsRegistry     = new CloseTrackedRegistry<>(db, "newWriteOnlyTransaction()", isDebugging);
-        this.readWriteTransactionsRegistry = new CloseTrackedRegistry<>(db, "newReadWriteTransaction()", isDebugging);
+        transactionChainsRegistry     = new CloseTrackedRegistry<>(db, "createTransactionChain()", isDebugging);
+        readOnlyTransactionsRegistry  = new CloseTrackedRegistry<>(db, "newReadOnlyTransaction()", isDebugging);
+        writeTransactionsRegistry     = new CloseTrackedRegistry<>(db, "newWriteOnlyTransaction()", isDebugging);
+        readWriteTransactionsRegistry = new CloseTrackedRegistry<>(db, "newReadWriteTransaction()", isDebugging);
     }
 
     private void configure(final Config config) {
@@ -267,10 +267,6 @@ public class TracingBroker implements TracingDOMDataBroker {
     private static void reconstructIidPathString(final YangInstanceIdentifier yiid, final StringBuilder sb) {
         sb.append("<RECONSTRUCTED FROM: \"").append(yiid.toString()).append("\">");
         for (YangInstanceIdentifier.PathArgument pathArg : yiid.getPathArguments()) {
-            if (pathArg instanceof YangInstanceIdentifier.AugmentationIdentifier) {
-                sb.append('/').append("AUGMENTATION");
-                continue;
-            }
             sb.append('/').append(pathArg.getNodeType().getLocalName());
         }
     }
index 19daf47bf86e8995839a4896d378d70cbe7558fb..ded882d954e0df694779bc47b82e348a1de69bd3 100644 (file)
@@ -24,7 +24,7 @@
     <dependencies>
         <dependency>
             <groupId>org.opendaylight.yangtools</groupId>
-            <artifactId>rfc8528-data-util</artifactId>
+            <artifactId>yang-data-api</artifactId>
         </dependency>
         <dependency>
             <groupId>org.opendaylight.yangtools</groupId>
index a23e6071b96dd82c74ed189ff7d5c32d1c327a84..264ca72d7338d6c32a691829ad6dcfaee181e0d3 100644 (file)
@@ -9,8 +9,9 @@ module org.opendaylight.mdsal.yanglib.api {
     exports org.opendaylight.mdsal.yanglib.api;
 
     requires transitive org.opendaylight.yangtools.yang.common;
+    requires transitive org.opendaylight.yangtools.yang.data.api;
     requires transitive org.opendaylight.yangtools.yang.model.api;
-    requires transitive org.opendaylight.yangtools.rfc8528.data.api;
+    requires transitive org.opendaylight.yangtools.yang.parser.api;
 
     // Annotations
     requires static transitive org.eclipse.jdt.annotation;
index 4a87c7dba312748b29867b7341c2c14a5c7016aa..709223e32c85fd56bd242d4d2ed9b944a83b6bb7 100644 (file)
@@ -9,9 +9,9 @@ package org.opendaylight.mdsal.yanglib.api;
 
 import com.google.common.annotations.Beta;
 import org.eclipse.jdt.annotation.NonNullByDefault;
-import org.opendaylight.yangtools.rfc8528.data.api.MountPointContextFactory;
-import org.opendaylight.yangtools.rfc8528.data.api.MountPointIdentifier;
+import org.opendaylight.yangtools.yang.common.MountPointLabel;
 import org.opendaylight.yangtools.yang.common.Revision;
+import org.opendaylight.yangtools.yang.data.api.schema.MountPointContextFactory;
 
 /**
  * Main entry point into YANG (Module) Library support instance.
@@ -22,13 +22,12 @@ public interface YangLibSupport {
     /**
      * Create a MountPointContextFactory, backed by a specific SchemaContextResolver.
      *
-     * @param mountId Resulting Mount Point identifier
+     * @param label Resulting Mount Point identifier
      * @param resolver SchemaContext resolver
      * @return A new factory
      * @throws NullPointerException if any argument is null
      */
-    MountPointContextFactory createMountPointContextFactory(MountPointIdentifier mountId,
-            SchemaContextResolver resolver);
+    MountPointContextFactory createMountPointContextFactory(MountPointLabel label, SchemaContextResolver resolver);
 
     /**
      * Return the revision date of the model this support implements. The value returned from this method is suitable
index 9ce3ed4641d780844b6974cecc46e995e64f928f..2bb9781bef84bff70fd7e68d358f0ecd904f6740 100644 (file)
             <groupId>org.opendaylight.mdsal.binding.model.ietf</groupId>
             <artifactId>rfc8525</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.opendaylight.yangtools</groupId>
+            <artifactId>yang-data-util</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.opendaylight.yangtools</groupId>
             <artifactId>yang-parser-api</artifactId>
index 05d2c28e58070b28abb80b86711bb34488c7b772..2145c83f3a4243c589d64eb8b6772837b51ea8dd 100644 (file)
@@ -39,15 +39,15 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.librar
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev190104.yang.library.parameters.ModuleSet;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev190104.yang.library.parameters.SchemaKey;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.YangIdentifier;
-import org.opendaylight.yangtools.rfc8528.data.api.MountPointContextFactory;
-import org.opendaylight.yangtools.rfc8528.data.api.MountPointIdentifier;
-import org.opendaylight.yangtools.rfc8528.data.api.YangLibraryConstants.ContainerName;
-import org.opendaylight.yangtools.rfc8528.data.util.AbstractMountPointContextFactory;
+import org.opendaylight.yangtools.yang.common.MountPointLabel;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.common.UnresolvedQName.Unqualified;
 import org.opendaylight.yangtools.yang.common.XMLNamespace;
 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
+import org.opendaylight.yangtools.yang.data.api.schema.MountPointContextFactory;
+import org.opendaylight.yangtools.yang.data.api.schema.MountPointException;
+import org.opendaylight.yangtools.yang.data.util.AbstractMountPointContextFactory;
 import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
 import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
 import org.opendaylight.yangtools.yang.parser.api.YangParserException;
@@ -64,13 +64,13 @@ final class MountPointContextFactoryImpl extends AbstractMountPointContextFactor
     private final EffectiveModelContext yangLibContext;
     private final SchemaContextResolver resolver;
 
-    MountPointContextFactoryImpl(final MountPointIdentifier mountId, final SchemaContextResolver resolver,
+    MountPointContextFactoryImpl(final MountPointLabel label, final SchemaContextResolver resolver,
             final EffectiveModelContext yangLibContext,
             final BindingIdentityCodec identityCodec,
             final BindingDataObjectCodecTreeNode<YangLibrary> codec,
             @SuppressWarnings("deprecation")
             final BindingDataObjectCodecTreeNode<ModulesState> legacyCodec) {
-        super(mountId);
+        super(label);
         this.resolver = requireNonNull(resolver);
         this.identityCodec = requireNonNull(identityCodec);
         this.yangLibContext = requireNonNull(yangLibContext);
@@ -80,8 +80,8 @@ final class MountPointContextFactoryImpl extends AbstractMountPointContextFactor
 
     @Override
     protected MountPointContextFactory createContextFactory(final MountPointDefinition mountPoint) {
-        return new MountPointContextFactoryImpl(mountPoint.getIdentifier(), resolver, yangLibContext, identityCodec,
-            codec, legacyCodec);
+        return new MountPointContextFactoryImpl(mountPoint.label(), resolver, yangLibContext, identityCodec, codec,
+            legacyCodec);
     }
 
     @Override
@@ -93,14 +93,14 @@ final class MountPointContextFactoryImpl extends AbstractMountPointContextFactor
 
     @Override
     protected EffectiveModelContext bindLibrary(final ContainerName containerName, final ContainerNode libData)
-            throws YangParserException {
+            throws MountPointException {
         return switch (containerName) {
             case RFC7895 -> bindLibrary(verifyNotNull(legacyCodec.deserialize(libData)));
             case RFC8525 -> bindLibrary(verifyNotNull(codec.deserialize(libData)));
         };
     }
 
-    private @NonNull EffectiveModelContext bindLibrary(final @NonNull YangLibrary yangLib) throws YangParserException {
+    private @NonNull EffectiveModelContext bindLibrary(final @NonNull YangLibrary yangLib) throws MountPointException {
         final var datastores = yangLib.nonnullDatastore();
         checkArgument(!datastores.isEmpty(), "No datastore defined");
 
@@ -115,12 +115,16 @@ final class MountPointContextFactoryImpl extends AbstractMountPointContextFactor
         }
         checkArgument(moduleSet.isEmpty(), "Failed to resolve module sets %s", moduleSet);
 
-        return resolver.resolveSchemaContext(librarySources, requiredSources, supportedFeatures);
+        try {
+            return resolver.resolveSchemaContext(librarySources, requiredSources, supportedFeatures);
+        } catch (YangParserException e) {
+            throw new MountPointException("Failed to assemble model context", e);
+        }
     }
 
     @SuppressWarnings("deprecation")
     private @NonNull EffectiveModelContext bindLibrary(final @NonNull ModulesState modState)
-            throws YangParserException {
+            throws MountPointException {
         final var requiredSources = new ArrayList<SourceReference>();
         final var librarySources = new ArrayList<SourceReference>();
         final var supportedFeatures = new HashSet<QName>();
@@ -147,7 +151,11 @@ final class MountPointContextFactoryImpl extends AbstractMountPointContextFactor
             }
         }
 
-        return resolver.resolveSchemaContext(librarySources, requiredSources, supportedFeatures);
+        try {
+            return resolver.resolveSchemaContext(librarySources, requiredSources, supportedFeatures);
+        } catch (YangParserException e) {
+            throw new MountPointException("Failed to assemble model context", e);
+        }
     }
 
     private String findSchemaName(final Map<DatastoreKey, Datastore> datastores, final QName qname) {
index 794e7786af8d384c9b15184a6b5fdd2e9ff645b7..f06f963acbb200d52360a73692ff339f145d39cc 100644 (file)
@@ -26,10 +26,10 @@ import org.opendaylight.mdsal.yanglib.api.YangLibSupport;
 import org.opendaylight.mdsal.yanglib.api.YangLibraryContentBuilder;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev190104.ModulesState;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev190104.YangLibrary;
-import org.opendaylight.yangtools.rfc8528.data.api.MountPointContextFactory;
-import org.opendaylight.yangtools.rfc8528.data.api.MountPointIdentifier;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.yang.common.MountPointLabel;
 import org.opendaylight.yangtools.yang.common.Revision;
+import org.opendaylight.yangtools.yang.data.api.schema.MountPointContextFactory;
 import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
 import org.opendaylight.yangtools.yang.parser.api.YangParserException;
 import org.opendaylight.yangtools.yang.parser.api.YangParserFactory;
@@ -74,9 +74,9 @@ public final class YangLibrarySupport implements YangLibSupport {
     }
 
     @Override
-    public MountPointContextFactory createMountPointContextFactory(final MountPointIdentifier mountId,
+    public MountPointContextFactory createMountPointContextFactory(final MountPointLabel label,
             final SchemaContextResolver resolver) {
-        return new MountPointContextFactoryImpl(mountId, resolver, context, identityCodec, codec, legacyCodec);
+        return new MountPointContextFactoryImpl(label, resolver, context, identityCodec, codec, legacyCodec);
     }
 
     @Override