Improve IdentityrefTypeDefinition 65/101065/3
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 11 May 2022 11:37:42 +0000 (13:37 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Wed, 11 May 2022 12:02:12 +0000 (14:02 +0200)
Base identities are guaranteed to be non-null, annotate that and
use ImmutableSet for internal implementation.

Change-Id: I8e2356bd63a5cb41d4b2a01103a1444bd4e82ef4
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/IdentityrefTypeDefinition.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/type/BaseIdentityrefType.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/type/IdentityrefTypeBuilder.java

index 0f572d22b1075f2d9698f42de80a1a8db6d6b831..51c253abc34725c8db01d05ed6ce998d03d28042 100644 (file)
@@ -15,7 +15,7 @@ import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode;
 import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
 
 /**
- * Contains method for getting data from <code>identityref</code> built-in YANG type.
+ * Contains method for getting data from {@code identityref} built-in YANG type.
  */
 public interface IdentityrefTypeDefinition extends TypeDefinition<IdentityrefTypeDefinition> {
     /**
@@ -24,7 +24,7 @@ public interface IdentityrefTypeDefinition extends TypeDefinition<IdentityrefTyp
      * @return set of identities to which the instance of this type refers (in YANG 1.1 models) or a set containing
      *         just one identity (in YANG 1.0 models)
      */
-    @NonNull Set<? extends IdentitySchemaNode> getIdentities();
+    @NonNull Set<? extends @NonNull IdentitySchemaNode> getIdentities();
 
     static int hashCode(final @NonNull IdentityrefTypeDefinition type) {
         return Objects.hash(type.getQName(), type.getUnknownSchemaNodes(), type.getBaseType(),
index 947e6bd832ee65a78d61b4f5c356aa85aace4f2b..a3bfaaa7787a7a1df401ec060f5f5d4e3bb67e31 100644 (file)
@@ -9,6 +9,7 @@ package org.opendaylight.yangtools.yang.model.ri.type;
 
 import static java.util.Objects.requireNonNull;
 
+import com.google.common.collect.ImmutableSet;
 import java.util.Collection;
 import java.util.Set;
 import org.eclipse.jdt.annotation.NonNull;
@@ -19,16 +20,16 @@ import org.opendaylight.yangtools.yang.model.api.type.IdentityrefTypeDefinition;
 
 final class BaseIdentityrefType extends AbstractBaseType<IdentityrefTypeDefinition>
         implements IdentityrefTypeDefinition {
-    private final @NonNull Set<? extends IdentitySchemaNode> identities;
+    private final @NonNull ImmutableSet<@NonNull IdentitySchemaNode> identities;
 
     BaseIdentityrefType(final QName qname, final Collection<? extends UnknownSchemaNode> unknownSchemaNodes,
-            final Set<? extends IdentitySchemaNode> identities) {
+            final ImmutableSet<@NonNull IdentitySchemaNode> identities) {
         super(qname, unknownSchemaNodes);
         this.identities = requireNonNull(identities);
     }
 
     @Override
-    public Set<? extends IdentitySchemaNode> getIdentities() {
+    public Set<@NonNull IdentitySchemaNode> getIdentities() {
         return identities;
     }
 
index 9d75aacc9f51383a5973214c2b10138ef5fda95d..d92f7fe0dd67525e3b9b0e56124aa45f6908a26d 100644 (file)
@@ -11,14 +11,13 @@ import static com.google.common.base.Preconditions.checkState;
 
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.ImmutableSet.Builder;
-import java.util.Set;
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode;
 import org.opendaylight.yangtools.yang.model.api.type.IdentityrefTypeDefinition;
 
 public final class IdentityrefTypeBuilder extends TypeBuilder<IdentityrefTypeDefinition> {
-    private final Builder<IdentitySchemaNode> builder = ImmutableSet.builder();
+    private final Builder<@NonNull IdentitySchemaNode> builder = ImmutableSet.builder();
 
     IdentityrefTypeBuilder(final QName qname) {
         super(null, qname);
@@ -31,7 +30,7 @@ public final class IdentityrefTypeBuilder extends TypeBuilder<IdentityrefTypeDef
 
     @Override
     public IdentityrefTypeDefinition build() {
-        final Set<IdentitySchemaNode> identities = builder.build();
+        final var identities = builder.build();
         checkState(!identities.isEmpty(), "No identities specified in %s, at least one is required", getQName());
         return new BaseIdentityrefType(getQName(), getUnknownSchemaNodes(), identities);
     }