summaryrefslogtreecommitdiffstats
path: root/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/YangBindingProviderModule.java
diff options
context:
space:
mode:
Diffstat (limited to 'infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/YangBindingProviderModule.java')
-rw-r--r--infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/YangBindingProviderModule.java57
1 files changed, 2 insertions, 55 deletions
diff --git a/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/YangBindingProviderModule.java b/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/YangBindingProviderModule.java
index 8e402808b..d705226bf 100644
--- a/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/YangBindingProviderModule.java
+++ b/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/YangBindingProviderModule.java
@@ -16,68 +16,15 @@
package io.fd.honeycomb.infra.distro.schema;
-import com.google.common.base.Charsets;
-import com.google.common.base.Strings;
-import com.google.common.collect.Lists;
-import com.google.common.io.Resources;
import com.google.inject.AbstractModule;
-import com.google.inject.Singleton;
-import com.google.inject.multibindings.Multibinder;
-import java.io.IOException;
-import java.net.URL;
-import java.util.Collections;
-import java.util.List;
-import javax.annotation.Nonnull;
-import org.opendaylight.yangtools.yang.binding.YangModelBindingProvider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-/**
- * Load all YangModelBindingProvider classes from classpath.
- * <p/>
- * Relying on /META-INF/services/ metadata.
- */
public class YangBindingProviderModule extends AbstractModule {
private static final Logger LOG = LoggerFactory.getLogger(YangBindingProviderModule.class);
- private static final String YANG_BA_PROVIDER_PATH = "META-INF/services/" + YangModelBindingProvider.class.getName();
-
protected void configure() {
- final Multibinder<YangModelBindingProvider> binder =
- Multibinder.newSetBinder(binder(), YangModelBindingProvider.class);
- final List<URL> resources;
- try {
- resources = Collections.list(getClass().getClassLoader().getResources(YANG_BA_PROVIDER_PATH));
- } catch (IOException e) {
- throw new IllegalStateException("Unable to load binding providers from path: " + YANG_BA_PROVIDER_PATH, e);
- }
- LOG.debug("ModuleProviders found at {}", resources);
- resources.stream()
- .map(YangBindingProviderModule::urlToString)
- .flatMap(content -> Lists.newArrayList(content.split("\n")).stream())
- .filter(line -> !Strings.isNullOrEmpty(line.trim()))
- .distinct()
- .map(YangBindingProviderModule::loadClass)
- .forEach(providerClass -> {
- LOG.debug("ModuleProvider found for {}", providerClass);
- binder.addBinding().to((Class<? extends YangModelBindingProvider>) providerClass)
- .in(Singleton.class);
- });
- }
-
- private static Class<?> loadClass(@Nonnull final String className) {
- try {
- return Class.forName(className);
- } catch (ClassNotFoundException e) {
- throw new IllegalArgumentException("Unable to load class: " + className, e);
- }
- }
-
- private static String urlToString(@Nonnull final URL url) {
- try {
- return Resources.toString(url, Charsets.UTF_8);
- } catch (IOException e) {
- throw new IllegalArgumentException("Unable to read resource from: " + url, e);
- }
+ LOG.info("Configuring YangBindingProviderModule");
+ bind(YangModulesProvider.YangModules.class).toProvider(YangModulesProvider.class).asEagerSingleton();
}
}