package com.intrbiz.bergamot.config.validator;
import com.intrbiz.bergamot.config.model.TemplatedObjectCfg;
public interface BergamotObjectLocator
{
<T extends TemplatedObjectCfg<T>> T lookup(Class<T> type, String name);
/**
* Create a locator which will lookup objects from multiple sources
*/
public static BergamotObjectLocator from(final BergamotObjectLocator locator, final BergamotObjectLocator... locators)
{
return new BergamotObjectLocator()
{
@Override
public <T extends TemplatedObjectCfg<T>> T lookup(Class<T> type, String name)
{
T ret = locator.lookup(type, name);
if (ret == null)
{
for (BergamotObjectLocator locator : locators)
{
ret = locator.lookup(type, name);
if (ret != null) return ret;
}
}
return ret;
}
};
}
}