001
002package io.vrap.rmf.base.client;
003
004import java.net.URI;
005import java.util.concurrent.CompletableFuture;
006
007import com.fasterxml.jackson.core.type.TypeReference;
008import com.fasterxml.jackson.databind.JavaType;
009import com.fasterxml.jackson.databind.ObjectMapper;
010
011/**
012 * Implementation of a non executable {@link ApiHttpClient}
013 */
014public class SerializerOnlyApiHttpClient implements ApiHttpClient {
015    public static final String NO_EXECUTABLE_API_CLIENT = "No executable api client";
016    private final ResponseSerializer serializer;
017
018    private SerializerOnlyApiHttpClient(ResponseSerializer serializer) {
019        this.serializer = serializer;
020    }
021
022    public static SerializerOnlyApiHttpClient of() {
023        return new SerializerOnlyApiHttpClient(ResponseSerializer.of());
024    }
025
026    public static SerializerOnlyApiHttpClient of(ObjectMapper objectMapper) {
027        return new SerializerOnlyApiHttpClient(ResponseSerializer.of(objectMapper));
028    }
029
030    public static SerializerOnlyApiHttpClient of(ResponseSerializer serializer) {
031        return new SerializerOnlyApiHttpClient(serializer);
032    }
033
034    @Override
035    public <O> CompletableFuture<ApiHttpResponse<O>> execute(ApiHttpRequest request, Class<O> outputType) {
036        throw new IllegalStateException(NO_EXECUTABLE_API_CLIENT);
037    }
038
039    @Override
040    public <O> CompletableFuture<ApiHttpResponse<O>> execute(ApiHttpRequest request, TypeReference<O> outputType) {
041        throw new IllegalStateException(NO_EXECUTABLE_API_CLIENT);
042    }
043
044    @Override
045    public <O> CompletableFuture<ApiHttpResponse<O>> execute(ApiHttpRequest request, JavaType outputType) {
046        throw new IllegalStateException(NO_EXECUTABLE_API_CLIENT);
047    }
048
049    @Override
050    public <O> CompletableFuture<ApiHttpResponse<O>> execute(ClientRequestCommand<O> method) {
051        throw new IllegalStateException(NO_EXECUTABLE_API_CLIENT);
052    }
053
054    @Override
055    public ResponseSerializer getSerializerService() {
056        return serializer;
057    }
058
059    @Override
060    public CompletableFuture<ApiHttpResponse<byte[]>> execute(ApiHttpRequest request) {
061        throw new IllegalStateException(NO_EXECUTABLE_API_CLIENT);
062    }
063
064    @Override
065    public URI getBaseUri() {
066        return null;
067    }
068
069    @Override
070    public void close() throws Exception {
071
072    }
073}