Mass-promote yang.model.api constructs 86/102886/2
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 26 Oct 2022 11:51:32 +0000 (13:51 +0200)
committerRobert Varga <nite@hq.sk>
Wed, 26 Oct 2022 12:49:18 +0000 (12:49 +0000)
The following constructs are deemed stable enough for normal use:
- ActionDefinition
- ActionNodeContainer
- AddedByUsesAware (although it is deprecated)
- AnydataSchemaNode
- ContainerLike
- EffectiveStatementEquivalent
- InputSchemaNode
- OutputSchemaNode
- OperationDefinition
- PathExpression

Change-Id: I0bd793add470adf1d90d4e098e592efc921a76de
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ActionDefinition.java
model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ActionNodeContainer.java
model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/AddedByUsesAware.java
model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/AnydataSchemaNode.java
model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ContainerLike.java
model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/EffectiveStatementEquivalent.java
model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/InputSchemaNode.java
model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/OperationDefinition.java
model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/OutputSchemaNode.java
model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/PathExpression.java

index 56782c91beb4e2e26db294a6bc2db1506bf9ff3b..961bba04daa48e2fecb559f8768b8ce659f15d95 100644 (file)
@@ -7,11 +7,10 @@
  */
 package org.opendaylight.yangtools.yang.model.api;
 
-import com.google.common.annotations.Beta;
 import org.opendaylight.yangtools.yang.model.api.stmt.ActionEffectiveStatement;
 
 /**
- * Represents YANG action statement.
+ * Represents YANG {@code action} statement.
  *
  * <p>
  * The "action" statement is used to define an operation connected to a
@@ -19,7 +18,6 @@ import org.opendaylight.yangtools.yang.model.api.stmt.ActionEffectiveStatement;
  * is an identifier, followed by a block of substatements that holds
  * detailed action information.  The argument is the name of the action.
  */
-@Beta
 public interface ActionDefinition
         extends OperationDefinition, CopyableNode, EffectiveStatementEquivalent<ActionEffectiveStatement> {
 
index c258c38d75ef3bc46d7495ee3a4cb786f7b3beb8..cf39cd25f7a7685317e680355df2fc04b76448d2 100644 (file)
@@ -9,16 +9,14 @@ package org.opendaylight.yangtools.yang.model.api;
 
 import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
 import java.util.Collection;
 import java.util.Optional;
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.yangtools.yang.common.QName;
 
 /**
- * Node which can contain action nodes.
+ * Node which can contain {@link ActionDefinition}.
  */
-@Beta
 public interface ActionNodeContainer {
     /**
      * Return the set of actions.
@@ -32,11 +30,11 @@ public interface ActionNodeContainer {
      *
      * @param qname Action's QName
      * @return Action definition, if found
-     * @throws NullPointerException if qname is null
+     * @throws NullPointerException if {@code qname} is {@code null}
      */
     default Optional<ActionDefinition> findAction(final QName qname) {
         requireNonNull(qname);
-        for (ActionDefinition action : getActions()) {
+        for (var action : getActions()) {
             if (qname.equals(action.getQName())) {
                 return Optional.of(action);
             }
index a52e87e03c2805f5995cb1b45aa6e9435ae6c1b2..f50b1753fb8e6eb8bcc95b2f2ffa18887eae0981 100644 (file)
@@ -7,15 +7,12 @@
  */
 package org.opendaylight.yangtools.yang.model.api;
 
-import com.google.common.annotations.Beta;
-
 /**
  * Trait interface for {@link SchemaNode}s, which have the {@link #isAddedByUses()} method.
  *
  * @deprecated The only user of this trait is MD-SAL's binding component. As such, we provide enough information in
  *             EffectiveStatement tree to reconstruct this information.
  */
-@Beta
 @Deprecated(since = "7.0.9", forRemoval = true)
 public interface AddedByUsesAware {
     /**
index b2c5d5eedf932f9b4e2bfda20e19f14a22de3716..83b258370a04992ac74f84e119e940467a5f7a0e 100644 (file)
@@ -7,7 +7,6 @@
  */
 package org.opendaylight.yangtools.yang.model.api;
 
-import com.google.common.annotations.Beta;
 import java.util.Optional;
 import org.opendaylight.yangtools.yang.model.api.stmt.AnydataEffectiveStatement;
 
@@ -21,7 +20,6 @@ import org.opendaylight.yangtools.yang.model.api.stmt.AnydataEffectiveStatement;
  * model for anydata content to become known through protocol signaling or other means that are outside the scope
  * of this document.
  */
-@Beta
 public interface AnydataSchemaNode extends DataSchemaNode, MandatoryAware, MustConstraintAware,
         EffectiveStatementEquivalent<AnydataEffectiveStatement> {
     /**
index 8678453fe27d834698f5886b388c4f0388f55813..d5cdc5cdbf9aecf81f5c61fd77c81361d70f86a2 100644 (file)
@@ -7,12 +7,10 @@
  */
 package org.opendaylight.yangtools.yang.model.api;
 
-import com.google.common.annotations.Beta;
-
 /**
- * Common interface for common container-like constructs.
+ * Common interface for common container-like constructs. This includes {@link ContainerSchemaNode},
+ * {@link InputSchemaNode}, {@link OutputSchemaNode} and, for legacy reasons, {@link SchemaContext}.
  */
-@Beta
 public interface ContainerLike extends DataNodeContainer,
         AugmentationTarget, DataSchemaNode, NotificationNodeContainer, ActionNodeContainer, MustConstraintAware {
 
index 569ccc421408ee0496f112117b74fa1f6e0b594b..0a42534cfee80408df7c62a6cf178ed7e3035636 100644 (file)
@@ -7,7 +7,6 @@
  */
 package org.opendaylight.yangtools.yang.model.api;
 
-import com.google.common.annotations.Beta;
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 
@@ -24,7 +23,6 @@ import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
  *
  * @param <E> Type of equivalent {@link EffectiveStatement}.
  */
-@Beta
 public interface EffectiveStatementEquivalent<E extends EffectiveStatement<?, ?>> {
     /**
      * Return {@link EffectiveStatement} representation of this object.
index e241f3351a1e6a22bfacab4dc82c2d727e7702c3..d983281b7640f15684d653eb66e966df6c60d6f3 100644 (file)
@@ -7,10 +7,11 @@
  */
 package org.opendaylight.yangtools.yang.model.api;
 
-import com.google.common.annotations.Beta;
 import org.opendaylight.yangtools.yang.model.api.stmt.InputEffectiveStatement;
 
-@Beta
+/**
+ * An {@link InputSchemaNode} defines inputs of an {@link RpcDefinition} or an {@link ActionDefinition}.
+ */
 public interface InputSchemaNode extends ContainerLike, EffectiveStatementEquivalent<InputEffectiveStatement> {
 
 }
index 1494337cbeacc1442b4d754d989d3d957b1e1463..0b091e3c9fbdc040f2ecc5dbb7a128d3f0a382e8 100644 (file)
@@ -7,14 +7,12 @@
  */
 package org.opendaylight.yangtools.yang.model.api;
 
-import com.google.common.annotations.Beta;
 import java.util.Collection;
 import org.eclipse.jdt.annotation.NonNull;
 
 /**
- * Common interface for an operation.
+ * Common interface for an operation, such as an {@link RpcDefinition} or an {@link ActionDefinition}.
  */
-@Beta
 public interface OperationDefinition extends SchemaNode {
     /**
      * Returns the set of type definitions declared under this operation.
@@ -36,7 +34,7 @@ public interface OperationDefinition extends SchemaNode {
      * @return Definition of input parameters for this operation.
      *         The substatements of input define nodes under the operation's input node.
      */
-    InputSchemaNode getInput();
+    @NonNull InputSchemaNode getInput();
 
     /**
      * Returns definition of output parameters for this operation.
@@ -44,5 +42,5 @@ public interface OperationDefinition extends SchemaNode {
      * @return Definition of output parameters for this operation. The
      *         substatements of output define nodes under the operation's output node.
      */
-    OutputSchemaNode getOutput();
+    @NonNull OutputSchemaNode getOutput();
 }
index 4c45fffdaad7680813319db81e966de2a0a5c8e1..5aecaabed0cfa368cfc1fc42af0fe5dddd793768 100644 (file)
@@ -7,10 +7,11 @@
  */
 package org.opendaylight.yangtools.yang.model.api;
 
-import com.google.common.annotations.Beta;
 import org.opendaylight.yangtools.yang.model.api.stmt.OutputEffectiveStatement;
 
-@Beta
+/**
+ * An {@link InputSchemaNode} defines outputs of an {@link RpcDefinition} or an {@link ActionDefinition}.
+ */
 public interface OutputSchemaNode extends ContainerLike, EffectiveStatementEquivalent<OutputEffectiveStatement> {
 
 }
index 5673a241172bbb3b24a551a5d1fbaa3804306dad..7b030cbcaf03983797acd758588fe1109727a104 100644 (file)
@@ -9,7 +9,6 @@ package org.opendaylight.yangtools.yang.model.api;
 
 import static java.util.Objects.requireNonNull;
 
-import com.google.common.annotations.Beta;
 import com.google.common.base.MoreObjects;
 import com.google.common.base.MoreObjects.ToStringHelper;
 import org.eclipse.jdt.annotation.NonNullByDefault;
@@ -32,24 +31,21 @@ import org.opendaylight.yangtools.yang.xpath.api.YangXPathExpression;
  * Semantically a {@link PathExpression} is similar to a {@link YangXPathExpression} with guarantees around what
  * subexpressions it can contain:
  * <ul>
- * <li>the root expression must be a {@link YangLocationPath}</li>
- * <li>it can contain steps only along {@link YangXPathAxis#CHILD} and {@link YangXPathAxis#PARENT} axis</li>
- * <li>all steps along {@link YangXPathAxis#CHILD} axis are {@link QNameStep}</li>
- * <li>the only function invocation is {@link YangFunction#CURRENT}</li>
- * <li>only {@link YangBinaryOperator#EQUALS} is allowed</li>
- * <li>no literals nor numbers are allowed</li>
- * <li>all qualified node identifiers must me resolved</li>
+ *   <li>the root expression must be a {@link YangLocationPath}</li>
+ *   <li>it can contain steps only along {@link YangXPathAxis#CHILD} and {@link YangXPathAxis#PARENT} axis</li>
+ *   <li>all steps along {@link YangXPathAxis#CHILD} axis are {@link QNameStep}</li>
+ *   <li>the only function invocation is {@link YangFunction#CURRENT}</li>
+ *   <li>only {@link YangBinaryOperator#EQUALS} is allowed</li>
+ *   <li>no literals nor numbers are allowed</li>
+ *   <li>all qualified node identifiers must me resolved</li>
  * </ul>
- *
- * @author Robert Varga
  */
-@Beta
 @NonNullByDefault
 public interface PathExpression extends Immutable {
     /**
      * Abstract base class for expressing steps of a PathExpression.
      */
-    abstract class Steps {
+    abstract sealed class Steps {
         Steps() {
             // Prevent external subclassing
         }
@@ -89,8 +85,7 @@ public interface PathExpression extends Immutable {
 
         @Override
         public boolean equals(final @Nullable Object obj) {
-            return this == obj
-                    || obj instanceof LocationPathSteps && locationPath.equals(((LocationPathSteps) obj).locationPath);
+            return this == obj || obj instanceof LocationPathSteps other && locationPath.equals(other.locationPath);
         }
 
         @Override
@@ -127,14 +122,8 @@ public interface PathExpression extends Immutable {
 
         @Override
         public boolean equals(@Nullable final Object obj) {
-            if (this == obj) {
-                return true;
-            }
-            if (!(obj instanceof DerefSteps)) {
-                return false;
-            }
-            final DerefSteps other = (DerefSteps) obj;
-            return derefArgument.equals(other.derefArgument) && relativePath.equals(other.relativePath);
+            return this == obj || obj instanceof DerefSteps other
+                && derefArgument.equals(other.derefArgument) && relativePath.equals(other.relativePath);
         }
 
         @Override
@@ -167,7 +156,6 @@ public interface PathExpression extends Immutable {
      * @return <code>true</code> if the XPapth starts in root of YANG model, otherwise returns <code>false</code>
      */
     default boolean isAbsolute() {
-        final Steps steps = getSteps();
-        return steps instanceof LocationPathSteps && ((LocationPathSteps) steps).getLocationPath().isAbsolute();
+        return getSteps() instanceof LocationPathSteps locationSteps && locationSteps.getLocationPath().isAbsolute();
     }
 }