1e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin/*
2e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin * Copyright (C) 2012 Google Inc.
3e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin *
4e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin * Licensed under the Apache License, Version 2.0 (the "License");
5e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin * you may not use this file except in compliance with the License.
6e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin * You may obtain a copy of the License at
7e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin *
8e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin * http://www.apache.org/licenses/LICENSE-2.0
9e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin *
10e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin * Unless required by applicable law or agreed to in writing, software
11e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin * distributed under the License is distributed on an "AS IS" BASIS,
12e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin * See the License for the specific language governing permissions and
14e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin * limitations under the License.
15e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin */
16e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin
17e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffinpackage com.google.caliper.config;
18e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin
19e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffinimport dagger.Module;
20e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffinimport dagger.Provides;
21e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin
22e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffinimport java.util.logging.LogManager;
23e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffinimport javax.inject.Singleton;
24e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin
25e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin/**
26e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin * Bindings for Caliper configuration.
27e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin */
28e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin@Module
29e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffinpublic final class ConfigModule {
30e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin
31e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin  /**
32e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin   * The {@code doNotRemove} parameter is required here to ensure that the logging configuration
33e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin   * is loaded and used to update the logger settings before the configuration is loaded.
34e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin   */
35e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin  @Provides @Singleton
36e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin  static CaliperConfig provideCaliperConfig(
37e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin      CaliperConfigLoader configLoader,
38e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin      @SuppressWarnings("unused") LoggingConfigLoader doNotRemove)
39e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin      throws InvalidConfigurationException {
40e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin
41e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin    return configLoader.loadOrCreate();
42e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin  }
43e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin
44e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin  @Provides static LogManager provideLogManager() {
45e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin    return LogManager.getLogManager();
46e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin  }
47e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin}
48