diff options
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.java | 57 |
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(); } } |