import com.google.common.base.Optional;
import com.google.common.base.Preconditions;
import com.google.common.io.ByteStreams;
-import com.google.common.util.concurrent.CheckedFuture;
import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.ListenableFuture;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
+import java.nio.charset.Charset;
import java.util.Map;
import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId;
import org.opendaylight.yangtools.yang.model.repo.api.SchemaSourceException;
import org.slf4j.LoggerFactory;
/**
- * Provides YANG schema sources from yang library
+ * Provides YANG schema sources from yang library.
*/
public final class YangLibrarySchemaYangSourceProvider implements SchemaSourceProvider<YangTextSchemaSource> {
}
@Override
- public CheckedFuture<? extends YangTextSchemaSource, SchemaSourceException> getSource(
+ public ListenableFuture<? extends YangTextSchemaSource> getSource(
final SourceIdentifier sourceIdentifier) {
Preconditions.checkNotNull(sourceIdentifier);
Preconditions.checkArgument(availableSources.containsKey(sourceIdentifier));
return download(sourceIdentifier);
}
- private CheckedFuture<? extends YangTextSchemaSource, SchemaSourceException> download(final SourceIdentifier sId) {
- final URL url = availableSources.get(sId);
- try(final InputStream in = url.openStream()) {
- final String schemaContent = new String(ByteStreams.toByteArray(in));
+ private ListenableFuture<? extends YangTextSchemaSource> download(final SourceIdentifier sourceIdentifier) {
+ final URL url = availableSources.get(sourceIdentifier);
+ try (InputStream in = url.openStream()) {
+ final String schemaContent = new String(ByteStreams.toByteArray(in), Charset.defaultCharset());
final NetconfRemoteSchemaYangSourceProvider.NetconfYangTextSchemaSource yangSource =
- new NetconfRemoteSchemaYangSourceProvider.
- NetconfYangTextSchemaSource(id, sId, Optional.of(schemaContent));
- LOG.debug("Source {} downloaded from a yang library's url {}", sId, url);
- return Futures.immediateCheckedFuture(yangSource);
+ new NetconfRemoteSchemaYangSourceProvider
+ .NetconfYangTextSchemaSource(id, sourceIdentifier, Optional.of(schemaContent));
+ LOG.debug("Source {} downloaded from a yang library's url {}", sourceIdentifier, url);
+ return Futures.immediateFuture(yangSource);
} catch (IOException e) {
- LOG.warn("Unable to download source {} from a yang library's url {}", sId, url, e);
- return Futures.immediateFailedCheckedFuture(
- new SchemaSourceException("Unable to download remote schema for " + sId + " from " + url, e));
+ LOG.warn("Unable to download source {} from a yang library's url {}", sourceIdentifier, url, e);
+ return Futures.immediateFailedFuture(new SchemaSourceException(
+ "Unable to download remote schema for " + sourceIdentifier + " from " + url, e));
}
}
}