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

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

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

import java.lang.management.ManagementFactory;
import java.util.Properties;

import com.codahale.metrics.MetricRegistry;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.collect.ObjectArrays;
import com.google.inject.AbstractModule;
import com.google.inject.Provides;
import com.google.inject.Singleton;
import com.google.inject.name.Named;
import com.google.inject.name.Names;
import com.hubspot.mesos.JavaUtils;

public class SingularityRunnerBaseModule extends AbstractModule {

  public static final String PROCESS_NAME = "process.name";

  private final SingularityConfigurationLoader[] configurations;

  public SingularityRunnerBaseModule(SingularityConfigurationLoader... configurations) {
    this.configurations = ObjectArrays.concat(new SingularityRunnerBaseConfigurationLoader(), configurations);
  }

  @Override
  protected void configure() {
    Properties properties = new Properties();

    for (SingularityConfigurationLoader configurationLoader : configurations) {
      configurationLoader.bindAllDefaults(properties);
    }

    for (SingularityConfigurationLoader configurationLoader : configurations) {
      configurationLoader.bindPropertiesFile(properties);
    }

    Names.bindProperties(binder(), properties);

    bind(Properties.class).toInstance(properties);
    bind(SingularityRunnerBaseLogging.class).asEagerSingleton();
  }

  @Provides
  @Singleton
  @Named(PROCESS_NAME)
  public String getProcessName() {
    String name = ManagementFactory.getRuntimeMXBean().getName();
    if (name != null && name.contains("@")) {
      return name.substring(0, name.indexOf("@"));
    }
    return name;
  }

  @Provides
  @Singleton
  public ObjectMapper getObjectMapper() {
    return JavaUtils.newObjectMapper();
  }

  @Provides
  @Singleton
  public MetricRegistry getMetricRegistry() {
    return new MetricRegistry();
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy