Introduce RootDeclaredStatement 99/102899/4
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 26 Oct 2022 16:06:33 +0000 (18:06 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Wed, 26 Oct 2022 17:18:19 +0000 (19:18 +0200)
We have a number of (mostly-unused) traits, which are implemented by
both ModuleStatement and SubmoduleStatement. Combine these interfaces
into a single interface.

Change-Id: Ide4daa704e0b41cc0916d3acf567302991cf8202
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/LinkageDeclaredStatement.java [deleted file]
model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/MetaDeclaredStatement.java [deleted file]
model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ModuleStatement.java
model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RevisionAwareDeclaredStatement.java [deleted file]
model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RootDeclaredStatement.java [moved from model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/BodyDeclaredStatement.java with 51% similarity]
model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/SubmoduleStatement.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/decl/AbstractDeclaredEffectiveRootStatement.java [deleted file]
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/decl/ModuleStatementImpl.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/decl/SubmoduleStatementImpl.java

diff --git a/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/LinkageDeclaredStatement.java b/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/LinkageDeclaredStatement.java
deleted file mode 100644 (file)
index 7cda41a..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright (c) 2018 Pantheon Technologies, s.r.o. 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.annotations.Beta;
-import java.util.Collection;
-import org.eclipse.jdt.annotation.NonNull;
-import org.opendaylight.yangtools.yang.common.UnresolvedQName.Unqualified;
-import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
-
-@Beta
-public interface LinkageDeclaredStatement extends DeclaredStatement<Unqualified> {
-    default @NonNull Collection<? extends ImportStatement> getImports() {
-        return declaredSubstatements(ImportStatement.class);
-    }
-
-    default @NonNull Collection<? extends IncludeStatement> getIncludes() {
-        return declaredSubstatements(IncludeStatement.class);
-    }
-}
diff --git a/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/MetaDeclaredStatement.java b/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/MetaDeclaredStatement.java
deleted file mode 100644 (file)
index 6ed4e38..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright (c) 2018 Pantheon Technoglogies, s.r.o. 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.annotations.Beta;
-import java.util.Optional;
-
-/**
- * Common interface for statements which contain either a description/reference or a description/reference/status combo.
- */
-@Beta
-public interface MetaDeclaredStatement<T> extends DocumentedDeclaredStatement<T> {
-    default Optional<OrganizationStatement> getOrganization() {
-        return findFirstDeclaredSubstatement(OrganizationStatement.class);
-    }
-
-    default Optional<ContactStatement> getContact() {
-        return findFirstDeclaredSubstatement(ContactStatement.class);
-    }
-}
index 76e9103f3c2fe5e74a992ad4c6eaa69c299fd6f3..09dbe7f2c1ebf5a13346ab2c834d7a56d62225f3 100644 (file)
@@ -9,15 +9,13 @@ package org.opendaylight.yangtools.yang.model.api.stmt;
 
 import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.Nullable;
-import org.opendaylight.yangtools.yang.common.UnresolvedQName.Unqualified;
 import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
 import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
 
 /**
  * Declared representation of a {@code module} statement.
  */
-public interface ModuleStatement extends MetaDeclaredStatement<Unqualified>,
-        LinkageDeclaredStatement, RevisionAwareDeclaredStatement, BodyDeclaredStatement {
+public non-sealed interface ModuleStatement extends RootDeclaredStatement {
     @Override
     default StatementDefinition statementDefinition() {
         return YangStmtMapping.MODULE;
diff --git a/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RevisionAwareDeclaredStatement.java b/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RevisionAwareDeclaredStatement.java
deleted file mode 100644 (file)
index 4961153..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright (c) 2018 Pantheon Technoglogies, s.r.o. 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.annotations.Beta;
-import java.util.Collection;
-import org.eclipse.jdt.annotation.NonNull;
-import org.opendaylight.yangtools.yang.common.UnresolvedQName.Unqualified;
-import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
-
-@Beta
-public interface RevisionAwareDeclaredStatement extends DeclaredStatement<Unqualified> {
-    default @NonNull Collection<? extends RevisionStatement> getRevisions() {
-        return declaredSubstatements(RevisionStatement.class);
-    }
-}
similarity index 51%
rename from model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/BodyDeclaredStatement.java
rename to model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RootDeclaredStatement.java
index 63d6af57427676feb677ab256abb55c6c5d91234..e53567abd0b06e5124779f8a8c3a8ef6b2b9e5ca 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2018 Pantheon Technologies, s.r.o. and others.  All rights reserved.
+ * Copyright (c) 2022 PANTHEON.tech, s.r.o. 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,
@@ -9,12 +9,39 @@ package org.opendaylight.yangtools.yang.model.api.stmt;
 
 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.UnresolvedQName.Unqualified;
 
+/**
+ * Common interface capturing general layout of a top-level YANG declared statement -- either a {@link ModuleStatement}
+ * or a {@link SubmoduleStatement}.
+ */
 @Beta
-public interface BodyDeclaredStatement extends NotificationStatementAwareDeclaredStatement<Unqualified>,
-        DataDefinitionAwareDeclaredStatement.WithReusableDefinitions<Unqualified> {
+public sealed interface RootDeclaredStatement
+        extends DocumentedDeclaredStatement<Unqualified>, NotificationStatementAwareDeclaredStatement<Unqualified>,
+                DataDefinitionAwareDeclaredStatement.WithReusableDefinitions<Unqualified>
+        permits ModuleStatement, SubmoduleStatement {
+    default Optional<OrganizationStatement> getOrganization() {
+        return findFirstDeclaredSubstatement(OrganizationStatement.class);
+    }
+
+    default Optional<ContactStatement> getContact() {
+        return findFirstDeclaredSubstatement(ContactStatement.class);
+    }
+
+    default @NonNull Collection<? extends ImportStatement> getImports() {
+        return declaredSubstatements(ImportStatement.class);
+    }
+
+    default @NonNull Collection<? extends IncludeStatement> getIncludes() {
+        return declaredSubstatements(IncludeStatement.class);
+    }
+
+    default @NonNull Collection<? extends RevisionStatement> getRevisions() {
+        return declaredSubstatements(RevisionStatement.class);
+    }
+
     default @NonNull Collection<? extends ExtensionStatement> getExtensions() {
         return declaredSubstatements(ExtensionStatement.class);
     }
index 8de78605954d77eeb70bfafca999040eb9c1074f..d3b17bfe268558e5898fc0e14acd185923f854a5 100644 (file)
@@ -9,15 +9,13 @@ package org.opendaylight.yangtools.yang.model.api.stmt;
 
 import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.Nullable;
-import org.opendaylight.yangtools.yang.common.UnresolvedQName.Unqualified;
 import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
 import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
 
 /**
  * Declared representation of a {@code submodule} statement.
  */
-public interface SubmoduleStatement extends MetaDeclaredStatement<Unqualified>, LinkageDeclaredStatement,
-        RevisionAwareDeclaredStatement, BodyDeclaredStatement {
+public non-sealed interface SubmoduleStatement extends RootDeclaredStatement {
     @Override
     default StatementDefinition statementDefinition() {
         return YangStmtMapping.SUBMODULE;
diff --git a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/decl/AbstractDeclaredEffectiveRootStatement.java b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/decl/AbstractDeclaredEffectiveRootStatement.java
deleted file mode 100644 (file)
index 1ecf54d..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright (c) 2020 PANTHEON.tech, s.r.o. 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.ri.stmt.impl.decl;
-
-import com.google.common.collect.ImmutableList;
-import org.opendaylight.yangtools.yang.common.UnresolvedQName.Unqualified;
-import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
-import org.opendaylight.yangtools.yang.model.api.stmt.BodyDeclaredStatement;
-import org.opendaylight.yangtools.yang.model.api.stmt.LinkageDeclaredStatement;
-import org.opendaylight.yangtools.yang.model.api.stmt.MetaDeclaredStatement;
-import org.opendaylight.yangtools.yang.model.api.stmt.RevisionAwareDeclaredStatement;
-import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredStatement.WithArgument.WithSubstatements;
-
-abstract class AbstractDeclaredEffectiveRootStatement<D extends DeclaredStatement<Unqualified>>
-        extends WithSubstatements<Unqualified> implements LinkageDeclaredStatement,
-                MetaDeclaredStatement<Unqualified>, RevisionAwareDeclaredStatement, BodyDeclaredStatement {
-    protected AbstractDeclaredEffectiveRootStatement(final String rawArgument, final Unqualified argument,
-            final ImmutableList<? extends DeclaredStatement<?>> substatements) {
-        super(rawArgument, argument, substatements);
-    }
-}
index 38058b0d988b66f649ccd704edb84f6bb09bda8e..933006560a1f56e30214c6d9ecdf141168f2954f 100644 (file)
@@ -11,9 +11,9 @@ import com.google.common.collect.ImmutableList;
 import org.opendaylight.yangtools.yang.common.UnresolvedQName.Unqualified;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.ModuleStatement;
+import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredStatement.WithArgument.WithSubstatements;
 
-public final class ModuleStatementImpl extends AbstractDeclaredEffectiveRootStatement<ModuleStatement>
-        implements ModuleStatement {
+public final class ModuleStatementImpl extends WithSubstatements<Unqualified> implements ModuleStatement {
     public ModuleStatementImpl(final String rawArgument, final Unqualified argument,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
         super(rawArgument, argument, substatements);
index c54593156f5e6c0b3caea489436509cca0c55e0c..dc9897ab3df9290c2866b7656ae4fe63888fdb7f 100644 (file)
@@ -11,9 +11,9 @@ import com.google.common.collect.ImmutableList;
 import org.opendaylight.yangtools.yang.common.UnresolvedQName.Unqualified;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.SubmoduleStatement;
+import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredStatement.WithArgument.WithSubstatements;
 
-public final class SubmoduleStatementImpl extends AbstractDeclaredEffectiveRootStatement<SubmoduleStatement>
-        implements SubmoduleStatement {
+public final class SubmoduleStatementImpl extends WithSubstatements<Unqualified> implements SubmoduleStatement {
     public SubmoduleStatementImpl(final String rawArgument, final Unqualified argument,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
         super(rawArgument, argument, substatements);