MultiTenantConfigurationInterpolator.java
package com.tradecloud.infrastructure.configuration;
import com.tradecloud.authentication.MultiTenantUtil;
import org.apache.commons.configuration.interpol.ConfigurationInterpolator;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.text.StrLookup;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.InitializingBean;
/**
* Responsible with providing the multi-tenant configuration with a 'context'.
* (Which clients configuration to read.)
*/
public final class MultiTenantConfigurationInterpolator extends StrLookup implements InitializingBean {
private static final transient Logger log = Logger.getLogger(MultiTenantConfigurationInterpolator.class);
@Override
public String lookup(final String key) {
String client = StringUtils.defaultIfEmpty(MultiTenantUtil.getActiveClient(), "default");
log.debug(String.format("Using %s as the configuration context.", client));
return client;
}
@Override
public void afterPropertiesSet() {
ConfigurationInterpolator.registerGlobalLookup("ctx", this);
}
}