X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-netconf-connector%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fconnect%2Fnetconf%2FNetconfRemoteSchemaSourceProvider.java;h=31c6bd0138b41b4fc06f102dc8736f35cce0681a;hp=fa6b6f7ca58f4403e9c9c3b97f79fbb2aa47d2ea;hb=e159106bc148e76fc1e3e3c780bdd740d99e74ed;hpb=c0ed4d565d180c360f7506b2577c4b2d732e173c diff --git a/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/NetconfRemoteSchemaSourceProvider.java b/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/NetconfRemoteSchemaSourceProvider.java index fa6b6f7ca5..31c6bd0138 100644 --- a/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/NetconfRemoteSchemaSourceProvider.java +++ b/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/NetconfRemoteSchemaSourceProvider.java @@ -7,7 +7,8 @@ */ package org.opendaylight.controller.sal.connect.netconf; -import java.util.Set; +import java.util.Collection; +import java.util.concurrent.ExecutionException; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.RpcResult; @@ -18,6 +19,9 @@ import org.opendaylight.yangtools.yang.data.impl.util.CompositeNodeBuilder; import org.opendaylight.yangtools.yang.model.util.repo.SchemaSourceProvider; import com.google.common.base.Optional; +import com.google.common.base.Preconditions; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; class NetconfRemoteSchemaSourceProvider implements SchemaSourceProvider { @@ -26,11 +30,13 @@ class NetconfRemoteSchemaSourceProvider implements SchemaSourceProvider public static final QName GET_SCHEMA_QNAME = QName.create(IETF_NETCONF_MONITORING, "get-schema"); public static final QName GET_DATA_QNAME = QName.create(IETF_NETCONF_MONITORING, "data"); - NetconfDevice device; + private final NetconfDevice device; + + private final Logger logger; public NetconfRemoteSchemaSourceProvider(NetconfDevice device) { - super(); - this.device = device; + this.device = Preconditions.checkNotNull(device); + logger = LoggerFactory.getLogger(NetconfDevice.class + "#" + device.getName()); } @Override @@ -43,16 +49,20 @@ class NetconfRemoteSchemaSourceProvider implements SchemaSourceProvider request.addLeaf("version", revision.get()); } - device.logger.trace("Loading YANG schema source for {}:{}", moduleName, revision); - RpcResult schemaReply = device.invokeRpc(GET_SCHEMA_QNAME, request.toInstance()); - if (schemaReply.isSuccessful()) { - String schemaBody = getSchemaFromRpc(schemaReply.getResult()); - if (schemaBody != null) { - device.logger.trace("YANG Schema successfully retrieved from remote for {}:{}", moduleName, revision); - return Optional.of(schemaBody); + logger.trace("Loading YANG schema source for {}:{}", moduleName, revision); + try { + RpcResult schemaReply = device.invokeRpc(GET_SCHEMA_QNAME, request.toInstance()).get(); + if (schemaReply.isSuccessful()) { + String schemaBody = getSchemaFromRpc(schemaReply.getResult()); + if (schemaBody != null) { + device.logger.trace("YANG Schema successfully retrieved from remote for {}:{}", moduleName, revision); + return Optional.of(schemaBody); + } } + logger.warn("YANG shcema was not successfully retrieved. Errors: {}", schemaReply.getErrors()); + } catch (InterruptedException | ExecutionException e) { + logger.warn("YANG shcema was not successfully retrieved.", e); } - device.logger.warn("YANG shcema was not successfully retrieved."); return Optional.absent(); } @@ -68,7 +78,7 @@ class NetconfRemoteSchemaSourceProvider implements SchemaSourceProvider return null; } - public static final boolean isSupportedFor(Set capabilities) { + public static final boolean isSupportedFor(Collection capabilities) { return capabilities.contains(IETF_NETCONF_MONITORING); } }