From a90863760d1ae1a92520ce29841aec600d25a83a Mon Sep 17 00:00:00 2001 From: Jan Srnicek Date: Fri, 30 Jun 2017 15:10:27 +0200 Subject: HONEYCOMB-358 - Conditional module loading Change-Id: Ic9b7182cc77bf2f73cf5edd3ee19f25f53711cda Signed-off-by: Jan Srnicek --- .../distro/schema/YangBindingProviderModule.java | 57 +--------------------- 1 file changed, 2 insertions(+), 55 deletions(-) (limited to 'infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/YangBindingProviderModule.java') 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. - *

- * 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 binder = - Multibinder.newSetBinder(binder(), YangModelBindingProvider.class); - final List 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) 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(); } } -- cgit 1.2.3-korg