Advertise :validate:1.0 capability if DOMDataTransactionValidator is supported 35/73035/1
authorMarek Gradzki <mgradzki@cisco.com>
Fri, 15 Jun 2018 11:54:41 +0000 (13:54 +0200)
committerMarek Gradzki <mgradzki@cisco.com>
Fri, 15 Jun 2018 13:08:01 +0000 (15:08 +0200)
Change-Id: I193ba007f32114aa1d43375bfdc6772be173db7c
Signed-off-by: Marek Gradzki <mgradzki@cisco.com>
netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/netconf/mdsal/connector/MdsalNetconfOperationServiceFactory.java

index d88e64ef15aba94bd1286493b04523ca4418425a..8a796bcaf6cff2f1a7b454abcdf9cdc990ae8a44 100644 (file)
@@ -14,6 +14,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.nio.charset.StandardCharsets;
+import java.util.Collections;
 import java.util.HashSet;
 import java.util.Optional;
 import java.util.Set;
@@ -21,6 +22,7 @@ import java.util.concurrent.ExecutionException;
 import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker;
 import org.opendaylight.controller.md.sal.dom.api.DOMRpcService;
 import org.opendaylight.controller.sal.core.api.model.SchemaService;
+import org.opendaylight.netconf.api.capability.BasicCapability;
 import org.opendaylight.netconf.api.capability.Capability;
 import org.opendaylight.netconf.api.capability.YangModuleCapability;
 import org.opendaylight.netconf.api.monitoring.CapabilityListener;
@@ -38,6 +40,8 @@ import org.slf4j.LoggerFactory;
 public class MdsalNetconfOperationServiceFactory implements NetconfOperationServiceFactory, AutoCloseable {
 
     private static final Logger LOG = LoggerFactory.getLogger(MdsalNetconfOperationServiceFactory.class);
+    private static final BasicCapability VALIDATE_CAPABILITY =
+        new BasicCapability("urn:ietf:params:netconf:capability:validate:1.0");
 
     private final DOMDataBroker dataBroker;
     private final DOMRpcService rpcService;
@@ -148,6 +152,11 @@ public class MdsalNetconfOperationServiceFactory implements NetconfOperationServ
 
     @Override
     public AutoCloseable registerCapabilityListener(final CapabilityListener listener) {
+        // Advertise validate capability only if DOMDataBroker provides DOMDataTransactionValidator
+        if (dataBroker.getSupportedExtensions().get(DOMDataTransactionValidator.class) != null) {
+            listener.onCapabilitiesChanged(Collections.singleton(VALIDATE_CAPABILITY), Collections.emptySet());
+        }
+        // Advertise namespaces of supported YANG models as NETCONF capabilities
         return currentSchemaContext.registerCapabilityListener(listener);
     }
 }