BUG 2412 - restconf @GET getModule(identifier,uri) method migration 71/14971/7
authorVaclav Demcak <vdemcak@cisco.com>
Fri, 6 Feb 2015 13:14:09 +0000 (14:14 +0100)
committerVaclav Demcak <vdemcak@cisco.com>
Tue, 24 Feb 2015 16:46:14 +0000 (17:46 +0100)
    * migration to new faster Infrastructure API and Codecs for method
    @GET getModules(String,UriInfo) on @Path {/modules/module/identifier}

    New faster Infrastructure API works with NormizedNodeContext and
    we are replacing first method getModule(URI) from RestconfService
    to use NormalizedNodeContext.

Change-Id: I7ae36a13ce4533598bbc3abf73d9090e1922abdb
Signed-off-by: Vaclav Demcak <vdemcak@cisco.com>
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/api/RestconfService.java
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/RestconfCompositeWrapper.java
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/RestconfImpl.java
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/StatisticsRestconfServiceWrapper.java

index 1da8ec6c9a53029caea4dccfe1d5be2abcd544b1..7bb90c83aa8b06f53f1e0cd65a3eee20cc34f42f 100644 (file)
@@ -74,7 +74,7 @@ public interface RestconfService {
     @Path("/modules/module/{identifier:.+}")
     @Produces({ Draft02.MediaTypes.API + JSON, Draft02.MediaTypes.API + XML, MediaType.APPLICATION_JSON,
             MediaType.APPLICATION_XML, MediaType.TEXT_XML })
-    public StructuredData getModule(@PathParam("identifier") String identifier, @Context UriInfo uriInfo);
+    public NormalizedNodeContext getModule(@PathParam("identifier") String identifier, @Context UriInfo uriInfo);
 
     @GET
     @Path("/operations")
index c9b8b1e24ed08a9fbf89588f67eb057083383b9d..bac967cfaf87b674cab950f4ead5922d3d4041d3 100644 (file)
@@ -37,7 +37,7 @@ public class RestconfCompositeWrapper implements RestconfService, SchemaRetrieva
     }
 
     @Override
-    public StructuredData getModule(final String identifier, final UriInfo uriInfo) {
+    public NormalizedNodeContext getModule(final String identifier, final UriInfo uriInfo) {
         return restconf.getModule(identifier, uriInfo);
     }
 
index a875615172228cb629c52aeabaf0dceefa9c71b9..f44ce951550b3cd01c940739568f197cd0e8e6fd 100644 (file)
@@ -249,6 +249,40 @@ public class RestconfImpl implements RestconfService {
                 mountPoint, schemaContext), moduleContainerBuilder.build());
     }
 
+    @Override
+    public NormalizedNodeContext getModule(final String identifier, final UriInfo uriInfo) {
+        Preconditions.checkNotNull(identifier);
+        final QName moduleNameAndRevision = getModuleNameAndRevision(identifier);
+        Module module = null;
+        DOMMountPoint mountPoint = null;
+        final SchemaContext schemaContext;
+        if (identifier.contains(ControllerContext.MOUNT)) {
+            final InstanceIdentifierContext mountPointIdentifier = controllerContext.toMountPointIdentifier(identifier);
+            mountPoint = mountPointIdentifier.getMountPoint();
+            module = controllerContext.findModuleByNameAndRevision(mountPoint, moduleNameAndRevision);
+            schemaContext = mountPoint.getSchemaContext();
+        } else {
+            module = controllerContext.findModuleByNameAndRevision(moduleNameAndRevision);
+            schemaContext = controllerContext.getGlobalSchema();
+        }
+
+        if (module == null) {
+            final String errMsg = "Module with name '" + moduleNameAndRevision.getLocalName()
+                    + "' and revision '" + moduleNameAndRevision.getRevision() + "' was not found.";
+            throw new RestconfDocumentedException(errMsg, ErrorType.PROTOCOL, ErrorTag.UNKNOWN_ELEMENT);
+        }
+
+        final Module restconfModule = getRestconfModule();
+        final Set<Module> modules = Collections.singleton(module);
+        final MapNode moduleMap = makeModuleMapNode(modules);
+
+        final DataSchemaNode moduleSchemaNode = controllerContext.getRestconfModuleRestConfSchemaNode(
+                restconfModule, Draft02.RestConfModule.MODULE_LIST_SCHEMA_NODE);
+        Preconditions.checkState(moduleSchemaNode instanceof ListSchemaNode);
+
+        return new NormalizedNodeContext(new InstanceIdentifierContext(null, moduleSchemaNode, mountPoint,
+                schemaContext), moduleMap);
+    }
 
     @Override
     public StructuredData getAvailableStreams(final UriInfo uriInfo) {
@@ -269,32 +303,6 @@ public class RestconfImpl implements RestconfService {
         return new StructuredData(streamsNode, streamsSchemaNode, null, parsePrettyPrintParameter(uriInfo));
     }
 
-    @Override
-    public StructuredData getModule(final String identifier, final UriInfo uriInfo) {
-        final QName moduleNameAndRevision = getModuleNameAndRevision(identifier);
-        Module module = null;
-        DOMMountPoint mountPoint = null;
-        if (identifier.contains(ControllerContext.MOUNT)) {
-            final InstanceIdentifierContext mountPointIdentifier = controllerContext.toMountPointIdentifier(identifier);
-            mountPoint = mountPointIdentifier.getMountPoint();
-            module = controllerContext.findModuleByNameAndRevision(mountPoint, moduleNameAndRevision);
-        } else {
-            module = controllerContext.findModuleByNameAndRevision(moduleNameAndRevision);
-        }
-
-        if (module == null) {
-            throw new RestconfDocumentedException("Module with name '" + moduleNameAndRevision.getLocalName()
-                    + "' and revision '" + moduleNameAndRevision.getRevision() + "' was not found.",
-                    ErrorType.PROTOCOL, ErrorTag.UNKNOWN_ELEMENT);
-        }
-
-        final Module restconfModule = getRestconfModule();
-        final DataSchemaNode moduleSchemaNode = controllerContext.getRestconfModuleRestConfSchemaNode(restconfModule,
-                Draft02.RestConfModule.MODULE_LIST_SCHEMA_NODE);
-        final CompositeNode moduleNode = toModuleCompositeNode(module, moduleSchemaNode);
-        return new StructuredData(moduleNode, moduleSchemaNode, mountPoint, parsePrettyPrintParameter(uriInfo));
-    }
-
     @Override
     public StructuredData getOperations(final UriInfo uriInfo) {
         final Set<Module> allModules = controllerContext.getAllModules();
index 9c5dc91803068f914ad0b83d9c5d3addfc67d3b3..53dda7dbfb9d719481fd76cfce540696c13c2ac7 100644 (file)
@@ -52,7 +52,7 @@ public class StatisticsRestconfServiceWrapper implements RestconfService {
     }
 
     @Override
-    public StructuredData getModule(final String identifier, final UriInfo uriInfo) {
+    public NormalizedNodeContext getModule(final String identifier, final UriInfo uriInfo) {
         return delegate.getModule(identifier, uriInfo);
     }
 
@@ -146,5 +146,4 @@ public class StatisticsRestconfServiceWrapper implements RestconfService {
     public BigInteger getRpc() {
         return BigInteger.valueOf(rpc.get());
     }
-
 }