Search in sources :

Example 1 with JacksonSerializerFactory

use of io.servicetalk.data.jackson.JacksonSerializerFactory in project servicetalk by apple.

the class JacksonSerializerMessageBodyReaderWriter method readFrom.

@Override
public Object readFrom(final Class<Object> type, final Type genericType, final Annotation[] annotations, final MediaType mediaType, final MultivaluedMap<String, String> httpHeaders, final InputStream entityStream) throws WebApplicationException {
    final boolean oldJacksonProviderPresent = providers.getContextResolver(JacksonSerializationProvider.class, mediaType) != null;
    // FIXME 0.43 - Remove this branch when deprecation go away.
    if (oldJacksonProviderPresent) {
        return readFromOld(type, genericType, annotations, mediaType, httpHeaders, entityStream);
    } else {
        final JacksonSerializerFactory serializerFactory = getJacksonSerializerFactory(mediaType);
        final ExecutionContext<?> executionContext = ctxRefProvider.get().get().executionContext();
        final BufferAllocator allocator = executionContext.bufferAllocator();
        final int contentLength = requestCtxProvider.get().getLength();
        if (Single.class.isAssignableFrom(type)) {
            return handleEntityStream(entityStream, allocator, (p, a) -> deserialize(p, serializerFactory.serializerDeserializer(getSourceClass(genericType)), contentLength, a), (is, a) -> new SingleSource<>(deserialize(toBufferPublisher(is, a), serializerFactory.serializerDeserializer(getSourceClass(genericType)), contentLength, a)));
        } else if (Publisher.class.isAssignableFrom(type)) {
            return handleEntityStream(entityStream, allocator, (p, a) -> serializerFactory.streamingSerializerDeserializer(getSourceClass(genericType)).deserialize(p, a), (is, a) -> new PublisherSource<>(serializerFactory.streamingSerializerDeserializer(getSourceClass(genericType)).deserialize(toBufferPublisher(is, a), a)));
        }
        return handleEntityStream(entityStream, allocator, (p, a) -> deserializeObject(p, serializerFactory.serializerDeserializer(type), contentLength, a), (is, a) -> deserializeObject(toBufferPublisher(is, a), serializerFactory.serializerDeserializer(type), contentLength, a));
    }
}
Also used : ENTITY_CODER(javax.ws.rs.Priorities.ENTITY_CODER) SingleSource(io.servicetalk.http.router.jersey.internal.SourceWrappers.SingleSource) Provider(javax.inject.Provider) Produces(javax.ws.rs.Produces) Publisher(io.servicetalk.concurrent.api.Publisher) Deserializer(io.servicetalk.serializer.api.Deserializer) SerializationException(io.servicetalk.serializer.api.SerializationException) MessageBodyWriter(javax.ws.rs.ext.MessageBodyWriter) RequestProperties.setResponseBufferPublisher(io.servicetalk.http.router.jersey.internal.RequestProperties.setResponseBufferPublisher) WILDCARD(javax.ws.rs.core.MediaType.WILDCARD) ContainerRequestContext(javax.ws.rs.container.ContainerRequestContext) ResourceMethod(org.glassfish.jersey.server.model.ResourceMethod) ContextResolver(javax.ws.rs.ext.ContextResolver) MediaType(javax.ws.rs.core.MediaType) Ref(org.glassfish.jersey.internal.util.collection.Ref) Consumes(javax.ws.rs.Consumes) BadRequestException(javax.ws.rs.BadRequestException) NoSuchElementException(java.util.NoSuchElementException) ExtendedUriInfo(org.glassfish.jersey.server.ExtendedUriInfo) BufferPublisherInputStream.handleEntityStream(io.servicetalk.http.router.jersey.internal.BufferPublisherInputStream.handleEntityStream) ConnectionContext(io.servicetalk.transport.api.ConnectionContext) OutputStream(java.io.OutputStream) Serializer(io.servicetalk.serializer.api.Serializer) StreamingSerializer(io.servicetalk.serializer.api.StreamingSerializer) Context(javax.ws.rs.core.Context) Providers(javax.ws.rs.ext.Providers) Single(io.servicetalk.concurrent.api.Single) DefaultSerializer(io.servicetalk.serialization.api.DefaultSerializer) FutureUtils.awaitResult(io.servicetalk.concurrent.internal.FutureUtils.awaitResult) JacksonSerializerFactory(io.servicetalk.data.jackson.JacksonSerializerFactory) MultivaluedMap(javax.ws.rs.core.MultivaluedMap) Priority(javax.annotation.Priority) Buffer(io.servicetalk.buffer.api.Buffer) JacksonSerializationProvider(io.servicetalk.data.jackson.JacksonSerializationProvider) HttpHeaders(javax.ws.rs.core.HttpHeaders) ParameterizedType(java.lang.reflect.ParameterizedType) ExecutionContext(io.servicetalk.transport.api.ExecutionContext) Type(java.lang.reflect.Type) BufferAllocator(io.servicetalk.buffer.api.BufferAllocator) Annotation(java.lang.annotation.Annotation) WebApplicationException(javax.ws.rs.WebApplicationException) APPLICATION_JSON_TYPE(javax.ws.rs.core.MediaType.APPLICATION_JSON_TYPE) Publisher.fromInputStream(io.servicetalk.concurrent.api.Publisher.fromInputStream) PublisherSource(io.servicetalk.http.router.jersey.internal.SourceWrappers.PublisherSource) InputStream(java.io.InputStream) MessageBodyReader(javax.ws.rs.ext.MessageBodyReader) JacksonSerializerFactory(io.servicetalk.data.jackson.JacksonSerializerFactory) PublisherSource(io.servicetalk.http.router.jersey.internal.SourceWrappers.PublisherSource) JacksonSerializationProvider(io.servicetalk.data.jackson.JacksonSerializationProvider) Publisher(io.servicetalk.concurrent.api.Publisher) RequestProperties.setResponseBufferPublisher(io.servicetalk.http.router.jersey.internal.RequestProperties.setResponseBufferPublisher) BufferAllocator(io.servicetalk.buffer.api.BufferAllocator)

Aggregations

Buffer (io.servicetalk.buffer.api.Buffer)1 BufferAllocator (io.servicetalk.buffer.api.BufferAllocator)1 Publisher (io.servicetalk.concurrent.api.Publisher)1 Publisher.fromInputStream (io.servicetalk.concurrent.api.Publisher.fromInputStream)1 Single (io.servicetalk.concurrent.api.Single)1 FutureUtils.awaitResult (io.servicetalk.concurrent.internal.FutureUtils.awaitResult)1 JacksonSerializationProvider (io.servicetalk.data.jackson.JacksonSerializationProvider)1 JacksonSerializerFactory (io.servicetalk.data.jackson.JacksonSerializerFactory)1 BufferPublisherInputStream.handleEntityStream (io.servicetalk.http.router.jersey.internal.BufferPublisherInputStream.handleEntityStream)1 RequestProperties.setResponseBufferPublisher (io.servicetalk.http.router.jersey.internal.RequestProperties.setResponseBufferPublisher)1 PublisherSource (io.servicetalk.http.router.jersey.internal.SourceWrappers.PublisherSource)1 SingleSource (io.servicetalk.http.router.jersey.internal.SourceWrappers.SingleSource)1 DefaultSerializer (io.servicetalk.serialization.api.DefaultSerializer)1 Deserializer (io.servicetalk.serializer.api.Deserializer)1 SerializationException (io.servicetalk.serializer.api.SerializationException)1 Serializer (io.servicetalk.serializer.api.Serializer)1 StreamingSerializer (io.servicetalk.serializer.api.StreamingSerializer)1 ConnectionContext (io.servicetalk.transport.api.ConnectionContext)1 ExecutionContext (io.servicetalk.transport.api.ExecutionContext)1 InputStream (java.io.InputStream)1