001
002package io.vrap.rmf.base.client;
003
004import com.fasterxml.jackson.core.JsonProcessingException;
005import com.fasterxml.jackson.core.type.TypeReference;
006import com.fasterxml.jackson.databind.JavaType;
007import com.fasterxml.jackson.databind.ObjectMapper;
008
009import io.vrap.rmf.base.client.utils.json.JsonUtils;
010
011/**
012 * Interface to deserialize a response to a specified output type
013 */
014public interface ResponseSerializer {
015    <O> ApiHttpResponse<O> convertResponse(final ApiHttpResponse<byte[]> response, final Class<O> outputType);
016
017    <O> ApiHttpResponse<O> convertResponse(final ApiHttpResponse<byte[]> response, final JavaType outputType);
018
019    <O> ApiHttpResponse<O> convertResponse(final ApiHttpResponse<byte[]> response, final TypeReference<O> outputType);
020
021    byte[] toJsonByteArray(final Object value) throws JsonProcessingException;
022
023    static ResponseSerializer of() {
024        return new ResponseSerializerImpl(JsonUtils.getConfiguredObjectMapper());
025    }
026
027    static ResponseSerializer of(final ObjectMapper mapper) {
028        return new ResponseSerializerImpl(mapper);
029    }
030}