- final Optional<String> moduleSource = schemaContext.getModuleSource(moduleIdentifier);
- if(moduleSource.isPresent()) {
- return moduleSource.get();
- } else {
- try {
- return Iterables.find(getModules(), new Predicate<Module>() {
- @Override
- public boolean apply(final Module input) {
- final ModuleIdentifierImpl id = new ModuleIdentifierImpl(input.getName(), Optional.fromNullable(input.getNamespace()), Optional.fromNullable(input.getRevision()));
- return id.equals(moduleIdentifier);
- }
- }).getSource();
- } catch (final NoSuchElementException e) {
- throw new IllegalArgumentException("Source for yang module " + moduleIdentifier + " not found", e);
- }
+ final CheckedFuture<? extends YangTextSchemaSource, SchemaSourceException> source = sourceProvider.getSource(
+ moduleIdentifier.getRevision() == null ?
+ new SourceIdentifier(moduleIdentifier.getName()) :
+ new SourceIdentifier(moduleIdentifier.getName(),
+ QName.formattedRevision(moduleIdentifier.getRevision())));
+
+ try {
+ final YangTextSchemaSource yangTextSchemaSource = source.checkedGet();
+ return new String(ByteStreams.toByteArray(yangTextSchemaSource.openStream()), Charsets.UTF_8);
+ } catch (SchemaSourceException | IOException e) {
+ LOG.warn("Unable to provide source for {}", moduleIdentifier, e);
+ throw new IllegalArgumentException("Unable to provide source for " + moduleIdentifier, e);