2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2024 Ericsson
4 * Modifications Copyright (C) 2024 OpenInfra Foundation Europe
5 * ================================================================================
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
18 * SPDX-License-Identifier: Apache-2.0
19 * ============LICENSE_END=========================================================
21 package org.oran.smo.yangtools.parser.model.util;
23 import java.util.Objects;
25 import org.oran.smo.yangtools.parser.util.NamespaceModuleIdentifier;
28 * Denotes a single annotation declared in a module. The annotation has been declared in accordance with RFC 7952. It
29 * has special significance as it likely to become part of the YANG core language at some stage.
31 * @author Mark Hollmann
33 public class YangAnnotation extends NamespaceModuleIdentifier {
35 public YangAnnotation(final String owningModuleNamespace, final String owningModule, final String annotationName) {
36 super(Objects.requireNonNull(owningModuleNamespace), Objects.requireNonNull(owningModule), Objects.requireNonNull(
41 * The name of the annotation
43 public String getAnnotationName() {
44 return getIdentifier();
48 * The module owning the annotation. If the annotation has been declared in a
49 * submodule, this is the name of the module that owns the submodule.
51 public String getAnnotationModuleName() {
52 return getModuleName();
56 * The namespace of the module in which the annotation has been declared. If the
57 * annotation has been declared in a submodule, this is the namespace of the
58 * module that owns the submodule.
60 public String getAnnotationNamespace() {
61 return getNamespace();
65 public String toString() {
66 return "Annotation " + getAnnotationNamespace() + "/" + getAnnotationModuleName() + "/" + getAnnotationName();
70 public boolean equals(final Object other) {
71 return other != null && other.getClass().getName().equals(YangAnnotation.class.getName()) && this.toString().equals(