Fix factored out operatations context 29/89529/1
authorRobert Varga <robert.varga@pantheon.tech>
Thu, 30 Apr 2020 11:11:31 +0000 (13:11 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Thu, 30 Apr 2020 11:11:31 +0000 (13:11 +0200)
SimpleSchemaContext is cross-referencing module, which means we need
to hide any transitive dependencies, i.e. pretend the modules originating
modules are empty.

Change-Id: I9792acf81588f5ea33952dad470484b9cf7d0e8b
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
restconf/restconf-common/src/main/java/org/opendaylight/restconf/common/util/AbstractOperationsModule.java [new file with mode: 0644]
restconf/restconf-common/src/main/java/org/opendaylight/restconf/common/util/OperationsImportedModule.java [new file with mode: 0644]
restconf/restconf-common/src/main/java/org/opendaylight/restconf/common/util/OperationsResourceUtils.java
restconf/restconf-common/src/main/java/org/opendaylight/restconf/common/util/OperationsRestconfModule.java

diff --git a/restconf/restconf-common/src/main/java/org/opendaylight/restconf/common/util/AbstractOperationsModule.java b/restconf/restconf-common/src/main/java/org/opendaylight/restconf/common/util/AbstractOperationsModule.java
new file mode 100644 (file)
index 0000000..2e9cdc8
--- /dev/null
@@ -0,0 +1,120 @@
+/*
+ * 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.restconf.common.util;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
+import java.util.Set;
+import org.opendaylight.yangtools.concepts.SemVer;
+import org.opendaylight.yangtools.yang.common.YangVersion;
+import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.Deviation;
+import org.opendaylight.yangtools.yang.model.api.ExtensionDefinition;
+import org.opendaylight.yangtools.yang.model.api.FeatureDefinition;
+import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
+import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode;
+import org.opendaylight.yangtools.yang.model.api.Module;
+import org.opendaylight.yangtools.yang.model.api.ModuleImport;
+import org.opendaylight.yangtools.yang.model.api.NotificationDefinition;
+import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
+import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
+import org.opendaylight.yangtools.yang.model.api.UsesNode;
+
+abstract class AbstractOperationsModule implements Module {
+    @Override
+    public final Set<ModuleImport> getImports() {
+        // Yeah, not accurate, but this should not be needed
+        return Collections.emptySet();
+    }
+
+    @Override
+    public final YangVersion getYangVersion() {
+        return YangVersion.VERSION_1;
+    }
+
+    @Override
+    public final Set<TypeDefinition<?>> getTypeDefinitions() {
+        return Collections.emptySet();
+    }
+
+    @Override
+    public final Set<GroupingDefinition> getGroupings() {
+        return Collections.emptySet();
+    }
+
+    @Override
+    public final Set<UsesNode> getUses() {
+        return Collections.emptySet();
+    }
+
+    @Override
+    public final Optional<String> getDescription() {
+        return Optional.empty();
+    }
+
+    @Override
+    public final Optional<String> getReference() {
+        return Optional.empty();
+    }
+
+    @Override
+    public final Set<NotificationDefinition> getNotifications() {
+        return Collections.emptySet();
+    }
+
+    @Override
+    public final Optional<SemVer> getSemanticVersion() {
+        return Optional.empty();
+    }
+
+    @Override
+    public final Optional<String> getOrganization() {
+        return Optional.empty();
+    }
+
+    @Override
+    public final Optional<String> getContact() {
+        return Optional.empty();
+    }
+
+    @Override
+    public final Set<Module> getSubmodules() {
+        return Collections.emptySet();
+    }
+
+    @Override
+    public final Set<FeatureDefinition> getFeatures() {
+        return Collections.emptySet();
+    }
+
+    @Override
+    public final Set<AugmentationSchemaNode> getAugmentations() {
+        return Collections.emptySet();
+    }
+
+    @Override
+    public final Set<RpcDefinition> getRpcs() {
+        return Collections.emptySet();
+    }
+
+    @Override
+    public final Set<Deviation> getDeviations() {
+        return Collections.emptySet();
+    }
+
+    @Override
+    public final Set<IdentitySchemaNode> getIdentities() {
+        return Collections.emptySet();
+    }
+
+    @Override
+    public final List<ExtensionDefinition> getExtensionSchemaNodes() {
+        return Collections.emptyList();
+    }
+}
diff --git a/restconf/restconf-common/src/main/java/org/opendaylight/restconf/common/util/OperationsImportedModule.java b/restconf/restconf-common/src/main/java/org/opendaylight/restconf/common/util/OperationsImportedModule.java
new file mode 100644 (file)
index 0000000..4cae6e5
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * 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.restconf.common.util;
+
+import static java.util.Objects.requireNonNull;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Optional;
+import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.Module;
+
+final class OperationsImportedModule extends AbstractOperationsModule {
+    private final Module original;
+
+    OperationsImportedModule(final Module original) {
+        this.original = requireNonNull(original);
+    }
+
+    @Override
+    public String getName() {
+        return original.getName();
+    }
+
+    @Override
+    public QNameModule getQNameModule() {
+        return original.getQNameModule();
+    }
+
+    @Override
+    public String getPrefix() {
+        return original.getPrefix();
+    }
+
+    @Override
+    public Collection<DataSchemaNode> getChildNodes() {
+        return Collections.emptySet();
+    }
+
+    @Override
+    public Optional<DataSchemaNode> findDataChildByName(final QName name) {
+        return Optional.empty();
+    }
+}
index 4f706d0a605a75bbd1508c6c99f599a8a5f44f48..55a5865dc9bb3f0977434a3a069d1915a82c78e6 100644 (file)
@@ -40,7 +40,7 @@ public final class OperationsResourceUtils {
         for (final Module m : context.getModules()) {
             final Collection<? extends RpcDefinition> rpcs = m.getRpcs();
             if (!rpcs.isEmpty()) {
-                modules.add(m);
+                modules.add(new OperationsImportedModule(m));
                 rpcLeafSchemas.ensureCapacity(rpcLeafSchemas.size() + rpcs.size());
                 for (RpcDefinition rpc : rpcs) {
                     rpcLeafSchemas.add(new OperationsLeafSchemaNode(rpc));
index 83e34ef941d6692cc36e6998e8c79a4048620b60..bae66cd9df7ba169b905c6fcd67ff48fc35d1259 100644 (file)
@@ -12,28 +12,12 @@ import static java.util.Objects.requireNonNull;
 import java.net.URI;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.List;
 import java.util.Optional;
-import java.util.Set;
-import org.opendaylight.yangtools.concepts.SemVer;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
-import org.opendaylight.yangtools.yang.common.YangVersion;
-import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.Deviation;
-import org.opendaylight.yangtools.yang.model.api.ExtensionDefinition;
-import org.opendaylight.yangtools.yang.model.api.FeatureDefinition;
-import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
-import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode;
-import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.model.api.ModuleImport;
-import org.opendaylight.yangtools.yang.model.api.NotificationDefinition;
-import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
-import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
-import org.opendaylight.yangtools.yang.model.api.UsesNode;
 
-final class OperationsRestconfModule implements Module  {
+final class OperationsRestconfModule extends AbstractOperationsModule {
     // There is no need to intern this nor add a revision, as we are providing the corresponding context anyway
     static final QNameModule NAMESPACE = QNameModule.create(URI.create("urn:ietf:params:xml:ns:yang:ietf-restconf"));
 
@@ -67,95 +51,4 @@ final class OperationsRestconfModule implements Module  {
     public String getPrefix() {
         return "rc";
     }
-
-    @Override
-    public YangVersion getYangVersion() {
-        return YangVersion.VERSION_1;
-    }
-
-    @Override
-    public Set<TypeDefinition<?>> getTypeDefinitions() {
-        return Collections.emptySet();
-    }
-
-    @Override
-    public Set<GroupingDefinition> getGroupings() {
-        return Collections.emptySet();
-    }
-
-    @Override
-    public Set<ModuleImport> getImports() {
-        // Yeah, not accurate, but this should not be needed
-        return Collections.emptySet();
-    }
-
-    @Override
-    public Set<UsesNode> getUses() {
-        return Collections.emptySet();
-    }
-
-    @Override
-    public Optional<String> getDescription() {
-        return Optional.empty();
-    }
-
-    @Override
-    public Optional<String> getReference() {
-        return Optional.empty();
-    }
-
-    @Override
-    public Set<NotificationDefinition> getNotifications() {
-        return Collections.emptySet();
-    }
-
-    @Override
-    public Optional<SemVer> getSemanticVersion() {
-        return Optional.empty();
-    }
-
-    @Override
-    public Optional<String> getOrganization() {
-        return Optional.empty();
-    }
-
-    @Override
-    public Optional<String> getContact() {
-        return Optional.empty();
-    }
-
-    @Override
-    public Set<Module> getSubmodules() {
-        return Collections.emptySet();
-    }
-
-    @Override
-    public Set<FeatureDefinition> getFeatures() {
-        return Collections.emptySet();
-    }
-
-    @Override
-    public Set<AugmentationSchemaNode> getAugmentations() {
-        return Collections.emptySet();
-    }
-
-    @Override
-    public Set<RpcDefinition> getRpcs() {
-        return Collections.emptySet();
-    }
-
-    @Override
-    public Set<Deviation> getDeviations() {
-        return Collections.emptySet();
-    }
-
-    @Override
-    public Set<IdentitySchemaNode> getIdentities() {
-        return Collections.emptySet();
-    }
-
-    @Override
-    public List<ExtensionDefinition> getExtensionSchemaNodes() {
-        return Collections.emptyList();
-    }
 }