InstanceIdentifierContext does not take generics
[netconf.git] / restconf / restconf-nb-bierman02 / src / main / java / org / opendaylight / netconf / sal / restconf / impl / RestconfImpl.java
index 9c7f564455bd063ec1ea2fc2b9ba2c167bf8e415..16bc30d218d4f2f9660a205e3323d84d22068fb4 100644 (file)
@@ -11,9 +11,6 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 import static java.util.Objects.requireNonNull;
-import static org.opendaylight.netconf.sal.rest.api.Draft02.RestConfModule.MODULES_CONTAINER_QNAME;
-import static org.opendaylight.netconf.sal.rest.api.Draft02.RestConfModule.MODULE_LIST_QNAME;
-import static org.opendaylight.netconf.sal.rest.api.Draft02.RestConfModule.STREAMS_CONTAINER_QNAME;
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Predicates;
@@ -69,7 +66,7 @@ import org.opendaylight.mdsal.dom.api.DOMRpcResult;
 import org.opendaylight.mdsal.dom.api.DOMRpcService;
 import org.opendaylight.mdsal.dom.api.DOMSchemaService;
 import org.opendaylight.mdsal.dom.spi.DefaultDOMRpcResult;
-import org.opendaylight.netconf.sal.rest.api.Draft02.RestConfModule;
+import org.opendaylight.netconf.sal.rest.api.Draft02;
 import org.opendaylight.netconf.sal.rest.api.RestconfService;
 import org.opendaylight.netconf.sal.rest.impl.NormalizedNodeContext;
 import org.opendaylight.netconf.sal.streams.listeners.ListenerAdapter;
@@ -131,7 +128,6 @@ import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.model.api.SchemaNode;
 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
-import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier;
 import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -191,32 +187,6 @@ public final class RestconfImpl implements RestconfService {
             .appendFraction(ChronoField.NANO_OF_SECOND, 0, 9, true)
             .appendOffset("+HH:MM", "Z").toFormatter();
 
-    private static final @NonNull QName RESTCONF = QName.create(RestConfModule.IETF_RESTCONF_QNAME, "restconf");
-
-    private static final YangInstanceIdentifier MODULES = YangInstanceIdentifier.builder()
-            .node(RESTCONF)
-            .node(RESTCONF)
-            .node(MODULES_CONTAINER_QNAME)
-            .build();
-    private static final YangInstanceIdentifier MODULE = YangInstanceIdentifier.builder()
-            .node(RESTCONF)
-            .node(RESTCONF)
-            .node(MODULES_CONTAINER_QNAME)
-            .node(MODULE_LIST_QNAME)
-            .build();
-    private static final YangInstanceIdentifier STREAMS = YangInstanceIdentifier.builder()
-            .node(RESTCONF)
-            .node(RESTCONF)
-            .node(STREAMS_CONTAINER_QNAME)
-            .build();
-
-    private static final SchemaNodeIdentifier MODULES_SCHEMA_IDENTIFIER =
-            Absolute.of(RESTCONF, RESTCONF, MODULES_CONTAINER_QNAME);
-    private static final SchemaNodeIdentifier MODULE_SCHEMA_IDENTIFIER =
-            Absolute.of(RESTCONF, RESTCONF, MODULES_CONTAINER_QNAME, MODULE_LIST_QNAME);
-    private static final SchemaNodeIdentifier STREAMS_SCHEMA_IDENTIFIER =
-            Absolute.of(RESTCONF, RESTCONF, STREAMS_CONTAINER_QNAME);
-
     private final BrokerFacade broker;
 
     private final ControllerContext controllerContext;
@@ -246,16 +216,15 @@ public final class RestconfImpl implements RestconfService {
 
         final Module restconfModule = getRestconfModule();
         final DataSchemaNode modulesSchemaNode = controllerContext.getRestconfModuleRestConfSchemaNode(
-                restconfModule, RestConfModule.MODULES_CONTAINER_SCHEMA_NODE);
+                restconfModule, Draft02.RestConfModule.MODULES_CONTAINER_SCHEMA_NODE);
         checkState(modulesSchemaNode instanceof ContainerSchemaNode);
 
         final DataContainerNodeBuilder<NodeIdentifier, ContainerNode> moduleContainerBuilder =
                 SchemaAwareBuilders.containerBuilder((ContainerSchemaNode) modulesSchemaNode);
         moduleContainerBuilder.withChild(allModuleMap);
 
-        return new NormalizedNodeContext(new InstanceIdentifierContext<>(MODULES, MODULES_SCHEMA_IDENTIFIER,
-                modulesSchemaNode, null, schemaContext), moduleContainerBuilder.build(),
-                QueryParametersParser.parseWriterParameters(uriInfo));
+        return new NormalizedNodeContext(new InstanceIdentifierContext(null, modulesSchemaNode, null, schemaContext),
+                moduleContainerBuilder.build(), QueryParametersParser.parseWriterParameters(uriInfo));
     }
 
     /**
@@ -271,14 +240,14 @@ public final class RestconfImpl implements RestconfService {
             throw new RestconfDocumentedException(errMsg, ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE);
         }
 
-        final InstanceIdentifierContext<?> mountPointIdentifier =
+        final InstanceIdentifierContext mountPointIdentifier =
                 controllerContext.toMountPointIdentifier(identifier);
         final DOMMountPoint mountPoint = mountPointIdentifier.getMountPoint();
         final MapNode mountPointModulesMap = makeModuleMapNode(controllerContext.getAllModules(mountPoint));
 
         final Module restconfModule = getRestconfModule();
         final DataSchemaNode modulesSchemaNode = controllerContext.getRestconfModuleRestConfSchemaNode(
-                restconfModule, RestConfModule.MODULES_CONTAINER_SCHEMA_NODE);
+                restconfModule, Draft02.RestConfModule.MODULES_CONTAINER_SCHEMA_NODE);
         checkState(modulesSchemaNode instanceof ContainerSchemaNode);
 
         final DataContainerNodeBuilder<NodeIdentifier, ContainerNode> moduleContainerBuilder =
@@ -286,7 +255,7 @@ public final class RestconfImpl implements RestconfService {
         moduleContainerBuilder.withChild(mountPointModulesMap);
 
         return new NormalizedNodeContext(
-                new InstanceIdentifierContext<>(MODULES, MODULES_SCHEMA_IDENTIFIER, modulesSchemaNode, mountPoint,
+                new InstanceIdentifierContext(null, modulesSchemaNode, mountPoint,
                         controllerContext.getGlobalSchema()),
                 moduleContainerBuilder.build(), QueryParametersParser.parseWriterParameters(uriInfo));
     }
@@ -299,7 +268,7 @@ public final class RestconfImpl implements RestconfService {
         DOMMountPoint mountPoint = null;
         final EffectiveModelContext schemaContext;
         if (identifier.contains(ControllerContext.MOUNT)) {
-            final InstanceIdentifierContext<?> mountPointIdentifier =
+            final InstanceIdentifierContext mountPointIdentifier =
                     controllerContext.toMountPointIdentifier(identifier);
             mountPoint = mountPointIdentifier.getMountPoint();
             module = controllerContext.findModuleByNameAndRevision(mountPoint, nameRev.getKey(),
@@ -321,12 +290,11 @@ public final class RestconfImpl implements RestconfService {
         final MapNode moduleMap = makeModuleMapNode(modules);
 
         final DataSchemaNode moduleSchemaNode = controllerContext
-                .getRestconfModuleRestConfSchemaNode(restconfModule, RestConfModule.MODULE_LIST_SCHEMA_NODE);
+                .getRestconfModuleRestConfSchemaNode(restconfModule, Draft02.RestConfModule.MODULE_LIST_SCHEMA_NODE);
         checkState(moduleSchemaNode instanceof ListSchemaNode);
 
         return new NormalizedNodeContext(
-                new InstanceIdentifierContext<>(MODULE, MODULE_SCHEMA_IDENTIFIER, moduleSchemaNode, mountPoint,
-                        schemaContext), moduleMap,
+                new InstanceIdentifierContext(null, moduleSchemaNode, mountPoint, schemaContext), moduleMap,
                 QueryParametersParser.parseWriterParameters(uriInfo));
     }
 
@@ -337,7 +305,7 @@ public final class RestconfImpl implements RestconfService {
         final Set<String> availableStreams = Notificator.getStreamNames();
         final Module restconfModule = getRestconfModule();
         final DataSchemaNode streamSchemaNode = controllerContext
-                .getRestconfModuleRestConfSchemaNode(restconfModule, RestConfModule.STREAM_LIST_SCHEMA_NODE);
+                .getRestconfModuleRestConfSchemaNode(restconfModule, Draft02.RestConfModule.STREAM_LIST_SCHEMA_NODE);
         checkState(streamSchemaNode instanceof ListSchemaNode);
 
         final CollectionNodeBuilder<MapEntryNode, SystemMapNode> listStreamsBuilder =
@@ -348,7 +316,7 @@ public final class RestconfImpl implements RestconfService {
         }
 
         final DataSchemaNode streamsContainerSchemaNode = controllerContext.getRestconfModuleRestConfSchemaNode(
-                restconfModule, RestConfModule.STREAMS_CONTAINER_SCHEMA_NODE);
+                restconfModule, Draft02.RestConfModule.STREAMS_CONTAINER_SCHEMA_NODE);
         checkState(streamsContainerSchemaNode instanceof ContainerSchemaNode);
 
         final DataContainerNodeBuilder<NodeIdentifier, ContainerNode> streamsContainerBuilder =
@@ -356,8 +324,7 @@ public final class RestconfImpl implements RestconfService {
         streamsContainerBuilder.withChild(listStreamsBuilder.build());
 
         return new NormalizedNodeContext(
-                new InstanceIdentifierContext<>(STREAMS, STREAMS_SCHEMA_IDENTIFIER, streamsContainerSchemaNode,
-                        null, schemaContext),
+                new InstanceIdentifierContext(null, streamsContainerSchemaNode, null, schemaContext),
                 streamsContainerBuilder.build(), QueryParametersParser.parseWriterParameters(uriInfo));
     }
 
@@ -383,8 +350,7 @@ public final class RestconfImpl implements RestconfService {
             throw new RestconfDocumentedException(errMsg, ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE);
         }
 
-        final InstanceIdentifierContext<?> mountPointIdentifier =
-                controllerContext.toMountPointIdentifier(identifier);
+        final InstanceIdentifierContext mountPointIdentifier = controllerContext.toMountPointIdentifier(identifier);
         final DOMMountPoint mountPoint = mountPointIdentifier.getMountPoint();
         final var entry = OperationsResourceUtils.contextForModelContext(modelContext(mountPoint), mountPoint);
         return new NormalizedNodeContext(entry.getKey(), entry.getValue());
@@ -488,7 +454,7 @@ public final class RestconfImpl implements RestconfService {
             throw new WebApplicationException(Response.Status.NO_CONTENT);
         } else {
             return new NormalizedNodeContext(
-                    new InstanceIdentifierContext<>(null, resultNodeSchema, mountPoint, schemaContext),
+                    new InstanceIdentifierContext(null, resultNodeSchema, mountPoint, schemaContext),
                     resultData, QueryParametersParser.parseWriterParameters(uriInfo));
         }
     }
@@ -501,7 +467,7 @@ public final class RestconfImpl implements RestconfService {
         final EffectiveModelContext schemaContext;
         if (identifier.contains(ControllerContext.MOUNT)) {
             // mounted RPC call - look up mount instance.
-            final InstanceIdentifierContext<?> mountPointId = controllerContext.toMountPointIdentifier(identifier);
+            final InstanceIdentifierContext mountPointId = controllerContext.toMountPointIdentifier(identifier);
             mountPoint = mountPointId.getMountPoint();
             schemaContext = modelContext(mountPoint);
             final int startOfRemoteRpcName =
@@ -563,7 +529,7 @@ public final class RestconfImpl implements RestconfService {
         //
         //        This is legacy code, so if anybody cares to do that refactor, feel free to contribute, but I am not
         //        doing that work.
-        return new NormalizedNodeContext(new InstanceIdentifierContext<>(null, rpc, mountPoint, schemaContext), result,
+        return new NormalizedNodeContext(new InstanceIdentifierContext(null, rpc, mountPoint, schemaContext), result,
             QueryParametersParser.parseWriterParameters(uriInfo));
     }
 
@@ -734,7 +700,7 @@ public final class RestconfImpl implements RestconfService {
             }
         }
 
-        final InstanceIdentifierContext<?> iiWithData = controllerContext.toInstanceIdentifier(identifier);
+        final InstanceIdentifierContext iiWithData = controllerContext.toInstanceIdentifier(identifier);
         final DOMMountPoint mountPoint = iiWithData.getMountPoint();
         NormalizedNode data = null;
         final YangInstanceIdentifier normalizedII = iiWithData.getInstanceIdentifier();
@@ -751,7 +717,7 @@ public final class RestconfImpl implements RestconfService {
 
     @Override
     public NormalizedNodeContext readOperationalData(final String identifier, final UriInfo uriInfo) {
-        final InstanceIdentifierContext<?> iiWithData = controllerContext.toInstanceIdentifier(identifier);
+        final InstanceIdentifierContext iiWithData = controllerContext.toInstanceIdentifier(identifier);
         final DOMMountPoint mountPoint = iiWithData.getMountPoint();
         NormalizedNode data = null;
         final YangInstanceIdentifier normalizedII = iiWithData.getInstanceIdentifier();
@@ -814,7 +780,7 @@ public final class RestconfImpl implements RestconfService {
 
         requireNonNull(identifier);
 
-        final InstanceIdentifierContext<?> iiWithData = payload.getInstanceIdentifierContext();
+        final InstanceIdentifierContext iiWithData = payload.getInstanceIdentifierContext();
 
         validateInput(iiWithData.getSchemaNode(), payload);
         validateTopLevelNodeName(payload, iiWithData.getInstanceIdentifier());
@@ -910,7 +876,7 @@ public final class RestconfImpl implements RestconfService {
      */
     private static void validateListKeysEqualityInPayloadAndUri(final NormalizedNodeContext payload) {
         checkArgument(payload != null);
-        final InstanceIdentifierContext<?> iiWithData = payload.getInstanceIdentifierContext();
+        final InstanceIdentifierContext iiWithData = payload.getInstanceIdentifierContext();
         final PathArgument lastPathArgument = iiWithData.getInstanceIdentifier().getLastPathArgument();
         final SchemaNode schemaNode = iiWithData.getSchemaNode();
         final NormalizedNode data = payload.getData();
@@ -957,7 +923,7 @@ public final class RestconfImpl implements RestconfService {
             throw new RestconfDocumentedException("Input is required.", ErrorType.PROTOCOL, ErrorTag.MALFORMED_MESSAGE);
         }
         final DOMMountPoint mountPoint = payload.getInstanceIdentifierContext().getMountPoint();
-        final InstanceIdentifierContext<?> iiWithData = payload.getInstanceIdentifierContext();
+        final InstanceIdentifierContext iiWithData = payload.getInstanceIdentifierContext();
         final YangInstanceIdentifier normalizedII = iiWithData.getInstanceIdentifier();
 
         boolean insertUsed = false;
@@ -1050,7 +1016,7 @@ public final class RestconfImpl implements RestconfService {
 
     @Override
     public Response deleteConfigurationData(final String identifier) {
-        final InstanceIdentifierContext<?> iiWithData = controllerContext.toInstanceIdentifier(identifier);
+        final InstanceIdentifierContext iiWithData = controllerContext.toInstanceIdentifier(identifier);
         final DOMMountPoint mountPoint = iiWithData.getMountPoint();
         final YangInstanceIdentifier normalizedII = iiWithData.getInstanceIdentifier();
 
@@ -1165,7 +1131,7 @@ public final class RestconfImpl implements RestconfService {
 
         if (response != null) {
             // prepare node with value of location
-            final InstanceIdentifierContext<?> iid = prepareIIDSubsStreamOutput();
+            final InstanceIdentifierContext iid = prepareIIDSubsStreamOutput();
             final NormalizedNodeBuilder<NodeIdentifier, Object, LeafNode<Object>> builder =
                     ImmutableLeafNodeBuilder.create().withValue(response.toString());
             builder.withNodeIdentifier(
@@ -1198,7 +1164,7 @@ public final class RestconfImpl implements RestconfService {
      * @return {@link InstanceIdentifierContext} of location leaf for
      *         notification
      */
-    private InstanceIdentifierContext<?> prepareIIDSubsStreamOutput() {
+    private InstanceIdentifierContext prepareIIDSubsStreamOutput() {
         final QName qnameBase = QName.create("subscribe:to:notification", "2016-10-28", "notifi");
         final EffectiveModelContext schemaCtx = controllerContext.getGlobalSchema();
         final DataSchemaNode location = ((ContainerSchemaNode) schemaCtx
@@ -1208,8 +1174,7 @@ public final class RestconfImpl implements RestconfService {
         path.add(NodeIdentifier.create(qnameBase));
         path.add(NodeIdentifier.create(QName.create(qnameBase, "location")));
 
-        return new InstanceIdentifierContext<SchemaNode>(YangInstanceIdentifier.create(path), location, null,
-                schemaCtx);
+        return new InstanceIdentifierContext(YangInstanceIdentifier.create(path), location, null, schemaCtx);
     }
 
     /**
@@ -1423,7 +1388,7 @@ public final class RestconfImpl implements RestconfService {
         requireNonNull(modules);
         final Module restconfModule = getRestconfModule();
         final DataSchemaNode moduleSchemaNode = controllerContext
-                .getRestconfModuleRestConfSchemaNode(restconfModule, RestConfModule.MODULE_LIST_SCHEMA_NODE);
+                .getRestconfModuleRestConfSchemaNode(restconfModule, Draft02.RestConfModule.MODULE_LIST_SCHEMA_NODE);
         checkState(moduleSchemaNode instanceof ListSchemaNode);
 
         final CollectionNodeBuilder<MapEntryNode, SystemMapNode> listModuleBuilder =