package net.ayld.facade.util;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.env.ConfigurableEnvironment;
import com.google.common.base.Strings;
public enum Contexts {
SPRING(new ClassPathXmlApplicationContext("META-INF/context.xml"));
private static final String SPRING_PROFILES_ENV_VAR_NAME = "spring.profiles.active";
private final ApplicationContext context;
private Contexts(ApplicationContext context) {
this.context = context;
final String activeProfiles = System.getProperty(SPRING_PROFILES_ENV_VAR_NAME);
final boolean concurrencyEnabled;
if (!Strings.isNullOrEmpty(activeProfiles)) {
concurrencyEnabled = activeProfiles.contains(Settings.CONCURRENT_PROFILE_NAME.getValue());
}
else {
concurrencyEnabled = Boolean.valueOf(Settings.CONCURRENCY_ENABLED.getValue());
}
if (concurrencyEnabled) {
final ConfigurableEnvironment env = (ConfigurableEnvironment) this.context.getEnvironment();
env.setActiveProfiles(Settings.CONCURRENT_PROFILE_NAME.getValue());
}
}
public ApplicationContext instance() {
return context;
}
}