001
002package io.vrap.rmf.base.client;
003
004import java.net.URI;
005import java.util.concurrent.CompletableFuture;
006
007import com.fasterxml.jackson.databind.ObjectMapper;
008
009/**
010 * Implementation of a non executable {@link ApiHttpClient}
011 */
012public class SerializerOnlyApiHttpClient implements ApiHttpClient {
013    public static final String NO_EXECUTABLE_API_CLIENT = "No executable api client";
014    private final ResponseSerializer serializer;
015
016    private SerializerOnlyApiHttpClient(ResponseSerializer serializer) {
017        this.serializer = serializer;
018    }
019
020    public static SerializerOnlyApiHttpClient of() {
021        return new SerializerOnlyApiHttpClient(ResponseSerializer.of());
022    }
023
024    public static SerializerOnlyApiHttpClient of(ObjectMapper objectMapper) {
025        return new SerializerOnlyApiHttpClient(ResponseSerializer.of(objectMapper));
026    }
027
028    public static SerializerOnlyApiHttpClient of(ResponseSerializer serializer) {
029        return new SerializerOnlyApiHttpClient(serializer);
030    }
031
032    @Override
033    public ResponseSerializer getSerializerService() {
034        return serializer;
035    }
036
037    @Override
038    public CompletableFuture<ApiHttpResponse<byte[]>> execute(ApiHttpRequest request) {
039        throw new IllegalStateException(NO_EXECUTABLE_API_CLIENT);
040    }
041
042    @Override
043    public URI getBaseUri() {
044        return null;
045    }
046
047    @Override
048    public void close() throws Exception {
049
050    }
051}