
pl.allegro.tech.hermes.management.api.reader.QueryBodyReader Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of hermes-management Show documentation
Show all versions of hermes-management Show documentation
Fast and reliable message broker built on top of Kafka.
package pl.allegro.tech.hermes.management.api.reader;
import com.fasterxml.jackson.databind.ObjectMapper;
import jakarta.ws.rs.WebApplicationException;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.MultivaluedMap;
import jakarta.ws.rs.ext.MessageBodyReader;
import jakarta.ws.rs.ext.Provider;
import java.io.IOException;
import java.io.InputStream;
import java.lang.annotation.Annotation;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import org.springframework.beans.factory.annotation.Autowired;
import pl.allegro.tech.hermes.api.Query;
import pl.allegro.tech.hermes.management.infrastructure.query.parser.QueryParser;
import pl.allegro.tech.hermes.management.infrastructure.query.parser.json.JsonQueryParser;
@Provider
public class QueryBodyReader implements MessageBodyReader {
private final ObjectMapper objectMapper;
@Autowired
public QueryBodyReader(ObjectMapper objectMapper) {
this.objectMapper = objectMapper;
}
@Override
public boolean isReadable(
Class> type, Type genericType, Annotation[] annotations, MediaType mediaType) {
return type == Query.class;
}
@Override
public Query readFrom(
Class type,
Type genericType,
Annotation[] annotations,
MediaType mediaType,
MultivaluedMap httpHeaders,
InputStream entityStream)
throws IOException, WebApplicationException {
Class> queryType = Object.class;
if (genericType instanceof ParameterizedType) {
queryType = (Class>) ((ParameterizedType) genericType).getRawType();
}
QueryParser parser = new JsonQueryParser(objectMapper);
return parser.parse(entityStream, queryType);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy