Allow module to be represented in different formats
[yangtools.git] / yang / yang-maven-plugin / src / main / java / org / opendaylight / yangtools / yang2sources / plugin / ContextHolder.java
index 83d1c4c526618dd36652c42230ce8e17c19fd5c7..a26b0fec1d06acf943f792b6cb21e9118eaf2a30 100644 (file)
@@ -7,6 +7,7 @@
  */
 package org.opendaylight.yangtools.yang2sources.plugin;
 
+import static com.google.common.base.Preconditions.checkArgument;
 import static java.util.Objects.requireNonNull;
 
 import com.google.common.collect.ImmutableSet;
@@ -15,9 +16,12 @@ import java.util.Set;
 import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
 import org.opendaylight.yangtools.yang.model.api.Module;
+import org.opendaylight.yangtools.yang.model.repo.api.SchemaSourceRepresentation;
 import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
+import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
+import org.opendaylight.yangtools.yang2sources.spi.ModuleResourceResolver;
 
-final class ContextHolder implements Immutable {
+final class ContextHolder implements Immutable, ModuleResourceResolver {
     private final EffectiveModelContext context;
     private final Set<Module> modules;
     private final Set<SourceIdentifier> sources;
@@ -28,6 +32,17 @@ final class ContextHolder implements Immutable {
         this.sources = ImmutableSet.copyOf(sources);
     }
 
+    @Override
+    public Optional<String> findModuleResourcePath(final Module module,
+            final Class<? extends SchemaSourceRepresentation> representation) {
+        checkArgument(YangTextSchemaSource.class.equals(requireNonNull(representation)),
+            "Unsupported representation %s", representation);
+        final SourceIdentifier id = Util.moduleToIdentifier(module);
+        return sources.contains(id)
+                ? Optional.of("/" + YangToSourcesProcessor.META_INF_YANG_STRING_JAR + "/" + id.toYangFilename())
+                        : Optional.empty();
+    }
+
     EffectiveModelContext getContext() {
         return context;
     }
@@ -35,11 +50,4 @@ final class ContextHolder implements Immutable {
     Set<Module> getYangModules() {
         return modules;
     }
-
-    Optional<String> moduleToResourcePath(final Module mod) {
-        final SourceIdentifier id = Util.moduleToIdentifier(mod);
-        return sources.contains(id)
-                ? Optional.of("/" + YangToSourcesProcessor.META_INF_YANG_STRING_JAR + "/" + id.toYangFilename())
-                        : Optional.empty();
-    }
-}
\ No newline at end of file
+}