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}