Remove SchemaNode.getPath()
[yangtools.git] / model / yang-model-spi / src / main / java / org / opendaylight / yangtools / yang / model / spi / meta / EffectiveStatementMixins.java
index f8145f5367ce1583ef4da0c2c7f416c7e11fcac2..d9e1aed84faa18ab45f4803122654a34df6dddd0 100644 (file)
@@ -17,7 +17,6 @@ import java.util.Optional;
 import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.eclipse.jdt.annotation.Nullable;
-import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.concepts.Mutable;
 import org.opendaylight.yangtools.yang.common.Empty;
 import org.opendaylight.yangtools.yang.common.QName;
@@ -43,8 +42,6 @@ import org.opendaylight.yangtools.yang.model.api.NotificationNodeContainer;
 import org.opendaylight.yangtools.yang.model.api.OperationDefinition;
 import org.opendaylight.yangtools.yang.model.api.OutputSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.SchemaNode;
-import org.opendaylight.yangtools.yang.model.api.SchemaNodeDefaults;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
 import org.opendaylight.yangtools.yang.model.api.Status;
 import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
 import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
@@ -192,11 +189,10 @@ public final class EffectiveStatementMixins {
     /**
      * Bridge between {@link EffectiveStatementWithFlags} and {@link DataSchemaNode}.
      *
-     * @param <A> Argument type ({@link Empty} if statement does not have argument.)
      * @param <D> Class representing declared version of this statement.
      */
-    public interface DataSchemaNodeMixin<A, D extends DeclaredStatement<A>>
-            extends DataSchemaNode, CopyableMixin<A, D>, SchemaNodeMixin<A, D>, WhenConditionMixin<A, D> {
+    public interface DataSchemaNodeMixin<D extends DeclaredStatement<QName>>
+            extends DataSchemaNode, CopyableMixin<QName, D>, SchemaNodeMixin<D>, WhenConditionMixin<QName, D> {
         @Override
         default Optional<Boolean> effectiveConfig() {
             final int fl = flags() & FlagsBuilder.MASK_CONFIG;
@@ -309,24 +305,14 @@ public final class EffectiveStatementMixins {
     /**
      * Bridge between {@link EffectiveStatementWithFlags} and {@link SchemaNode}.
      *
-     * @param <A> Argument type ({@link Empty} if statement does not have argument.)
      * @param <D> Class representing declared version of this statement.
      */
-    public interface SchemaNodeMixin<A, D extends DeclaredStatement<A>>
-            extends DocumentedNodeMixin.WithStatus<A, D>, SchemaNode {
-        // FIXME: ditch all this complexity once we do not require SchemaPath
+    public interface SchemaNodeMixin<D extends DeclaredStatement<QName>>
+            extends DocumentedNodeMixin.WithStatus<QName, D>, SchemaNode {
         @Override
         default QName getQName() {
-            return SchemaNodeDefaults.extractQName(pathObject());
+            return argument();
         }
-
-        @Override
-        @Deprecated
-        default SchemaPath getPath() {
-            return SchemaNodeDefaults.extractPath(this, pathObject());
-        }
-
-        @NonNull Immutable pathObject();
     }
 
     /**
@@ -336,8 +322,7 @@ public final class EffectiveStatementMixins {
      * @param <D> Class representing declared version of this statement.
      */
     public interface UnknownSchemaNodeMixin<A, D extends DeclaredStatement<A>>
-            extends SchemaNodeMixin<A, D>, CopyableMixin<A, D>, UnknownSchemaNode {
-
+            extends DocumentedNodeMixin.WithStatus<A, D>, CopyableMixin<A, D>, UnknownSchemaNode {
         @Override
         default String getNodeParameter() {
             return Strings.nullToEmpty(getDeclared().rawArgument());
@@ -378,12 +363,7 @@ public final class EffectiveStatementMixins {
     public interface OperationContainerMixin<D extends DeclaredStatement<QName>>
             extends ContainerLike, DocumentedNodeMixin.WithStatus<QName, D>, DataNodeContainerMixin<QName, D>,
                     MustConstraintMixin<QName, D>, WhenConditionMixin<QName, D>, AugmentationTargetMixin<QName, D>,
-                    SchemaNodeMixin<QName, D>, CopyableMixin<QName, D> {
-        @Override
-        default @NonNull QName argument() {
-            return getQName();
-        }
-
+                    SchemaNodeMixin<D>, CopyableMixin<QName, D> {
         @Override
         default Optional<ActionDefinition> findAction(final QName qname) {
             return Optional.empty();
@@ -420,11 +400,11 @@ public final class EffectiveStatementMixins {
      * @param <D> Class representing declared version of this statement.
      */
     public interface OpaqueDataSchemaNodeMixin<D extends DeclaredStatement<QName>>
-            extends DerivableSchemaNode, DataSchemaNodeMixin<QName, D>, DocumentedNodeMixin.WithStatus<QName, D>,
+            extends DerivableSchemaNode, DataSchemaNodeMixin<D>, DocumentedNodeMixin.WithStatus<QName, D>,
                     MandatoryMixin<QName, D>, MustConstraintMixin<QName, D>, WhenConditionMixin<QName, D> {
         @Override
-        default @NonNull QName argument() {
-            return getQName();
+        default QName getQName() {
+            return argument();
         }
     }
 
@@ -434,12 +414,7 @@ public final class EffectiveStatementMixins {
      * @param <D> Class representing declared version of this statement.
      */
     public interface OperationDefinitionMixin<D extends DeclaredStatement<QName>>
-            extends SchemaNodeMixin<QName, D>, OperationDefinition {
-        @Override
-        default @NonNull QName argument() {
-            return getQName();
-        }
-
+            extends SchemaNodeMixin<D>, OperationDefinition {
         @Override
         default Collection<? extends @NonNull TypeDefinition<?>> getTypeDefinitions() {
             return filterTypeDefinitions(this);