All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.hubspot.singularity.runner.base.config.ConfigurationBinder Maven / Gradle / Ivy

There is a newer version: 1.5.0
Show newest version
package com.hubspot.singularity.runner.base.config;

import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.common.base.Preconditions.checkState;

import com.google.common.base.Optional;
import com.google.inject.Binder;
import com.google.inject.Scopes;
import com.google.inject.multibindings.Multibinder;
import com.hubspot.singularity.runner.base.configuration.BaseRunnerConfiguration;
import com.hubspot.singularity.runner.base.configuration.Configuration;

public class ConfigurationBinder {
  private final Binder binder;
  private final Multibinder multibinder;

  public static  ConfigurationBinder newBinder(Binder binder) {
    return new ConfigurationBinder(binder);
  }

  private ConfigurationBinder(Binder binder) {
    this.binder = binder;
    this.multibinder = Multibinder.newSetBinder(binder, BaseRunnerConfiguration.class);
  }

  public  ConfigurationBinder bindPrimaryConfiguration(Class configurationClass, Optional filename) {
    bindConfiguration(configurationClass, filename);
    binder.bind(BaseRunnerConfiguration.class).to(configurationClass);
    return this;
  }

  public  ConfigurationBinder bindConfiguration(Class configurationClass, Optional filename) {
    checkNotNull(configurationClass, "configurationClass");
    checkState(configurationClass.getAnnotation(Configuration.class) != null, "%s must be annotated with @Configuration", configurationClass.getSimpleName());

    binder.bind(configurationClass).toProvider(new SingularityRunnerConfigurationProvider(configurationClass, filename)).in(Scopes.SINGLETON);
    multibinder.addBinding().to(configurationClass);
    return this;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy