8e03d91cdbd86d262b9e3468bd36ac29c18c3896
[smo/teiv.git] /
1 /*
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
9  *
10  *        http://www.apache.org/licenses/LICENSE-2.0
11  *
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.
17  *
18  *  SPDX-License-Identifier: Apache-2.0
19  *  ============LICENSE_END=========================================================
20  */
21 package org.oran.smo.yangtools.parser.model.util;
22
23 import java.util.Objects;
24
25 import org.oran.smo.yangtools.parser.util.NamespaceModuleIdentifier;
26
27 /**
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.
30  *
31  * @author Mark Hollmann
32  */
33 public class YangAnnotation extends NamespaceModuleIdentifier {
34
35     public YangAnnotation(final String owningModuleNamespace, final String owningModule, final String annotationName) {
36         super(Objects.requireNonNull(owningModuleNamespace), Objects.requireNonNull(owningModule), Objects.requireNonNull(
37                 annotationName));
38     }
39
40     /**
41      * The name of the annotation
42      */
43     public String getAnnotationName() {
44         return getIdentifier();
45     }
46
47     /**
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.
50      */
51     public String getAnnotationModuleName() {
52         return getModuleName();
53     }
54
55     /**
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.
59      */
60     public String getAnnotationNamespace() {
61         return getNamespace();
62     }
63
64     @Override
65     public String toString() {
66         return "Annotation " + getAnnotationNamespace() + "/" + getAnnotationModuleName() + "/" + getAnnotationName();
67     }
68
69     @Override
70     public boolean equals(final Object other) {
71         return other != null && other.getClass().getName().equals(YangAnnotation.class.getName()) && this.toString().equals(
72                 other.toString());
73     }
74 }