From: Robert Varga Date: Wed, 11 May 2022 11:37:42 +0000 (+0200) Subject: Improve IdentityrefTypeDefinition X-Git-Tag: v9.0.0~67 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=yangtools.git;a=commitdiff_plain;h=a52b7c01f9766623098cbc06fda14cffc6f91cb3 Improve IdentityrefTypeDefinition Base identities are guaranteed to be non-null, annotate that and use ImmutableSet for internal implementation. Change-Id: I8e2356bd63a5cb41d4b2a01103a1444bd4e82ef4 Signed-off-by: Robert Varga --- diff --git a/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/IdentityrefTypeDefinition.java b/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/IdentityrefTypeDefinition.java index 0f572d22b1..51c253abc3 100644 --- a/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/IdentityrefTypeDefinition.java +++ b/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/IdentityrefTypeDefinition.java @@ -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 identityref built-in YANG type. + * Contains method for getting data from {@code identityref} built-in YANG type. */ public interface IdentityrefTypeDefinition extends TypeDefinition { /** @@ -24,7 +24,7 @@ public interface IdentityrefTypeDefinition extends TypeDefinition getIdentities(); + @NonNull Set getIdentities(); static int hashCode(final @NonNull IdentityrefTypeDefinition type) { return Objects.hash(type.getQName(), type.getUnknownSchemaNodes(), type.getBaseType(), diff --git a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/type/BaseIdentityrefType.java b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/type/BaseIdentityrefType.java index 947e6bd832..a3bfaaa778 100644 --- a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/type/BaseIdentityrefType.java +++ b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/type/BaseIdentityrefType.java @@ -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 implements IdentityrefTypeDefinition { - private final @NonNull Set identities; + private final @NonNull ImmutableSet<@NonNull IdentitySchemaNode> identities; BaseIdentityrefType(final QName qname, final Collection unknownSchemaNodes, - final Set identities) { + final ImmutableSet<@NonNull IdentitySchemaNode> identities) { super(qname, unknownSchemaNodes); this.identities = requireNonNull(identities); } @Override - public Set getIdentities() { + public Set<@NonNull IdentitySchemaNode> getIdentities() { return identities; } diff --git a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/type/IdentityrefTypeBuilder.java b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/type/IdentityrefTypeBuilder.java index 9d75aacc9f..d92f7fe0dd 100644 --- a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/type/IdentityrefTypeBuilder.java +++ b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/type/IdentityrefTypeBuilder.java @@ -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 { - private final Builder 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 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); }