package com.linkedin.restli.client.config;
import java.util.function.Function;
import com.linkedin.restli.client.InboundRequestContextFinder;
import com.linkedin.restli.client.ParSeqRestliClientConfig;
import com.linkedin.restli.client.Request;
@FunctionalInterface
public interface RequestConfigProvider extends Function<Request<?>, RequestConfig> {
/**
* @param config configuration
* @param inboundRequestContextFinder request config finder
* @throws RuntimeException throws exception if config provider could not be built
* @return instance of RequestConfigProvider
*/
public static RequestConfigProvider build(ParSeqRestliClientConfig config, InboundRequestContextFinder inboundRequestContextFinder) {
try {
RequestConfigProviderBuilder builder = new RequestConfigProviderBuilder();
builder.setInboundRequestFinder(inboundRequestContextFinder)
.addConfig(getDefaultConfig());
if (config != null) {
builder.addConfig(config);
}
return builder.build();
} catch (RequestConfigKeyParsingException e) {
throw new RuntimeException(e);
}
}
public static ParSeqRestliClientConfig getDefaultConfig() {
return RequestConfigProviderImpl.DEFAULT_CONFIG;
}
}