Move MountPointLabel to yang-common 70/106070/3
authorRobert Varga <robert.varga@pantheon.tech>
Sat, 20 May 2023 10:45:50 +0000 (12:45 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Sat, 20 May 2023 11:10:47 +0000 (13:10 +0200)
We have YangDataName in yang-common, MountPointLabel is very similar.
Co-locate them for sharing.

Change-Id: I4e3747f5ee4b0dd68f3f83dbb9df58e165313383
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
25 files changed:
codec/yang-data-codec-gson/pom.xml
codec/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONNormalizedNodeStreamWriter.java
common/yang-common/src/main/java/org/opendaylight/yangtools/yang/common/MountPointLabel.java [moved from model/rfc8528-model-api/src/main/java/org/opendaylight/yangtools/rfc8528/model/api/MountPointLabel.java with 55% similarity]
data/yang-data-api/pom.xml
data/yang-data-api/src/main/java/module-info.java
data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/EmptyMountPointContext.java
data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/MountPointContext.java
data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/NormalizedMountPoint.java
data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/NormalizedNodeStreamWriter.java
data/yang-data-impl/pom.xml
data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/ImmutableMountPointNormalizedNodeStreamWriter.java
data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/ImmutableNormalizedMountPoint.java
data/yang-data-util/src/main/java/module-info.java
data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/AbstractDynamicMountPointContextFactory.java
data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/AbstractMountPointContextFactory.java
data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/AbstractMountPointDataWithSchema.java
data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/ImmutableMountPointContext.java
data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/MountPointData.java
model/rfc8528-model-api/pom.xml
model/rfc8528-model-api/src/main/java/org/opendaylight/yangtools/rfc8528/model/api/MountPointEffectiveStatement.java
model/rfc8528-model-api/src/main/java/org/opendaylight/yangtools/rfc8528/model/api/MountPointStatement.java
parser/rfc8528-parser-support/src/main/java/org/opendaylight/yangtools/rfc8528/parser/MountPointEffectiveStatementImpl.java
parser/rfc8528-parser-support/src/main/java/org/opendaylight/yangtools/rfc8528/parser/MountPointStatementImpl.java
parser/rfc8528-parser-support/src/main/java/org/opendaylight/yangtools/rfc8528/parser/MountPointStatementSupport.java
parser/rfc8528-parser-support/src/main/java/org/opendaylight/yangtools/rfc8528/parser/RefMountPointStatement.java

index 211a7e21c8c7ff0857d0dbbf2b0b082d5043abf4..8f624fd8eba5b02d01ad6288ff146d6a2e2ceb2f 100644 (file)
             <groupId>org.opendaylight.yangtools</groupId>
             <artifactId>yang-model-api</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.opendaylight.yangtools</groupId>
-            <artifactId>rfc8528-model-api</artifactId>
-        </dependency>
         <dependency>
             <groupId>org.opendaylight.yangtools</groupId>
             <artifactId>yang-model-util</artifactId>
index 0655c6c78fc51d15a34238a75f3f76ef717a60bf..535ff6ee37e2016b8345eb9fcf2f5d3b69a9df9a 100644 (file)
@@ -20,7 +20,7 @@ import java.util.regex.Pattern;
 import javax.xml.transform.dom.DOMSource;
 import org.checkerframework.checker.regex.qual.Regex;
 import org.eclipse.jdt.annotation.Nullable;
-import org.opendaylight.yangtools.rfc8528.model.api.MountPointLabel;
+import org.opendaylight.yangtools.yang.common.MountPointLabel;
 import org.opendaylight.yangtools.yang.common.XMLNamespace;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
similarity index 55%
rename from model/rfc8528-model-api/src/main/java/org/opendaylight/yangtools/rfc8528/model/api/MountPointLabel.java
rename to common/yang-common/src/main/java/org/opendaylight/yangtools/yang/common/MountPointLabel.java
index 72e42fdd9be42031673734172ecec375da9a42c7..29760421040e056c4986b4ba3431d720a6378656 100644 (file)
@@ -5,47 +5,42 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.yangtools.rfc8528.model.api;
+package org.opendaylight.yangtools.yang.common;
 
 import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
-import com.google.common.cache.CacheBuilder;
-import com.google.common.cache.CacheLoader;
-import com.google.common.cache.LoadingCache;
+import com.google.common.collect.Interner;
+import com.google.common.collect.Interners;
 import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.opendaylight.yangtools.concepts.Identifier;
 import org.opendaylight.yangtools.concepts.WritableObject;
-import org.opendaylight.yangtools.yang.common.QName;
 
-@Beta
 @NonNullByDefault
 public record MountPointLabel(QName qname) implements Identifier, WritableObject {
     @java.io.Serial
     private static final long serialVersionUID = 1L;
-
-    private static final LoadingCache<QName, MountPointLabel> CACHE = CacheBuilder.newBuilder().weakValues()
-        .build(new CacheLoader<QName, MountPointLabel>() {
-            @Override
-            public MountPointLabel load(final QName key) {
-                return new MountPointLabel(key);
-            }
-        });
+    private static final Interner<MountPointLabel> INTERNER = Interners.newWeakInterner();
 
     public MountPointLabel {
         requireNonNull(qname);
     }
 
-    public static MountPointLabel create(final QName qname) {
-        final var existing = CACHE.getIfPresent(qname);
-        return existing != null ? existing : CACHE.getUnchecked(qname.intern());
+    public MountPointLabel intern() {
+        final var cacheQName = qname.intern();
+
+        // Identity comparison is here on purpose, as we are deciding whether to potentially store 'qname'. It is
+        // important that it does not hold user-supplied reference (such a String instance from parsing of an XML
+        // document).
+        final var template = cacheQName == qname ? this : new MountPointLabel(cacheQName);
+
+        return INTERNER.intern(template);
     }
 
     public static MountPointLabel readFrom(final DataInput in) throws IOException {
-        return create(QName.readFrom(in));
+        return new MountPointLabel(QName.readFrom(in));
     }
 
     @Override
index bc7f6527ebf3ece3a688ccffd23872226e6013da..824657385f9af0b737105c1f5fe5c4424f4466cf 100644 (file)
             <groupId>org.opendaylight.yangtools</groupId>
             <artifactId>yang-model-spi</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.opendaylight.yangtools</groupId>
-            <artifactId>rfc8528-model-api</artifactId>
-        </dependency>
 
         <dependency>
             <groupId>org.opendaylight.yangtools</groupId>
index 5bdecabaa6d16bd2db91bfd212f85161c32f346b..177ce87464e1315adab3829787eee342ae13ace4 100644 (file)
@@ -19,7 +19,6 @@ module org.opendaylight.yangtools.yang.data.api {
     requires transitive org.opendaylight.yangtools.util;
     requires transitive org.opendaylight.yangtools.yang.common;
     requires transitive org.opendaylight.yangtools.yang.model.api;
-    requires transitive org.opendaylight.yangtools.rfc8528.model.api;
     requires org.opendaylight.yangtools.yang.model.spi;
     requires org.slf4j;
 
index 550e5d372b81fb8447822a5ee43d9d84adf5c4d3..33a33a52cdb8cba56c9d64ef98fb1fc51e234ccc 100644 (file)
@@ -8,7 +8,7 @@
 package org.opendaylight.yangtools.yang.data.api.schema;
 
 import java.util.Optional;
-import org.opendaylight.yangtools.rfc8528.model.api.MountPointLabel;
+import org.opendaylight.yangtools.yang.common.MountPointLabel;
 import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
 import org.opendaylight.yangtools.yang.model.spi.AbstractEffectiveModelContextProvider;
 
index 4bd58cb94f5258cfd5efe338a55baffc372918c0..0086d8730f6010179f6a44c810686147414e6def 100644 (file)
@@ -9,7 +9,7 @@ package org.opendaylight.yangtools.yang.data.api.schema;
 
 import java.util.Optional;
 import org.eclipse.jdt.annotation.NonNull;
-import org.opendaylight.yangtools.rfc8528.model.api.MountPointLabel;
+import org.opendaylight.yangtools.yang.common.MountPointLabel;
 import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
 import org.opendaylight.yangtools.yang.model.api.EffectiveModelContextProvider;
 
index a2a757d2fb4ab2e97bf3276cc8760060519cf111..ffc3a67d312a07ee0d9e15c950c7f253c406e6a2 100644 (file)
@@ -8,7 +8,7 @@
 package org.opendaylight.yangtools.yang.data.api.schema;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
-import org.opendaylight.yangtools.rfc8528.model.api.MountPointLabel;
+import org.opendaylight.yangtools.yang.common.MountPointLabel;
 
 /**
  * Normalized representation of a YANG mount point. This is a {@link NormalizedTuple}, with a {@link #label()} and the
index de28184832defd03d62eae1c5f1f12ab0e8ae8e2..8d35cce11d57d2e7d3da60f95e381476d6f9c9c5 100644 (file)
@@ -19,7 +19,7 @@ import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.opendaylight.yangtools.concepts.ExtensibleObject;
 import org.opendaylight.yangtools.concepts.ObjectExtension;
-import org.opendaylight.yangtools.rfc8528.model.api.MountPointLabel;
+import org.opendaylight.yangtools.yang.common.MountPointLabel;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
index 306b3f39b8ef2b0182569bb27f629c2bb479e2d4..7e343d2c15727dc6d2a9ef54c3017e0e5178e132 100644 (file)
             <groupId>org.opendaylight.yangtools</groupId>
             <artifactId>yang-model-util</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.opendaylight.yangtools</groupId>
-            <artifactId>rfc8528-model-api</artifactId>
-        </dependency>
 
         <dependency>
             <groupId>org.xmlunit</groupId>
index 5bf0b1d879c07070339c83e03fbb2ee4e2676106..572435c02a6f6ac8a343f7d98fc6e5fe84e12a75 100644 (file)
@@ -16,7 +16,7 @@ import java.util.ArrayDeque;
 import java.util.Deque;
 import java.util.List;
 import org.eclipse.jdt.annotation.NonNullByDefault;
-import org.opendaylight.yangtools.rfc8528.model.api.MountPointLabel;
+import org.opendaylight.yangtools.yang.common.MountPointLabel;
 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.MountPointContext;
index 1ade91ec584c09eb3a52c4fd8d73d5a13c1e9f21..1d0375721c1006961d12fb42b54d2ed9890ef108 100644 (file)
@@ -11,7 +11,7 @@ import static java.util.Objects.requireNonNull;
 
 import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.Nullable;
-import org.opendaylight.yangtools.rfc8528.model.api.MountPointLabel;
+import org.opendaylight.yangtools.yang.common.MountPointLabel;
 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
 import org.opendaylight.yangtools.yang.data.api.schema.MountPointContext;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedMetadata;
index 03389fa3a66a740929b622441a8095e0a94dee53..b57acd49b6d497ce84e9ae00f2dd5a786f6ebe9b 100644 (file)
@@ -20,6 +20,7 @@ module org.opendaylight.yangtools.yang.data.util {
 
     requires java.xml;
     requires org.opendaylight.yangtools.util;
+    requires org.opendaylight.yangtools.rfc8528.model.api;
     requires org.slf4j;
 
     // Annotations
index a67cf02e0068e86e69b904869dbc2a862c2a6a22..d62cc49903903ae83072090350cc38ae4491baf7 100644 (file)
@@ -14,7 +14,7 @@ import java.util.Map.Entry;
 import java.util.Optional;
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.yangtools.concepts.AbstractSimpleIdentifiable;
-import org.opendaylight.yangtools.rfc8528.model.api.MountPointLabel;
+import org.opendaylight.yangtools.yang.common.MountPointLabel;
 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
 import org.opendaylight.yangtools.yang.data.api.schema.MountPointChild;
 import org.opendaylight.yangtools.yang.data.api.schema.MountPointContext;
index 5344fb1ec80d40ee12b76e487308a107797a258e..c70c49469c8446d8d36099751bd5455d28e744ef 100644 (file)
@@ -16,8 +16,8 @@ import java.util.Iterator;
 import java.util.stream.Collectors;
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.opendaylight.yangtools.concepts.Immutable;
-import org.opendaylight.yangtools.rfc8528.model.api.MountPointLabel;
 import org.opendaylight.yangtools.rfc8528.model.api.SchemaMountConstants;
+import org.opendaylight.yangtools.yang.common.MountPointLabel;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
@@ -103,12 +103,12 @@ public abstract class AbstractMountPointContextFactory extends AbstractDynamicMo
             final QNameModule module = it.next().getQNameModule();
 
             return new MountPointDefinition(
-                MountPointLabel.create(QName.create(module, entry.findChildByArg(LABEL).map(lbl -> {
+                new MountPointLabel(QName.create(module, entry.findChildByArg(LABEL).map(lbl -> {
                     checkArgument(lbl instanceof LeafNode, "Unexpected label leaf %s", lbl);
                     final Object value = lbl.body();
                     checkArgument(value instanceof String, "Unexpected label leaf value %s", value);
                     return (String) value;
-                }).orElseThrow(() -> new IllegalArgumentException("Mount module missing in " + entry)))),
+                }).orElseThrow(() -> new IllegalArgumentException("Mount module missing in " + entry)))).intern(),
                 entry.findChildByArg(CONFIG).map(cfg -> {
                     checkArgument(cfg instanceof LeafNode, "Unexpected config leaf %s", cfg);
                     final Object value = cfg.body();
index 0ed63fd41414e96d716b566b5df3722a6a4221a9..eeedcbbc4d3a3ae52eca79a852b8d6c49c7fb1bc 100644 (file)
@@ -11,7 +11,7 @@ import static com.google.common.base.Preconditions.checkState;
 
 import com.google.common.annotations.Beta;
 import java.io.IOException;
-import org.opendaylight.yangtools.rfc8528.model.api.MountPointLabel;
+import org.opendaylight.yangtools.yang.common.MountPointLabel;
 import org.opendaylight.yangtools.yang.data.api.schema.MountPointContextFactory;
 import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
 import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter.MetadataExtension;
index 9891326b176cc1de24b5c62b8fcd265dd6066dec..671d2f4075d36540eb12c67a5ba251f95675cc1b 100644 (file)
@@ -15,7 +15,7 @@ import com.google.common.collect.Maps;
 import java.util.Optional;
 import java.util.function.Function;
 import org.opendaylight.yangtools.concepts.Immutable;
-import org.opendaylight.yangtools.rfc8528.model.api.MountPointLabel;
+import org.opendaylight.yangtools.yang.common.MountPointLabel;
 import org.opendaylight.yangtools.yang.data.api.schema.MountPointContext;
 import org.opendaylight.yangtools.yang.data.api.schema.MountPointContextFactory;
 import org.opendaylight.yangtools.yang.data.util.AbstractMountPointContextFactory.MountPointDefinition;
index 0a7f9e0ab0115502ff1f54934d91048fdb926223..ce6507b6310d9387c5138124f649b1d47f07bca8 100644 (file)
@@ -18,7 +18,7 @@ import java.util.List;
 import java.util.Map;
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.yangtools.concepts.AbstractSimpleIdentifiable;
-import org.opendaylight.yangtools.rfc8528.model.api.MountPointLabel;
+import org.opendaylight.yangtools.yang.common.MountPointLabel;
 import org.opendaylight.yangtools.yang.data.api.schema.MountPointChild;
 import org.opendaylight.yangtools.yang.data.api.schema.MountPointContext;
 import org.opendaylight.yangtools.yang.data.api.schema.MountPointContextFactory;
index 23ccbc70dbb44b712250f841acc2ee001ffe29e2..54d0f3faeb64f01c3f8f56dec92dc01c89ab0a39 100644 (file)
             <groupId>com.google.guava</groupId>
             <artifactId>guava</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.opendaylight.yangtools</groupId>
-            <artifactId>concepts</artifactId>
-        </dependency>
         <dependency>
             <groupId>org.opendaylight.yangtools</groupId>
             <artifactId>yang-common</artifactId>
index 807fa28f672b7dab0dcf7bdd468a5220ee5a80db..67eff0ae20f3f3a32377c8a95cdcb82aebfacd4f 100644 (file)
@@ -8,6 +8,7 @@
 package org.opendaylight.yangtools.rfc8528.model.api;
 
 import com.google.common.annotations.Beta;
+import org.opendaylight.yangtools.yang.common.MountPointLabel;
 import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
 import org.opendaylight.yangtools.yang.model.api.stmt.UnknownEffectiveStatement;
 
index 97aa2d9c8db9bda99c231c78674d6ad771b6ab8d..0ae1407a2cb848aa21ee99243a9d810b47849a60 100644 (file)
@@ -8,6 +8,7 @@
 package org.opendaylight.yangtools.rfc8528.model.api;
 
 import com.google.common.annotations.Beta;
+import org.opendaylight.yangtools.yang.common.MountPointLabel;
 import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
 import org.opendaylight.yangtools.yang.model.api.stmt.ConfigStatementAwareDeclaredStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.DocumentedDeclaredStatement.WithStatus;
index b970fbf751c00962992f4fbb0c9e9be3bc358ca1..f253952cc337b53abb4a231552d1479f967ff737 100644 (file)
@@ -9,9 +9,9 @@ package org.opendaylight.yangtools.rfc8528.parser;
 
 import com.google.common.collect.ImmutableList;
 import org.opendaylight.yangtools.rfc8528.model.api.MountPointEffectiveStatement;
-import org.opendaylight.yangtools.rfc8528.model.api.MountPointLabel;
 import org.opendaylight.yangtools.rfc8528.model.api.MountPointSchemaNode;
 import org.opendaylight.yangtools.rfc8528.model.api.MountPointStatement;
+import org.opendaylight.yangtools.yang.common.MountPointLabel;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.spi.meta.AbstractEffectiveUnknownSchmemaNode;
index 486086db9f98536837ef80baf42d4635343c3c31..9dcfa6d545ea38c7bb25db46ee919e4bb5e28a96 100644 (file)
@@ -11,8 +11,8 @@ import static java.util.Objects.requireNonNull;
 
 import com.google.common.collect.ImmutableList;
 import org.eclipse.jdt.annotation.NonNull;
-import org.opendaylight.yangtools.rfc8528.model.api.MountPointLabel;
 import org.opendaylight.yangtools.rfc8528.model.api.MountPointStatement;
+import org.opendaylight.yangtools.yang.common.MountPointLabel;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
 import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredStatement;
 
index b3106e2267a8150923c63b79265dc51a69abc72a..7d58dc711ec15fd2f510027df332ed9a77f1068f 100644 (file)
@@ -9,9 +9,9 @@ package org.opendaylight.yangtools.rfc8528.parser;
 
 import com.google.common.collect.ImmutableList;
 import org.opendaylight.yangtools.rfc8528.model.api.MountPointEffectiveStatement;
-import org.opendaylight.yangtools.rfc8528.model.api.MountPointLabel;
 import org.opendaylight.yangtools.rfc8528.model.api.MountPointStatement;
 import org.opendaylight.yangtools.rfc8528.model.api.SchemaMountStatements;
+import org.opendaylight.yangtools.yang.common.MountPointLabel;
 import org.opendaylight.yangtools.yang.common.QNameModule;
 import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclarationReference;
@@ -53,14 +53,14 @@ public final class MountPointStatementSupport
     // We are not doing exactly that, in that we can end up rebinding the argument through 'augment', I think.
     @Override
     public MountPointLabel parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
-        return MountPointLabel.create(StmtContextUtils.parseIdentifier(ctx, value));
+        return new MountPointLabel(StmtContextUtils.parseIdentifier(ctx, value)).intern();
     }
 
     @Override
     public MountPointLabel adaptArgumentValue(
             final StmtContext<MountPointLabel, MountPointStatement, MountPointEffectiveStatement> ctx,
             final QNameModule targetModule) {
-        return MountPointLabel.create(ctx.getArgument().qname().bindTo(targetModule));
+        return new MountPointLabel(ctx.getArgument().qname().bindTo(targetModule)).intern();
     }
 
     @Override
index cbb8f22da11e476035fc7c88c52b246f7064e2eb..bce60639e32c6a203f3ebe50977ae9acc2e889c6 100644 (file)
@@ -7,8 +7,8 @@
  */
 package org.opendaylight.yangtools.rfc8528.parser;
 
-import org.opendaylight.yangtools.rfc8528.model.api.MountPointLabel;
 import org.opendaylight.yangtools.rfc8528.model.api.MountPointStatement;
+import org.opendaylight.yangtools.yang.common.MountPointLabel;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclarationReference;
 import org.opendaylight.yangtools.yang.model.spi.meta.AbstractRefStatement;