From 169e6953439ad706b65b9fa9d28cba26b62fb438 Mon Sep 17 00:00:00 2001 From: Tony Tkacik Date: Thu, 29 Jan 2015 17:39:25 +0100 Subject: [PATCH] Bug 2444: Added concrete API definitions for YANG statements. Introduced type captures of DeclaredStatement for RFC6020 statments along with some convenience getters to decrease need of users to look up statements in collections. This getters conveys RFC6020 semantic, but does not prevent access to any statements which may be introduced in later versions of YANG. Change-Id: I7ca3265aa7fc141446515e27f02c37ff3b5903dc Signed-off-by: Tony Tkacik --- .../yang/model/api/ContainerSchemaNode.java | 1 + .../yang/model/api/Rfc6020Mapping.java | 209 +++++++++++ .../yang/model/api/package-info.java | 22 +- .../yang/model/api/stmt/AnyxmlStatement.java | 22 ++ .../model/api/stmt/ArgumentStatement.java | 25 ++ .../yang/model/api/stmt/AugmentStatement.java | 17 + .../yang/model/api/stmt/BaseStatement.java | 18 + .../model/api/stmt/BelongsToStatement.java | 19 + .../yang/model/api/stmt/BitStatement.java | 21 ++ .../yang/model/api/stmt/BodyGroup.java | 31 ++ .../yang/model/api/stmt/CaseStatement.java | 19 + .../yang/model/api/stmt/ChoiceStatement.java | 25 ++ .../api/stmt/ConditionalDataDefinition.java | 14 + .../model/api/stmt/ConditionalFeature.java | 19 + .../yang/model/api/stmt/ConfigStatement.java | 17 + .../yang/model/api/stmt/ContactStatement.java | 18 + .../model/api/stmt/ContainerStatement.java | 22 ++ .../api/stmt/DataDefinitionContainer.java | 26 ++ .../api/stmt/DataDefinitionStatement.java | 30 ++ .../yang/model/api/stmt/DefaultStatement.java | 17 + .../model/api/stmt/DescriptionStatement.java | 17 + .../yang/model/api/stmt/DeviateStatement.java | 17 + .../model/api/stmt/DeviationStatement.java | 18 + .../model/api/stmt/DocumentationGroup.java | 26 ++ .../api/stmt/DocumentedConstraintGroup.java | 18 + .../yang/model/api/stmt/EnumStatement.java | 21 ++ .../model/api/stmt/ErrorAppTagStatement.java | 17 + .../model/api/stmt/ErrorMessageStatement.java | 17 + .../model/api/stmt/ExtensionStatement.java | 19 + .../yang/model/api/stmt/FeatureStatement.java | 18 + .../api/stmt/FractionDigitsStatement.java | 17 + .../model/api/stmt/GroupingStatement.java | 19 + .../model/api/stmt/IdentityStatement.java | 21 ++ .../model/api/stmt/IfFeatureStatement.java | 18 + .../yang/model/api/stmt/ImportStatement.java | 22 ++ .../yang/model/api/stmt/IncludeStatement.java | 22 ++ .../yang/model/api/stmt/InputStatement.java | 14 + .../yang/model/api/stmt/KeyStatement.java | 16 + .../model/api/stmt/LeafListStatement.java | 21 ++ .../yang/model/api/stmt/LeafStatement.java | 25 ++ .../yang/model/api/stmt/LengthStatement.java | 17 + .../yang/model/api/stmt/LinkageGroup.java | 20 + .../yang/model/api/stmt/ListStatement.java | 24 ++ .../model/api/stmt/MandatoryStatement.java | 17 + .../model/api/stmt/MaxElementsStatement.java | 17 + .../yang/model/api/stmt/MetaGroup.java | 20 + .../model/api/stmt/MinElementsStatement.java | 17 + .../model/api/stmt/ModuleHeaderGroup.java | 20 + .../yang/model/api/stmt/ModuleStatement.java | 20 + .../model/api/stmt/MultipleElementsGroup.java | 19 + .../yang/model/api/stmt/MustStatement.java | 18 + .../model/api/stmt/NamespaceStatement.java | 18 + .../model/api/stmt/NotificationStatement.java | 17 + .../model/api/stmt/OrderedByStatement.java | 17 + .../model/api/stmt/OrganizationStatement.java | 17 + .../yang/model/api/stmt/OutputStatement.java | 14 + .../yang/model/api/stmt/PathStatement.java | 20 + .../yang/model/api/stmt/PatternStatement.java | 17 + .../model/api/stmt/PositionStatement.java | 17 + .../yang/model/api/stmt/PrefixStatement.java | 17 + .../model/api/stmt/PresenceStatement.java | 17 + .../yang/model/api/stmt/RangeStatement.java | 17 + .../model/api/stmt/ReferenceStatement.java | 18 + .../yang/model/api/stmt/RefineStatement.java | 42 +++ .../api/stmt/RequireInstanceStatement.java | 18 + .../model/api/stmt/RevisionDateStatement.java | 16 + .../yang/model/api/stmt/RevisionGroup.java | 18 + .../model/api/stmt/RevisionStatement.java | 16 + .../yang/model/api/stmt/Rfc6020AbnfRule.java | 37 ++ .../yang/model/api/stmt/RpcStatement.java | 17 + .../model/api/stmt/SchemaNodeIdentifier.java | 345 ++++++++++++++++++ .../yang/model/api/stmt/StatusStatement.java | 17 + .../model/api/stmt/SubmoduleStatement.java | 28 ++ .../yang/model/api/stmt/TypeGroup.java | 18 + .../yang/model/api/stmt/TypeStatement.java | 79 ++++ .../yang/model/api/stmt/TypedefStatement.java | 20 + .../yang/model/api/stmt/UniqueStatement.java | 18 + .../yang/model/api/stmt/UnitsStatement.java | 18 + .../yang/model/api/stmt/UnknownStatement.java | 16 + .../yang/model/api/stmt/UsesStatement.java | 25 ++ .../yang/model/api/stmt/ValueStatement.java | 17 + .../yang/model/api/stmt/WhenStatement.java | 19 + .../model/api/stmt/YangVersionStatement.java | 15 + .../model/api/stmt/YinElementStatement.java | 17 + 84 files changed, 2204 insertions(+), 2 deletions(-) create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/Rfc6020Mapping.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/AnyxmlStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ArgumentStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/AugmentStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/BaseStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/BelongsToStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/BitStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/BodyGroup.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/CaseStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ChoiceStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ConditionalDataDefinition.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ConditionalFeature.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ConfigStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ContactStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ContainerStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/DataDefinitionContainer.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/DataDefinitionStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/DefaultStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/DescriptionStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/DeviateStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/DeviationStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/DocumentationGroup.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/DocumentedConstraintGroup.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/EnumStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ErrorAppTagStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ErrorMessageStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ExtensionStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/FeatureStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/FractionDigitsStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/GroupingStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/IdentityStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/IfFeatureStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ImportStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/IncludeStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/InputStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/KeyStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/LeafListStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/LeafStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/LengthStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/LinkageGroup.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ListStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/MandatoryStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/MaxElementsStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/MetaGroup.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/MinElementsStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ModuleHeaderGroup.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ModuleStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/MultipleElementsGroup.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/MustStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/NamespaceStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/NotificationStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/OrderedByStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/OrganizationStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/OutputStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/PathStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/PatternStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/PositionStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/PrefixStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/PresenceStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RangeStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ReferenceStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RefineStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RequireInstanceStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RevisionDateStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RevisionGroup.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RevisionStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/Rfc6020AbnfRule.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RpcStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/SchemaNodeIdentifier.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/StatusStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/SubmoduleStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/TypeGroup.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/TypeStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/TypedefStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/UniqueStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/UnitsStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/UnknownStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/UsesStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ValueStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/WhenStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/YangVersionStatement.java create mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/YinElementStatement.java diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ContainerSchemaNode.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ContainerSchemaNode.java index 4a2473cd8d..3f0f330413 100644 --- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ContainerSchemaNode.java +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ContainerSchemaNode.java @@ -7,6 +7,7 @@ */ package org.opendaylight.yangtools.yang.model.api; + /** * The ContainerSchemaNode is used to define an interior data node in the schema * tree. There are two styles of containers, those that exist only for diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/Rfc6020Mapping.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/Rfc6020Mapping.java new file mode 100644 index 0000000000..93f97ec905 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/Rfc6020Mapping.java @@ -0,0 +1,209 @@ +/* + * Copyright (c) 2015 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.annotations.Beta; +import com.google.common.base.Preconditions; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.common.YangConstants; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; +import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition; +import org.opendaylight.yangtools.yang.model.api.stmt.AnyxmlStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.ArgumentStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.AugmentStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.BaseStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.BelongsToStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.BitStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.CaseStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.ChoiceStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.ConfigStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.ContactStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.ContainerStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.DefaultStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.DescriptionStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.DeviateStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.DeviationStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.EnumStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.ErrorAppTagStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.ErrorMessageStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.ExtensionStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.FeatureStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.FractionDigitsStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.GroupingStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.IdentityStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.IfFeatureStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.ImportStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.IncludeStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.InputStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.KeyStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.LeafListStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.LeafStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.LengthStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.ListStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.MandatoryStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.MaxElementsStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.MinElementsStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.ModuleStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.MustStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.NamespaceStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.NotificationStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.OrderedByStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.OrganizationStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.OutputStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.PathStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.PatternStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.PositionStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.PrefixStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.PresenceStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.RangeStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.ReferenceStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.RefineStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.RequireInstanceStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.RevisionDateStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.RevisionStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.RpcStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.StatusStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.SubmoduleStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.TypeStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.TypedefStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.UniqueStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.UnitsStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.UsesStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.ValueStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.WhenStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.YangVersionStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.YinElementStatement; + +@Beta +public enum Rfc6020Mapping implements StatementDefinition { + Anyxml(AnyxmlStatement.class, "anyxml", "name"), + Argument(ArgumentStatement.class, "argument", "name"), + Augment(AugmentStatement.class, "augment", "target-node"), + Base(BaseStatement.class, "base", "name"), + BelongsTo(BelongsToStatement.class, "belongs-to", "module"), + Bit(BitStatement.class, "bit", "name"), + Case(CaseStatement.class, "case", "name"), + Choice(ChoiceStatement.class, "choice", "name"), + Config(ConfigStatement.class, "config", "value"), + Contact(ContactStatement.class, "contact", "text", true), + Container(ContainerStatement.class, "container", "name"), + Default(DefaultStatement.class, "default", "value"), + Description(DescriptionStatement.class, "description", "text", true), + Deviate(DeviateStatement.class, "deviate", "value"), + Deviation(DeviationStatement.class, "deviation", "target-node"), + Enum(EnumStatement.class, "enum", "name"), + ErrorAppTag(ErrorAppTagStatement.class, "error-app-tag", "value"), + ErrorMessage(ErrorMessageStatement.class, "error-message", "value", true), + Extension(ExtensionStatement.class, "extension", "name"), + Feature(FeatureStatement.class, "feature", "name"), + FractionDigits(FractionDigitsStatement.class, "fraction-digits", "value"), + Grouping(GroupingStatement.class, "grouping", "name"), + Identity(IdentityStatement.class, "identity", "name"), + IfFeature(IfFeatureStatement.class, "if-feature", "name"), + Import(ImportStatement.class, "import", "module"), + Include(IncludeStatement.class, "include", "module"), + Input(InputStatement.class, "input"), + Key(KeyStatement.class, "key", "value"), + Leaf(LeafStatement.class, "leaf", "name"), + LeafList(LeafListStatement.class, "leaf-list", "name"), + Length(LengthStatement.class, "length", "value"), + List(ListStatement.class, "list", "name"), + Mandatory(MandatoryStatement.class, "mandatory", "value"), + MaxElements(MaxElementsStatement.class, "max-elements", "value"), + MinElements(MinElementsStatement.class, "min-elements", "value"), + Module(ModuleStatement.class, "module", "name"), + Must(MustStatement.class, "must", "condition"), + Namespace(NamespaceStatement.class, "namespace", "uri"), + Notification(NotificationStatement.class, "notification", "name"), + OrderedBy(OrderedByStatement.class, "ordered-by", "value"), + Organization(OrganizationStatement.class, "organization", "text", true), + Output(OutputStatement.class, "output"), + Path(PathStatement.class, "path", "value"), + Pattern(PatternStatement.class, "pattern", "value"), + Position(PositionStatement.class, "position", "value"), + Prefix(PrefixStatement.class, "prefix", "value"), + Presence(PresenceStatement.class, "presence", "value"), + Range(RangeStatement.class, "range", "value"), + Reference(ReferenceStatement.class, "reference", "text", true), + Refine(RefineStatement.class, "refine", "target-node"), + RequireInstance(RequireInstanceStatement.class, "require-instance", "value"), + Revision(RevisionStatement.class, "revision", "date"), + RevisionDate(RevisionDateStatement.class, "revision-date", "date"), + Rpc(RpcStatement.class, "rpc", "name"), + Status(StatusStatement.class, "status", "value"), + Submodule(SubmoduleStatement.class, "submodule", "name"), + Type(TypeStatement.class, "type", "name"), + Typedef(TypedefStatement.class, "typedef", "name"), + Unique(UniqueStatement.class, "unique", "tag"), + Units(UnitsStatement.class, "units", "name"), + Uses(UsesStatement.class, "uses", "name"), + Value(ValueStatement.class, "value", "value"), + When(WhenStatement.class, "when", "condition"), + YangVersion(YangVersionStatement.class, "yang-version", "value"), + YinElement(YinElementStatement.class, "yin-element", "value"); + + private final @Nonnull Class> type; + private final @Nonnull QName name; + private final @Nullable QName argument; + private final boolean yinElement; + + + private Rfc6020Mapping(Class> clz, final String nameStr) { + type = Preconditions.checkNotNull(clz); + name = yinQName(nameStr); + argument = null; + yinElement = false; + } + + private Rfc6020Mapping(Class> clz, final String nameStr, final String argumentStr) { + type = Preconditions.checkNotNull(clz); + name = yinQName(nameStr); + argument = yinQName(argumentStr); + this.yinElement = false; + } + + private Rfc6020Mapping(Class> clz, final String nameStr, final String argumentStr, + final boolean yinElement) { + type = Preconditions.checkNotNull(clz); + name = yinQName(nameStr); + argument = yinQName(argumentStr); + this.yinElement = yinElement; + } + + private static QName yinQName(String nameStr) { + return QName.cachedReference(QName.create(YangConstants.RFC6020_YIN_MODULE, nameStr)); + } + + @Override + public QName getStatementName() { + return name; + } + + @Override + public QName getArgumentName() { + return argument; + } + + @Override + public Class> getDeclaredRepresentationClass() { + return type; + } + + @Override + public Class> getEffectiveRepresentationClass() { + // FIXME: Add support once these interfaces are defined. + throw new UnsupportedOperationException("Not defined yet."); + } + + public boolean isArgumentYinElement() { + return yinElement; + } +} + diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/package-info.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/package-info.java index 16bd01985d..58db208f1b 100644 --- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/package-info.java +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/package-info.java @@ -7,9 +7,27 @@ */ /** - * Definition of structures and DOM Like API of processed YANG schema + * Definition of structures and DOM like API of effected YANG schema * - *

YANG Statement mapping

+ *

+ * This package is structured into following logical units: + *

+ *
YANG Meta model
+ *
Meta model of YANG, which defines basic concepts and building blocks of YANG models + * such as {@link org.opendaylight.yangtools.yang.model.api.meta.ModelStatement}.
+ *
YANG Statement model
+ *
Concrete java model of YANG statements, which defines basic relationship between statements + * and represents these statements.
+ * + *
YANG Effective model
+ *
Effective model of processed YANG models, which represents semantic interpretation + * of YANG models and provides convenience views for interpreting models. + *
+ *
+ * + * + *

YANG Effective model

+ *

Effective model statement mapping

* *
*
anyxml diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/AnyxmlStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/AnyxmlStatement.java new file mode 100644 index 0000000000..278423ddc1 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/AnyxmlStatement.java @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2015 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.stmt; + +import java.util.Collection; +import javax.annotation.Nullable; + +public interface AnyxmlStatement extends DataDefinitionStatement { + + @Nullable Collection getMusts(); + + @Nullable ConfigStatement getConfig(); + + @Nullable MandatoryStatement getMandatory(); + + +} diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ArgumentStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ArgumentStatement.java new file mode 100644 index 0000000000..2f83adfe63 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ArgumentStatement.java @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + + + +@Rfc6020AbnfRule("argument-stmt") +public interface ArgumentStatement extends DeclaredStatement { + + @Nonnull String getName(); + + @Nullable YinElementStatement getYinElement(); + +} + diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/AugmentStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/AugmentStatement.java new file mode 100644 index 0000000000..17646647c7 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/AugmentStatement.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nonnull; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface AugmentStatement extends DeclaredStatement , DataDefinitionContainer { + + @Nonnull SchemaNodeIdentifier getTargetNode(); + +} diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/BaseStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/BaseStatement.java new file mode 100644 index 0000000000..e7c5a59285 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/BaseStatement.java @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nonnull; +import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface BaseStatement extends DeclaredStatement { + + @Nonnull QName getName(); +} + diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/BelongsToStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/BelongsToStatement.java new file mode 100644 index 0000000000..f9a1dd897f --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/BelongsToStatement.java @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nonnull; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface BelongsToStatement extends DeclaredStatement { + + @Nonnull String getModule(); + + @Nonnull PrefixStatement getPrefix(); +} + diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/BitStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/BitStatement.java new file mode 100644 index 0000000000..2b1862e361 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/BitStatement.java @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface BitStatement extends DeclaredStatement, DocumentationGroup.WithStatus { + + @Nonnull String getName(); + + @Nullable PositionStatement getPosition(); + +} + diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/BodyGroup.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/BodyGroup.java new file mode 100644 index 0000000000..9b09c07cfd --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/BodyGroup.java @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2015 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.stmt; + +import java.util.Collection; +import javax.annotation.Nonnull; + + +@Rfc6020AbnfRule("body-stmts") +public interface BodyGroup extends DataDefinitionContainer.WithReusableDefinitions { + + @Nonnull Collection getExtensions(); + + @Nonnull Collection getFeatures(); + + @Nonnull Collection getIdentities(); + + @Nonnull Collection getAugments(); + + @Nonnull Collection getRpcs(); + + @Nonnull Collection getNotifications(); + + @Nonnull Collection getDeviations(); + +} diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/CaseStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/CaseStatement.java new file mode 100644 index 0000000000..b30f4a3928 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/CaseStatement.java @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nonnull; +import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + + +public interface CaseStatement extends DeclaredStatement, DataDefinitionContainer, DocumentationGroup.WithStatus, ConditionalDataDefinition { + + @Nonnull QName getName(); + +} diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ChoiceStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ChoiceStatement.java new file mode 100644 index 0000000000..051865d637 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ChoiceStatement.java @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2015 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.stmt; + +import java.util.Collection; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + + + +public interface ChoiceStatement extends DataDefinitionStatement { + + @Nullable DefaultStatement getDefault(); + + @Nullable ConfigStatement getConfig(); + + @Nullable MandatoryStatement getMandatory(); + + @Nonnull Collection getCases(); +} diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ConditionalDataDefinition.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ConditionalDataDefinition.java new file mode 100644 index 0000000000..ac36facf97 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ConditionalDataDefinition.java @@ -0,0 +1,14 @@ +/* + * Copyright (c) 2015 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.stmt; + +public interface ConditionalDataDefinition extends ConditionalFeature { + + WhenStatement getWhenStatement(); + +} diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ConditionalFeature.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ConditionalFeature.java new file mode 100644 index 0000000000..34cbc500d9 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ConditionalFeature.java @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2015 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.stmt; + +import java.util.Collection; +import javax.annotation.Nonnull; + + +@Rfc6020AbnfRule("*(if-feature-stmt)") +public interface ConditionalFeature { + + @Nonnull Collection getIfFeatures(); + +} diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ConfigStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ConfigStatement.java new file mode 100644 index 0000000000..65a1cd95df --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ConfigStatement.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nonnull; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface ConfigStatement extends DeclaredStatement { + + @Nonnull Boolean getValue(); +} + diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ContactStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ContactStatement.java new file mode 100644 index 0000000000..0a45de0a0a --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ContactStatement.java @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nonnull; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface ContactStatement extends DeclaredStatement { + + @Nonnull String getText(); + +} + diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ContainerStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ContainerStatement.java new file mode 100644 index 0000000000..ac50ff3b72 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ContainerStatement.java @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2015 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.stmt; + +import java.util.Collection; +import javax.annotation.Nullable; + + +public interface ContainerStatement extends DataDefinitionStatement, DataDefinitionContainer.WithReusableDefinitions { + + @Nullable Collection getMusts(); + + @Nullable PresenceStatement getPresence(); + + @Nullable ConfigStatement getConfig(); + +} diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/DataDefinitionContainer.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/DataDefinitionContainer.java new file mode 100644 index 0000000000..2250ef3daa --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/DataDefinitionContainer.java @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2015 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.stmt; + +import java.util.Collection; + + +public interface DataDefinitionContainer { + + Collection getDataDefinitions(); + + + public interface WithReusableDefinitions extends DataDefinitionContainer { + + Collection getTypedefs(); + + Collection getGroupings(); + + } + +} diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/DataDefinitionStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/DataDefinitionStatement.java new file mode 100644 index 0000000000..610be63a4c --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/DataDefinitionStatement.java @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nonnull; +import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +/** + * + * Statement that defines new data nodes. + * + * One of container, leaf, leaf-list, list, choice, case, + * augment, uses, and anyxml. + * + * + * Defined in: https://tools.ietf.org/html/rfc6020#section-3 + * + */ +@Rfc6020AbnfRule("data-def-stmt") +public interface DataDefinitionStatement extends DeclaredStatement, DocumentationGroup.WithStatus, ConditionalDataDefinition { + + @Nonnull QName getName(); + +} diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/DefaultStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/DefaultStatement.java new file mode 100644 index 0000000000..433d28f3ba --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/DefaultStatement.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nonnull; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface DefaultStatement extends DeclaredStatement { + + @Nonnull String getValue(); +} + diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/DescriptionStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/DescriptionStatement.java new file mode 100644 index 0000000000..fa109f2c7c --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/DescriptionStatement.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nonnull; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface DescriptionStatement extends DeclaredStatement { + + @Nonnull String getText(); +} + diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/DeviateStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/DeviateStatement.java new file mode 100644 index 0000000000..00ec9408d4 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/DeviateStatement.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nonnull; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface DeviateStatement extends DeclaredStatement { + + @Nonnull String getValue(); +} + diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/DeviationStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/DeviationStatement.java new file mode 100644 index 0000000000..1c92c32a0c --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/DeviationStatement.java @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nonnull; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface DeviationStatement extends DeclaredStatement { + + + @Nonnull SchemaNodeIdentifier getTargetNode(); + +} diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/DocumentationGroup.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/DocumentationGroup.java new file mode 100644 index 0000000000..0d5cb3c5e4 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/DocumentationGroup.java @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nullable; + +public interface DocumentationGroup { + + @Nullable DescriptionStatement getDescription(); + + @Nullable ReferenceStatement getReference(); + + + + public interface WithStatus extends DocumentationGroup { + + @Nullable StatusStatement getStatus(); + + } + +} diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/DocumentedConstraintGroup.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/DocumentedConstraintGroup.java new file mode 100644 index 0000000000..0de0711912 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/DocumentedConstraintGroup.java @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nullable; + +public interface DocumentedConstraintGroup extends DocumentationGroup { + + @Nullable ErrorAppTagStatement getErrorAppTagStatement(); + + @Nullable ErrorMessageStatement getErrorMessageStatement(); + +} diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/EnumStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/EnumStatement.java new file mode 100644 index 0000000000..a2e373d402 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/EnumStatement.java @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface EnumStatement extends DeclaredStatement, DocumentationGroup.WithStatus { + + @Nonnull String getName(); + + @Nullable ValueStatement getValue(); + +} + diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ErrorAppTagStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ErrorAppTagStatement.java new file mode 100644 index 0000000000..2fc91b4967 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ErrorAppTagStatement.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nonnull; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface ErrorAppTagStatement extends DeclaredStatement { + + @Nonnull String getValue(); +} + diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ErrorMessageStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ErrorMessageStatement.java new file mode 100644 index 0000000000..ab60f11227 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ErrorMessageStatement.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nonnull; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface ErrorMessageStatement extends DeclaredStatement { + + @Nonnull String getValue(); +} + diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ExtensionStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ExtensionStatement.java new file mode 100644 index 0000000000..80204f56cd --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ExtensionStatement.java @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nullable; +import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface ExtensionStatement extends DeclaredStatement, DocumentationGroup.WithStatus { + + @Nullable ArgumentStatement getArgument(); + + +} diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/FeatureStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/FeatureStatement.java new file mode 100644 index 0000000000..6d6f93e9dc --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/FeatureStatement.java @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nonnull; +import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface FeatureStatement extends DeclaredStatement, DocumentationGroup.WithStatus, ConditionalFeature { + + @Nonnull QName getName(); + +} diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/FractionDigitsStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/FractionDigitsStatement.java new file mode 100644 index 0000000000..7e8d1f68f9 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/FractionDigitsStatement.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2015 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.stmt; + +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + + +public interface FractionDigitsStatement extends DeclaredStatement { + + String getValue(); +} + diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/GroupingStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/GroupingStatement.java new file mode 100644 index 0000000000..534d581d5f --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/GroupingStatement.java @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nonnull; +import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + + +public interface GroupingStatement extends DeclaredStatement, DocumentationGroup.WithStatus,DataDefinitionContainer.WithReusableDefinitions { + + @Nonnull QName getName(); + +} diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/IdentityStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/IdentityStatement.java new file mode 100644 index 0000000000..07b61c5858 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/IdentityStatement.java @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface IdentityStatement extends DeclaredStatement, DocumentationGroup.WithStatus { + + @Nonnull String getName(); + + @Nullable BaseStatement getBase(); + +} diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/IfFeatureStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/IfFeatureStatement.java new file mode 100644 index 0000000000..6604678d7b --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/IfFeatureStatement.java @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nonnull; +import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface IfFeatureStatement extends DeclaredStatement { + + @Nonnull QName getName(); +} + diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ImportStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ImportStatement.java new file mode 100644 index 0000000000..5d1550fc6d --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ImportStatement.java @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface ImportStatement extends DeclaredStatement { + + @Nonnull String getModule(); + + @Nonnull PrefixStatement getPrefix(); + + @Nullable RevisionDateStatement getRevisionDate(); +} + diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/IncludeStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/IncludeStatement.java new file mode 100644 index 0000000000..eeead85233 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/IncludeStatement.java @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface IncludeStatement extends DeclaredStatement { + + @Nonnull String getModule(); + + @Nonnull PrefixStatement getPrefix(); + + @Nullable RevisionDateStatement getRevisionDate(); +} + diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/InputStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/InputStatement.java new file mode 100644 index 0000000000..81122afa81 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/InputStatement.java @@ -0,0 +1,14 @@ +/* + * Copyright (c) 2015 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.stmt; + +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface InputStatement extends DeclaredStatement, DataDefinitionContainer.WithReusableDefinitions { + +} diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/KeyStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/KeyStatement.java new file mode 100644 index 0000000000..e015604600 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/KeyStatement.java @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2015 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.stmt; + +import java.util.Collection; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface KeyStatement extends DeclaredStatement> { + +} + diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/LeafListStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/LeafListStatement.java new file mode 100644 index 0000000000..7c4111e02d --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/LeafListStatement.java @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2015 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.stmt; + +import java.util.Collection; +import javax.annotation.Nullable; + + + +public interface LeafListStatement extends DataDefinitionStatement, MultipleElementsGroup, TypeGroup { + + @Nullable Collection getMusts(); + + @Nullable ConfigStatement getConfig(); + +} diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/LeafStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/LeafStatement.java new file mode 100644 index 0000000000..5923819416 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/LeafStatement.java @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2015 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.stmt; + +import java.util.Collection; +import javax.annotation.Nullable; + + + +public interface LeafStatement extends DataDefinitionStatement, TypeGroup { + + @Nullable Collection getMusts(); + + @Nullable DefaultStatement getDefault(); + + @Nullable ConfigStatement getConfig(); + + @Nullable MandatoryStatement getMandatory(); + +} diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/LengthStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/LengthStatement.java new file mode 100644 index 0000000000..490b67d6b1 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/LengthStatement.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nonnull; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface LengthStatement extends DeclaredStatement, DocumentedConstraintGroup { + + @Nonnull String getValue(); +} + diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/LinkageGroup.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/LinkageGroup.java new file mode 100644 index 0000000000..3f75c6284f --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/LinkageGroup.java @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2015 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.stmt; + +import java.util.Collection; +import javax.annotation.Nonnull; + + +@Rfc6020AbnfRule("linkage-stms") +public interface LinkageGroup { + + @Nonnull Collection getImports(); + + @Nonnull Collection getIncludes(); +} diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ListStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ListStatement.java new file mode 100644 index 0000000000..4dd9361c21 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ListStatement.java @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2015 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.stmt; + +import java.util.Collection; +import javax.annotation.Nullable; + +public interface ListStatement extends DataDefinitionStatement, MultipleElementsGroup, + DataDefinitionContainer.WithReusableDefinitions { + + Collection getMusts(); + + @Nullable KeyStatement getKey(); + + Collection getUnique(); + + @Nullable ConfigStatement getConfig(); + +} diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/MandatoryStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/MandatoryStatement.java new file mode 100644 index 0000000000..d5ec65eeb4 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/MandatoryStatement.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nonnull; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface MandatoryStatement extends DeclaredStatement { + + @Nonnull String getValue(); +} + diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/MaxElementsStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/MaxElementsStatement.java new file mode 100644 index 0000000000..310d4f98c7 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/MaxElementsStatement.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nonnull; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface MaxElementsStatement extends DeclaredStatement { + + @Nonnull String getValue(); +} + diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/MetaGroup.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/MetaGroup.java new file mode 100644 index 0000000000..ca8d828d1c --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/MetaGroup.java @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nullable; + + +@Rfc6020AbnfRule("meta-stmts") +public interface MetaGroup extends DocumentationGroup { + + @Nullable OrganizationStatement getOrganization(); + + @Nullable ContactStatement getContact(); + +} diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/MinElementsStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/MinElementsStatement.java new file mode 100644 index 0000000000..f355cc1b5c --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/MinElementsStatement.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nonnull; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface MinElementsStatement extends DeclaredStatement { + + @Nonnull String getValue(); +} + diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ModuleHeaderGroup.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ModuleHeaderGroup.java new file mode 100644 index 0000000000..baac658a35 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ModuleHeaderGroup.java @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + +@Rfc6020AbnfRule("module-header-stmts") +public interface ModuleHeaderGroup { + + @Nullable YangVersionStatement getYangVersion(); + @Nonnull NamespaceStatement getNamespace(); + @Nonnull PrefixStatement getPrefix(); + +} diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ModuleStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ModuleStatement.java new file mode 100644 index 0000000000..b4264dff13 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ModuleStatement.java @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nonnull; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface ModuleStatement extends DeclaredStatement, ModuleHeaderGroup, LinkageGroup, MetaGroup, + RevisionGroup, BodyGroup + + { + + @Nonnull String getName(); + +} diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/MultipleElementsGroup.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/MultipleElementsGroup.java new file mode 100644 index 0000000000..b4134b68ab --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/MultipleElementsGroup.java @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nullable; + +public interface MultipleElementsGroup { + + @Nullable MinElementsStatement getMinElements(); + + @Nullable MaxElementsStatement getMaxElements(); + + @Nullable OrderedByStatement getOrderedBy(); +} diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/MustStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/MustStatement.java new file mode 100644 index 0000000000..640c0a096e --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/MustStatement.java @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nonnull; +import org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface MustStatement extends DeclaredStatement, DocumentedConstraintGroup { + + @Nonnull RevisionAwareXPath getCondition(); + +} diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/NamespaceStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/NamespaceStatement.java new file mode 100644 index 0000000000..92a1967cdb --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/NamespaceStatement.java @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2015 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.stmt; + +import java.net.URI; +import javax.annotation.Nonnull; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface NamespaceStatement extends DeclaredStatement { + + @Nonnull URI getUri(); +} + diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/NotificationStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/NotificationStatement.java new file mode 100644 index 0000000000..fed0ca6c80 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/NotificationStatement.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nonnull; +import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface NotificationStatement extends DeclaredStatement { + + @Nonnull QName getName(); +} diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/OrderedByStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/OrderedByStatement.java new file mode 100644 index 0000000000..bb3935c7ca --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/OrderedByStatement.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nonnull; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface OrderedByStatement extends DeclaredStatement { + + @Nonnull String getValue(); +} + diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/OrganizationStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/OrganizationStatement.java new file mode 100644 index 0000000000..20bb371903 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/OrganizationStatement.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nonnull; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface OrganizationStatement extends DeclaredStatement { + + @Nonnull String getText(); +} + diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/OutputStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/OutputStatement.java new file mode 100644 index 0000000000..b8ff5c7010 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/OutputStatement.java @@ -0,0 +1,14 @@ +/* + * Copyright (c) 2015 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.stmt; + +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface OutputStatement extends DeclaredStatement, DataDefinitionContainer.WithReusableDefinitions { + +} diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/PathStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/PathStatement.java new file mode 100644 index 0000000000..395ddc2583 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/PathStatement.java @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nonnull; +import org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface PathStatement extends DeclaredStatement { + + // FIXME: Introduce proper type representing parsed leafref + @Nonnull String getValue(); + +} + diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/PatternStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/PatternStatement.java new file mode 100644 index 0000000000..fe6d429e82 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/PatternStatement.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nonnull; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface PatternStatement extends DeclaredStatement, DocumentedConstraintGroup { + + @Nonnull String getValue(); +} + diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/PositionStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/PositionStatement.java new file mode 100644 index 0000000000..447590f046 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/PositionStatement.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nonnull; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface PositionStatement extends DeclaredStatement { + + @Nonnull String getValue(); +} + diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/PrefixStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/PrefixStatement.java new file mode 100644 index 0000000000..7f768c2276 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/PrefixStatement.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nonnull; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface PrefixStatement extends DeclaredStatement { + + @Nonnull String getValue(); +} + diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/PresenceStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/PresenceStatement.java new file mode 100644 index 0000000000..af5e1d0f90 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/PresenceStatement.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nonnull; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface PresenceStatement extends DeclaredStatement { + + @Nonnull String getValue(); +} + diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RangeStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RangeStatement.java new file mode 100644 index 0000000000..f8ca4ff367 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RangeStatement.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nonnull; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface RangeStatement extends DeclaredStatement, DocumentedConstraintGroup { + + @Nonnull String getRange(); +} + diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ReferenceStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ReferenceStatement.java new file mode 100644 index 0000000000..1adbacc8b8 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ReferenceStatement.java @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nonnull; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface ReferenceStatement extends DeclaredStatement { + + @Nonnull String getText(); + +} + diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RefineStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RefineStatement.java new file mode 100644 index 0000000000..790fc87072 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RefineStatement.java @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2015 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.stmt; + +import java.util.Collection; +import javax.annotation.Nullable; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + + +public interface RefineStatement extends DeclaredStatement, DocumentationGroup { + + String getTargetNode(); + + public interface RefineContainerStatement extends RefineStatement { + + Collection getMusts(); + + @Nullable ConfigStatement getConfig(); + + @Nullable PresenceStatement getPresence(); + + } + + public interface RefineLeafStatement extends RefineStatement { + + Collection getMusts(); + + @Nullable DefaultStatement getDefault(); + + @Nullable ConfigStatement getConfig(); + + @Nullable PresenceStatement getPresence(); + + } + +} + diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RequireInstanceStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RequireInstanceStatement.java new file mode 100644 index 0000000000..b1de1e8a31 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RequireInstanceStatement.java @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nonnull; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + + +public interface RequireInstanceStatement extends DeclaredStatement { + + @Nonnull String getValue(); +} + diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RevisionDateStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RevisionDateStatement.java new file mode 100644 index 0000000000..96b7b125d7 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RevisionDateStatement.java @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2015 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.stmt; + +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface RevisionDateStatement extends DeclaredStatement { + + String getDate(); +} + diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RevisionGroup.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RevisionGroup.java new file mode 100644 index 0000000000..8001c27e42 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RevisionGroup.java @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2015 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.stmt; + +import java.util.Collection; + + +@Rfc6020AbnfRule("revision-stmts") +public interface RevisionGroup { + + Collection getRevisions(); + +} diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RevisionStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RevisionStatement.java new file mode 100644 index 0000000000..fd6d850ab6 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RevisionStatement.java @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2015 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.stmt; + +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface RevisionStatement extends DeclaredStatement, DocumentationGroup { + + String getDate(); + +} diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/Rfc6020AbnfRule.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/Rfc6020AbnfRule.java new file mode 100644 index 0000000000..163f2d6496 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/Rfc6020AbnfRule.java @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2015 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.stmt; + +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +/** +* +* References ABNF rule defined in RFC6020 - YANG Specification. +* +*

+* An interface / class annotated with this annotation +* is Java representation of data represented by ABNF rule +* provided as {@link #value()}. Java representation +* does not need to be direct, +* but must retain all information in some, publicly +* accessible form for consumers. +*

+*

+* Note that this annotation is used currently only for documentation +* and does not affect any runtime behaviour. +*

+* +*/ +@Documented +@Retention(RetentionPolicy.SOURCE) +@interface Rfc6020AbnfRule { + + String[] value(); +} diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RpcStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RpcStatement.java new file mode 100644 index 0000000000..45cb5069ac --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RpcStatement.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2015 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.stmt; + +import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface RpcStatement extends DeclaredStatement { + + String getName(); + +} diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/SchemaNodeIdentifier.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/SchemaNodeIdentifier.java new file mode 100644 index 0000000000..bacf0c41cc --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/SchemaNodeIdentifier.java @@ -0,0 +1,345 @@ +/* + * Copyright (c) 2015 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.stmt; + +import com.google.common.base.Objects; +import com.google.common.base.Objects.ToStringHelper; +import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.Iterables; +import java.util.Arrays; +import java.util.Iterator; +import java.util.List; +import java.util.NoSuchElementException; +import java.util.concurrent.atomic.AtomicReferenceFieldUpdater; +import org.opendaylight.yangtools.concepts.Immutable; +import org.opendaylight.yangtools.yang.common.QName; + +/** + * Represents unique path to the every schema node inside the schema node identifier + * namespace. + * + */ +public abstract class SchemaNodeIdentifier implements Immutable { + /** + * An absolute schema node identifier. + */ + public static final class Absolute extends SchemaNodeIdentifier { + private Absolute(final SchemaNodeIdentifier parent, final QName qname) { + super(parent, qname); + } + + @Override + public boolean isAbsolute() { + return true; + } + + @Override + protected SchemaNodeIdentifier createInstance(final SchemaNodeIdentifier parent, final QName qname) { + return new Absolute(parent, qname); + } + } + + /** + * A relative schema node identifier. + */ + public static class Relative extends SchemaNodeIdentifier { + private Relative(final SchemaNodeIdentifier parent, final QName qname) { + super(parent, qname); + } + + @Override + public boolean isAbsolute() { + return false; + } + + @Override + protected SchemaNodeIdentifier createInstance(final SchemaNodeIdentifier parent, final QName qname) { + return new Relative(parent, qname); + } + } + + @SuppressWarnings("rawtypes") + private static final AtomicReferenceFieldUpdater LEGACYPATH_UPDATER = + AtomicReferenceFieldUpdater.newUpdater(SchemaNodeIdentifier.class, ImmutableList.class, "legacyPath"); + + /** + * Shared instance of the conceptual root schema node. + */ + public static final SchemaNodeIdentifier ROOT = new Absolute(null, null); + + /** + * Shared instance of the "same" relative schema node. + */ + public static final SchemaNodeIdentifier SAME = new Relative(null, null); + + /** + * Parent path. + */ + private final SchemaNodeIdentifier parent; + + /** + * This component. + */ + private final QName qname; + + /** + * Cached hash code. We can use this since we are immutable. + */ + private final int hash; + + /** + * Cached legacy path, filled-in when {@link #getPath()} or {@link #getPathTowardsRoot()} + * is invoked. + */ + private volatile ImmutableList legacyPath; + + private ImmutableList getLegacyPath() { + ImmutableList ret = legacyPath; + if (ret == null) { + ret = ImmutableList.copyOf(getPathTowardsRoot()).reverse(); + LEGACYPATH_UPDATER.lazySet(this, ret); + } + + return ret; + } + + /** + * Returns the complete path to schema node. + * + * @return list of QName instances which represents complete + * path to schema node + * + * @deprecated Use {@link #getPathFromRoot()} instead. + */ + @Deprecated + public List getPath() { + return getLegacyPath(); + } + + protected SchemaNodeIdentifier(final SchemaNodeIdentifier parent, final QName qname) { + this.parent = parent; + this.qname = qname; + + int h = parent == null ? 0 : parent.hashCode(); + if (qname != null) { + h = h * 31 + qname.hashCode(); + } + + hash = h; + } + + /** + * Constructs new instance of this class with the concrete path. + * + * @param path + * list of QName instances which specifies exact path to the + * module node + * @param absolute + * boolean value which specifies if the path is absolute or + * relative + * + * @return A SchemaPath instance. + */ + public static SchemaNodeIdentifier create(final Iterable path, final boolean absolute) { + final SchemaNodeIdentifier parent = absolute ? ROOT : SAME; + return parent.createChild(path); + } + + /** + * Constructs new instance of this class with the concrete path. + * + * @param absolute + * boolean value which specifies if the path is absolute or + * relative + * @param path + * one or more QName instances which specifies exact path to the + * module node + * + * @return A SchemaPath instance. + */ + public static SchemaNodeIdentifier create(final boolean absolute, final QName... path) { + return create(Arrays.asList(path), absolute); + } + + /** + * Create a new instance. + * + * @param parent Parent schema node identifier + * @param qname next path element + * @return A new SchemaPath instance + */ + protected abstract SchemaNodeIdentifier createInstance(SchemaNodeIdentifier parent, QName qname); + + /** + * Create a child path based on concatenation of this path and a relative path. + * + * @param relative Relative path + * @return A new child path + */ + public SchemaNodeIdentifier createChild(final Iterable relative) { + if (Iterables.isEmpty(relative)) { + return this; + } + + SchemaNodeIdentifier parent = this; + for (QName qname : relative) { + parent = parent.createInstance(parent, qname); + } + + return parent; + } + + /** + * Create a child path based on concatenation of this path and a relative path. + * + * @param relative Relative SchemaPath + * @return A new child path + */ + public SchemaNodeIdentifier createChild(final SchemaNodeIdentifier relative) { + Preconditions.checkArgument(!relative.isAbsolute(), "Child creation requires relative path"); + + SchemaNodeIdentifier parent = this; + for (QName qname : relative.getPathFromRoot()) { + parent = parent.createInstance(parent, qname); + } + + return parent; + } + + /** + * Create a child path based on concatenation of this path and additional + * path elements. + * + * @param elements Relative SchemaPath elements + * @return A new child path + */ + public SchemaNodeIdentifier createChild(final QName... elements) { + return createChild(Arrays.asList(elements)); + } + + /** + * Returns the list of nodes which need to be traversed to get from the + * starting point (root for absolute SchemaPaths) to the node represented + * by this object. + * + * @return list of qname instances which represents + * path from the root to the schema node. + */ + public Iterable getPathFromRoot() { + return getLegacyPath(); + } + + /** + * Returns the list of nodes which need to be traversed to get from this + * node to the starting point (root for absolute SchemaPaths). + * + * @return list of qname instances which represents + * path from the schema node towards the root. + */ + public Iterable getPathTowardsRoot() { + return new Iterable() { + @Override + public Iterator iterator() { + return new Iterator() { + private SchemaNodeIdentifier current = SchemaNodeIdentifier.this; + + @Override + public boolean hasNext() { + return current.parent != null; + } + + @Override + public QName next() { + if (current.parent != null) { + final QName ret = current.qname; + current = current.parent; + return ret; + } else { + throw new NoSuchElementException("No more elements available"); + } + } + + @Override + public void remove() { + throw new UnsupportedOperationException("Component removal not supported"); + } + }; + } + }; + } + + /** + * Returns the immediate parent SchemaPath. + * + * @return Parent path, null if this SchemaPath is already toplevel. + */ + public SchemaNodeIdentifier getParent() { + return parent; + } + + /** + * Get the last component of this path. + * + * @return The last component of this path. + */ + public final QName getLastComponent() { + return qname; + } + + /** + * Describes whether schema node identifier is|isn't absolute. + * + * @return boolean value which is true if schema path is + * absolute. + */ + public abstract boolean isAbsolute(); + + @Override + public final int hashCode() { + return hash; + } + + @Override + public boolean equals(final Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + final SchemaNodeIdentifier other = (SchemaNodeIdentifier) obj; + + if (qname != null) { + if (!qname.equals(other.qname)) { + return false; + } + } else { + if (other.qname != null) { + return false; + } + } + + if (parent == null) { + return other.parent == null; + } + return parent.equals(other.parent); + } + + @Override + public final String toString() { + return addToStringAttributes(Objects.toStringHelper(this)).toString(); + } + + protected ToStringHelper addToStringAttributes(final ToStringHelper toStringHelper) { + return toStringHelper.add("path", getPathFromRoot()); + } +} diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/StatusStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/StatusStatement.java new file mode 100644 index 0000000000..44e8cb6d3c --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/StatusStatement.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nonnull; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface StatusStatement extends DeclaredStatement { + + @Nonnull String getValue(); +} + diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/SubmoduleStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/SubmoduleStatement.java new file mode 100644 index 0000000000..7853c981b3 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/SubmoduleStatement.java @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface SubmoduleStatement extends + DeclaredStatement, + LinkageGroup, + MetaGroup, + RevisionGroup, + BodyGroup { + + @Nonnull String getName(); + + @Nullable YangVersionStatement getYangVersion(); + + @Nonnull BelongsToStatement getBelongsTo(); + +} + diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/TypeGroup.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/TypeGroup.java new file mode 100644 index 0000000000..ef72ffda3c --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/TypeGroup.java @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + +public interface TypeGroup { + + @Nonnull TypeStatement getType(); + + @Nullable UnitsStatement getUnits(); +} diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/TypeStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/TypeStatement.java new file mode 100644 index 0000000000..a89d1da534 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/TypeStatement.java @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2015 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.stmt; + +import java.util.Collection; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +@Rfc6020AbnfRule("type-stmt") +public interface TypeStatement extends DeclaredStatement { + + @Nonnull String getName(); + + @Rfc6020AbnfRule("numerical-restrictions") + interface NumericalRestrictions extends TypeStatement { + + @Nonnull RangeStatement getRange(); + + } + + @Rfc6020AbnfRule("decimal64-specification") + interface Decimal64Specification extends TypeStatement { + + @Nonnull FractionDigitsStatement getFractionDigits(); + + @Nullable RangeStatement getRange(); + + } + + @Rfc6020AbnfRule("string-restrictions") + interface StringRestrictions extends TypeStatement { + + @Nullable LengthStatement getLength(); + + @Nonnull Collection getPatterns(); + } + + @Rfc6020AbnfRule("enum-specification") + interface EnumSpecification extends TypeStatement { + + @Nonnull Collection getEnums(); + + } + + @Rfc6020AbnfRule("leafref-specification") + interface LeafrefSpecification extends TypeStatement { + + @Nullable PathStatement getPath(); + + } + + interface InstanceIdentifierSpecification extends TypeStatement { + + @Nullable RequireInstanceStatement getRequireInstance(); + } + + + interface IdentityRefSpecification extends TypeStatement { + + } + interface BitsSpecification extends TypeStatement { + + @Nonnull Collection getBits(); + + } + + interface UnionSpecification extends TypeStatement { + + @Nonnull Collection getTypes(); + + } +} diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/TypedefStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/TypedefStatement.java new file mode 100644 index 0000000000..eee2f91e9b --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/TypedefStatement.java @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nonnull; +import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface TypedefStatement extends DeclaredStatement,DocumentationGroup.WithStatus, TypeGroup { + + + @Nonnull String getName(); + +} + diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/UniqueStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/UniqueStatement.java new file mode 100644 index 0000000000..726b08419f --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/UniqueStatement.java @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2015 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.stmt; + +import java.util.Collection; +import javax.annotation.Nonnull; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface UniqueStatement extends DeclaredStatement> { + + @Nonnull Collection getTag(); +} + diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/UnitsStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/UnitsStatement.java new file mode 100644 index 0000000000..116c72a4ad --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/UnitsStatement.java @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nonnull; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + + +public interface UnitsStatement extends DeclaredStatement { + + @Nonnull String getName(); +} + diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/UnknownStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/UnknownStatement.java new file mode 100644 index 0000000000..9ec4d1c779 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/UnknownStatement.java @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nullable; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface UnknownStatement extends DeclaredStatement { + + @Nullable String getArgument(); +} diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/UsesStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/UsesStatement.java new file mode 100644 index 0000000000..68c0462915 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/UsesStatement.java @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2015 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.stmt; + +import java.util.Collection; +import javax.annotation.Nonnull; +import org.opendaylight.yangtools.yang.common.QName; + + + +public interface UsesStatement extends DataDefinitionStatement { + + @Override + @Nonnull QName getName(); + + @Nonnull Collection getRefines(); + + @Nonnull Collection getAugments(); + +} diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ValueStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ValueStatement.java new file mode 100644 index 0000000000..1d2ef0c28c --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ValueStatement.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nonnull; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + + +public interface ValueStatement extends DeclaredStatement { + + @Nonnull String getValue(); +} diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/WhenStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/WhenStatement.java new file mode 100644 index 0000000000..df289fb8dc --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/WhenStatement.java @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nonnull; +import org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface WhenStatement extends DeclaredStatement, DocumentationGroup { + + @Nonnull RevisionAwareXPath getCondition(); + +} + diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/YangVersionStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/YangVersionStatement.java new file mode 100644 index 0000000000..ff75fee6be --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/YangVersionStatement.java @@ -0,0 +1,15 @@ +/* + * Copyright (c) 2015 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.stmt; + +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface YangVersionStatement extends DeclaredStatement { + +} + diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/YinElementStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/YinElementStatement.java new file mode 100644 index 0000000000..949e443c63 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/YinElementStatement.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2015 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.stmt; + +import javax.annotation.Nonnull; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; + +public interface YinElementStatement extends DeclaredStatement { + + @Nonnull String getValue(); +} + -- 2.36.6