001
002package io.vrap.rmf.base.client;
003
004import java.util.Map;
005
006public interface ContextApiHttpClient extends AutoCloseable, ApiHttpClient, ContextAware<ContextApiHttpClient> {
007    static ContextApiHttpClient of(final ApiHttpClient client) {
008        return new ContextApiHttpClientImpl(client);
009    }
010
011    static ContextApiHttpClient of(final ApiHttpClient client, final Map<Object, Object> contextMap) {
012        return new ContextApiHttpClientImpl(client, contextMap);
013    }
014
015    static ContextApiHttpClient of(final ApiHttpClient client, final Context context) {
016        return new ContextApiHttpClientImpl(client).addContext(context);
017    }
018
019    static ContextApiHttpClient withMdc(final ApiHttpClient client) {
020        return new ContextApiHttpClientImpl(client).addContext(new MDCContext());
021    }
022
023    static ContextApiHttpClient of(final ApiHttpClient client, final boolean closeHttpClient) {
024        return new ContextApiHttpClientImpl(client, closeHttpClient);
025    }
026
027    static ContextApiHttpClient of(final ApiHttpClient client, final Map<Object, Object> contextMap,
028            final boolean closeHttpClient) {
029        return new ContextApiHttpClientImpl(client, contextMap, closeHttpClient);
030    }
031
032    static ContextApiHttpClient of(final ApiHttpClient client, final Context context, final boolean closeHttpClient) {
033        return new ContextApiHttpClientImpl(client, closeHttpClient).addContext(context);
034    }
035
036    static ContextApiHttpClient withMdc(final ApiHttpClient client, final boolean closeHttpClient) {
037        return new ContextApiHttpClientImpl(client, closeHttpClient).addContext(new MDCContext());
038    }
039}