/* * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. * * This program and the accompanying materials are made available under the * 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.yang.model.api; import com.google.common.collect.ImmutableSet; import java.util.Set; import javax.annotation.Nonnull; /** * Interface describing YANG 'identity' statement. * <p> * The 'identity' statement is used to define a new globally unique, abstract, * and untyped identity. Its only purpose is to denote its name, semantics, and * existence. The built-in datatype "identityref" can be used to reference * identities within a data model. * </p> */ public interface IdentitySchemaNode extends SchemaNode { /** * @deprecated use {@link #getBaseIdentities()} instead * * @return an existing identity, from which the new identity is derived or * null, if the identity is defined from scratch. */ @Deprecated IdentitySchemaNode getBaseIdentity(); /** * The YANG 1.0 (RFC6020) implementation of IdentitySchemaNode always returns an ImmutableSet containing just one * base identity or an empty ImmutableSet as it does not support multiple base identities. * Starting with YANG 1.1 (RFC7950), the identity can be derived from multiple base identities. * * @return set of existing identities from which the new identity is derived or * an empty ImmutableSet if the identity is defined from scratch. */ // FIXME: version 2.0.0: make this method non-default @Nonnull default Set<IdentitySchemaNode> getBaseIdentities() { final IdentitySchemaNode base = getBaseIdentity(); return base == null ? ImmutableSet.of() : ImmutableSet.of(base); } /** * Get identities derived from this identity. * * @return collection of identities derived from this identity */ Set<IdentitySchemaNode> getDerivedIdentities(); }