/*
* Copyright 2013 Netflix, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.netflix.governator.lifecycle;
import java.util.Collection;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.ImmutableSet;
import com.google.inject.Inject;
import com.netflix.governator.LifecycleManager;
import com.netflix.governator.configuration.ConfigurationDocumentation;
import com.netflix.governator.configuration.ConfigurationMapper;
import com.netflix.governator.configuration.ConfigurationProvider;
public class LifecycleManagerArguments
{
private static final Logger log = LoggerFactory.getLogger(LifecycleManagerArguments.class);
@VisibleForTesting
public static final long DEFAULT_WARM_UP_PADDING_MS = TimeUnit.SECONDS.toMillis(3);
@Inject
private ConfigurationProvider configurationProvider;
@Inject
private ConfigurationMapper configurationMapper;
@Inject
private ConfigurationDocumentation configurationDocumentation;
@Inject
private LifecycleManager lifecycleManager;
@Inject(optional = true)
private Set<LifecycleListener> lifecycleListeners = ImmutableSet.of();
@Inject(optional = true)
private Set<ResourceLocator> resourceLocators = ImmutableSet.of();
@Inject
public LifecycleManagerArguments(
ConfigurationDocumentation configurationDocumentation,
ConfigurationMapper configurationMapper,
ConfigurationProvider configurationProvider)
{
this.configurationDocumentation = configurationDocumentation;
this.configurationMapper = configurationMapper;
this.configurationProvider = configurationProvider;
}
public LifecycleManagerArguments() {
this.configurationDocumentation = new ConfigurationDocumentation();
this.configurationProvider = new LifecycleConfigurationProviders();
this.configurationMapper = new DefaultConfigurationMapper();
}
public ConfigurationMapper getConfigurationMapper() {
return configurationMapper;
}
public void setConfigurationMapper(ConfigurationMapper configurationMapper) {
this.configurationMapper = configurationMapper;
}
public ConfigurationProvider getConfigurationProvider()
{
return configurationProvider;
}
public Collection<LifecycleListener> getLifecycleListeners()
{
return lifecycleListeners;
}
public void setConfigurationProvider(ConfigurationProvider configurationProvider)
{
this.configurationProvider = configurationProvider;
}
public void setLifecycleListeners(Collection<LifecycleListener> lifecycleListeners)
{
this.lifecycleListeners = ImmutableSet.copyOf(lifecycleListeners);
}
public Set<ResourceLocator> getResourceLocators()
{
return resourceLocators;
}
public void setResourceLocators(Set<ResourceLocator> resourceLocators)
{
this.resourceLocators = ImmutableSet.copyOf(resourceLocators);
}
public void setConfigurationDocumentation(ConfigurationDocumentation configurationDocumentation) {
this.configurationDocumentation = configurationDocumentation;
}
public ConfigurationDocumentation getConfigurationDocumentation() {
return configurationDocumentation;
}
public LifecycleManager getLifecycleManager() {
return lifecycleManager;
}
public void setLifecycleManager(LifecycleManager lifecycleManager) {
this.lifecycleManager = lifecycleManager;
}
}