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);
    }

}