Update Unique{Constraint,EffectiveStatetement,Statement} design 76/80576/3
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 25 Feb 2019 13:24:21 +0000 (14:24 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Mon, 25 Feb 2019 14:08:23 +0000 (15:08 +0100)
The argument to 'unique' is required to be a set of relative paths,
rather than a plain collection. Reflect that in the design of these
interfaces.

Change-Id: I3a870fdf16897cfff52b46bfde946869d501560b
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/UniqueConstraint.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/UniqueEffectiveStatement.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/UniqueStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/unique/UniqueEffectiveStatementImpl.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/unique/UniqueStatementImpl.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/unique/UniqueStatementSupport.java

index eb21b719eadf5230fd29f8d735b0739ac7d90ecb..92ba5530f137f9b650203a47ecce207db61b838a 100644 (file)
@@ -8,7 +8,7 @@
 package org.opendaylight.yangtools.yang.model.api;
 
 import com.google.common.annotations.Beta;
-import java.util.Collection;
+import java.util.Set;
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Relative;
 
@@ -22,6 +22,5 @@ import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Relat
  */
 @Beta
 public interface UniqueConstraint {
-    // FIXME: 3.0.0: return Set<Relative>
-    @NonNull Collection<Relative> getTag();
+    @NonNull Set<Relative> getTag();
 }
index 6bd78f86904e9d38ba714f881da781ba53fb35f0..f487414a52583ce801f85d27f5addf40bf6e6c6d 100644 (file)
@@ -8,11 +8,11 @@
 package org.opendaylight.yangtools.yang.model.api.stmt;
 
 import com.google.common.annotations.Beta;
-import java.util.Collection;
+import java.util.Set;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Relative;
 
 @Beta
-public interface UniqueEffectiveStatement extends EffectiveStatement<Collection<Relative>, UniqueStatement> {
+public interface UniqueEffectiveStatement extends EffectiveStatement<Set<Relative>, UniqueStatement> {
 
 }
index 2712cb970192448e4e1c8f4ff4a691f62c59c9fa..774418028366db0b516fd00839633ccee78538d2 100644 (file)
@@ -9,13 +9,13 @@ package org.opendaylight.yangtools.yang.model.api.stmt;
 
 import static com.google.common.base.Verify.verifyNotNull;
 
-import java.util.Collection;
+import java.util.Set;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Relative;
 
-public interface UniqueStatement extends DeclaredStatement<Collection<SchemaNodeIdentifier.Relative>> {
+public interface UniqueStatement extends DeclaredStatement<Set<SchemaNodeIdentifier.Relative>> {
 
-    default Collection<Relative> getTag() {
+    default Set<Relative> getTag() {
         // FIXME: YANGTOOLS-908: verifyNotNull() should not be needed here
         return verifyNotNull(argument());
     }
index ebc842efb62000ad726cbcdaeaf6cb52c0a8db2b..ddab93d2e62858aa6837ee606eafad137662edc1 100644 (file)
@@ -9,7 +9,7 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.unique;
 
 import static com.google.common.base.Verify.verifyNotNull;
 
-import java.util.Collection;
+import java.util.Set;
 import org.opendaylight.yangtools.yang.model.api.UniqueConstraint;
 import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Relative;
 import org.opendaylight.yangtools.yang.model.api.stmt.UniqueEffectiveStatement;
@@ -17,14 +17,14 @@ import org.opendaylight.yangtools.yang.model.api.stmt.UniqueStatement;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.DeclaredEffectiveStatementBase;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
 
-final class UniqueEffectiveStatementImpl extends DeclaredEffectiveStatementBase<Collection<Relative>, UniqueStatement>
+final class UniqueEffectiveStatementImpl extends DeclaredEffectiveStatementBase<Set<Relative>, UniqueStatement>
         implements UniqueConstraint, UniqueEffectiveStatement {
-    UniqueEffectiveStatementImpl(final StmtContext<Collection<Relative>, UniqueStatement, ?> ctx) {
+    UniqueEffectiveStatementImpl(final StmtContext<Set<Relative>, UniqueStatement, ?> ctx) {
         super(ctx);
     }
 
     @Override
-    public Collection<Relative> getTag() {
+    public Set<Relative> getTag() {
         // FIXME: YANGTOOLS-908: verifyNotNull() should not be needed here
         return verifyNotNull(argument());
     }
index c8bf424d0788f5b23d6a22baedc893deffd37249..06bf0824cdea37a98a8fce288b59f24b0d5fca64 100644 (file)
@@ -7,14 +7,14 @@
  */
 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.unique;
 
-import java.util.Collection;
+import java.util.Set;
 import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Relative;
 import org.opendaylight.yangtools.yang.model.api.stmt.UniqueStatement;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractDeclaredStatement;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
 
-final class UniqueStatementImpl extends AbstractDeclaredStatement<Collection<Relative>> implements UniqueStatement {
-    UniqueStatementImpl(final StmtContext<Collection<Relative>, UniqueStatement, ?> context) {
+final class UniqueStatementImpl extends AbstractDeclaredStatement<Set<Relative>> implements UniqueStatement {
+    UniqueStatementImpl(final StmtContext<Set<Relative>, UniqueStatement, ?> context) {
         super(context);
     }
 }
index 7098509c7d077f9e43c06e8ebd51c98f442164ee..73b54d75012c113e7350218a1187dbce119797f3 100644 (file)
@@ -10,7 +10,6 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.unique;
 import com.google.common.base.CharMatcher;
 import com.google.common.base.Splitter;
 import com.google.common.collect.ImmutableSet;
-import java.util.Collection;
 import java.util.HashSet;
 import java.util.Set;
 import java.util.regex.Pattern;
@@ -25,8 +24,8 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
 import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
 import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
 
-public final class UniqueStatementSupport extends AbstractStatementSupport<Collection<Relative>, UniqueStatement,
-        EffectiveStatement<Collection<Relative>, UniqueStatement>> {
+public final class UniqueStatementSupport extends AbstractStatementSupport<Set<Relative>, UniqueStatement,
+        EffectiveStatement<Set<Relative>, UniqueStatement>> {
     /**
      * Support 'sep' ABNF rule in RFC7950 section 14. CRLF pattern is used to squash line-break from CRLF to LF form
      * and then we use SEP_SPLITTER, which can operate on single characters.
@@ -58,14 +57,13 @@ public final class UniqueStatementSupport extends AbstractStatementSupport<Colle
     }
 
     @Override
-    public UniqueStatement createDeclared(final StmtContext<Collection<Relative>, UniqueStatement, ?> ctx) {
+    public UniqueStatement createDeclared(final StmtContext<Set<Relative>, UniqueStatement, ?> ctx) {
         return new UniqueStatementImpl(ctx);
     }
 
     @Override
-    public EffectiveStatement<Collection<Relative>, UniqueStatement> createEffective(
-            final StmtContext<Collection<Relative>, UniqueStatement, EffectiveStatement<Collection<Relative>,
-            UniqueStatement>> ctx) {
+    public EffectiveStatement<Set<Relative>, UniqueStatement> createEffective(
+            final StmtContext<Set<Relative>, UniqueStatement, EffectiveStatement<Set<Relative>, UniqueStatement>> ctx) {
         return new UniqueEffectiveStatementImpl(ctx);
     }