diff --git a/src/main/java/ch/psi/daq/queryrest/config/QueryRestConfig.java b/src/main/java/ch/psi/daq/queryrest/config/QueryRestConfig.java index 11ca027..ef3c2eb 100644 --- a/src/main/java/ch/psi/daq/queryrest/config/QueryRestConfig.java +++ b/src/main/java/ch/psi/daq/queryrest/config/QueryRestConfig.java @@ -43,8 +43,6 @@ import ch.psi.daq.queryrest.model.PropertyFilterMixin; import ch.psi.daq.queryrest.query.QueryManager; import ch.psi.daq.queryrest.query.QueryManagerImpl; import ch.psi.daq.queryrest.response.PolymorphicResponseMixIn; -import ch.psi.daq.queryrest.response.bson.BSONResponseStreamWriter; -import ch.psi.daq.queryrest.response.bson.BSONTableResponseStreamWriter; import ch.psi.daq.queryrest.response.csv.CSVResponseStreamWriter; import ch.psi.daq.queryrest.response.json.JSONResponseStreamWriter; import ch.psi.daq.queryrest.response.json.JSONTableResponseStreamWriter; @@ -158,16 +156,6 @@ public class QueryRestConfig extends WebMvcConfigurerAdapter { return new JSONTableResponseStreamWriter(); } - @Bean - public BSONResponseStreamWriter bsonResponseStreamWriter() { - return new BSONResponseStreamWriter(); - } - - @Bean - public BSONTableResponseStreamWriter bsonTableResponseStreamWriter() { - return new BSONTableResponseStreamWriter(); - } - @Bean public MsgPackResponseStreamWriter msgPackResponseStreamWriter() { return new MsgPackResponseStreamWriter(); diff --git a/src/main/java/ch/psi/daq/queryrest/response/PolymorphicResponseMixIn.java b/src/main/java/ch/psi/daq/queryrest/response/PolymorphicResponseMixIn.java index 441f6e4..55a4bbf 100644 --- a/src/main/java/ch/psi/daq/queryrest/response/PolymorphicResponseMixIn.java +++ b/src/main/java/ch/psi/daq/queryrest/response/PolymorphicResponseMixIn.java @@ -4,7 +4,6 @@ import com.fasterxml.jackson.annotation.JsonSubTypes; import com.fasterxml.jackson.annotation.JsonSubTypes.Type; import com.fasterxml.jackson.annotation.JsonTypeInfo; -import ch.psi.daq.queryrest.response.bson.BSONHTTPResponse; import ch.psi.daq.queryrest.response.csv.CSVHTTPResponse; import ch.psi.daq.queryrest.response.json.JSONHTTPResponse; import ch.psi.daq.queryrest.response.msgpack.MsgPackHTTPResponse; @@ -15,7 +14,6 @@ import ch.psi.daq.queryrest.response.msgpack.MsgPackHTTPResponse; property = "format") @JsonSubTypes({ @Type(value = JSONHTTPResponse.class, name = JSONHTTPResponse.FORMAT), - @Type(value = BSONHTTPResponse.class, name = BSONHTTPResponse.FORMAT), @Type(value = MsgPackHTTPResponse.class, name = MsgPackHTTPResponse.FORMAT), @Type(value = CSVHTTPResponse.class, name = CSVHTTPResponse.FORMAT) }) diff --git a/src/main/java/ch/psi/daq/queryrest/response/bson/BSONHTTPResponse.java b/src/main/java/ch/psi/daq/queryrest/response/bson/BSONHTTPResponse.java deleted file mode 100644 index 99f06eb..0000000 --- a/src/main/java/ch/psi/daq/queryrest/response/bson/BSONHTTPResponse.java +++ /dev/null @@ -1,69 +0,0 @@ -package ch.psi.daq.queryrest.response.bson; - -import java.io.OutputStream; -import java.util.List; -import java.util.Map.Entry; -import java.util.stream.Stream; - -import javax.servlet.http.HttpServletResponse; - -import org.apache.commons.lang3.tuple.Triple; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.context.ApplicationContext; -import org.springframework.http.MediaType; - -import ch.psi.daq.domain.json.ChannelName; -import ch.psi.daq.domain.query.DAQQueries; -import ch.psi.daq.domain.query.DAQQueryElement; -import ch.psi.daq.domain.query.backend.BackendQuery; -import ch.psi.daq.domain.query.operation.Compression; -import ch.psi.daq.domain.query.response.ResponseFormat; -import ch.psi.daq.queryrest.query.QueryManager; -import ch.psi.daq.queryrest.response.AbstractHTTPResponse; -import ch.psi.daq.queryrest.response.ResponseStreamWriter; -import ch.psi.daq.queryrest.response.json.JSONHTTPResponse; - -public class BSONHTTPResponse extends AbstractHTTPResponse { - private static final Logger LOGGER = LoggerFactory.getLogger(BSONHTTPResponse.class); - - public static final String FORMAT = "bson"; - public static final String CONTENT_TYPE = MediaType.APPLICATION_OCTET_STREAM_VALUE; - - public BSONHTTPResponse() { - super(ResponseFormat.BSON); - } - - public BSONHTTPResponse(Compression compression) { - this(); - setCompression(compression); - } - - @Override - public void respond(ApplicationContext context, DAQQueries queries, HttpServletResponse response) throws Exception { - OutputStream out = handleCompressionAndResponseHeaders(response, CONTENT_TYPE); - - boolean hasMapping = JSONHTTPResponse.validateQueries(queries); - - try { - LOGGER.debug("Executing query '{}'", queries); - - QueryManager queryManager = context.getBean(QueryManager.class); - ResponseStreamWriter streamWriter; - if (hasMapping) { - streamWriter = context.getBean(BSONTableResponseStreamWriter.class); - } else { - streamWriter = context.getBean(BSONResponseStreamWriter.class); - } - - // execute query - List>>> result = - queryManager.getEvents(queries); - // write the response back to the client using java 8 streams - streamWriter.respond(result, out, this); - } catch (Exception e) { - LOGGER.error("Failed to execute query '{}'.", queries, e); - throw e; - } - } -} diff --git a/src/main/java/ch/psi/daq/queryrest/response/bson/BSONResponseStreamWriter.java b/src/main/java/ch/psi/daq/queryrest/response/bson/BSONResponseStreamWriter.java deleted file mode 100644 index 69ad3e1..0000000 --- a/src/main/java/ch/psi/daq/queryrest/response/bson/BSONResponseStreamWriter.java +++ /dev/null @@ -1,41 +0,0 @@ -package ch.psi.daq.queryrest.response.bson; - -import java.io.OutputStream; -import java.util.List; -import java.util.Map.Entry; -import java.util.stream.Stream; - -import javax.annotation.Resource; -import javax.servlet.ServletResponse; - -import org.apache.commons.lang3.tuple.Triple; - -import com.fasterxml.jackson.databind.ObjectMapper; - -import ch.psi.daq.domain.json.ChannelName; -import ch.psi.daq.domain.query.DAQQueryElement; -import ch.psi.daq.domain.query.backend.BackendQuery; -import ch.psi.daq.domain.query.response.Response; -import ch.psi.daq.queryrest.response.ResponseStreamWriter; -import ch.psi.daq.queryrest.response.json.JSONResponseStreamWriter; - -import de.undercouch.bson4jackson.BsonFactory; - -/** - * Takes a Java 8 stream and writes it to the output stream provided by the {@link ServletResponse} - * of the current request. - */ -public class BSONResponseStreamWriter implements ResponseStreamWriter { - - @Resource - private BsonFactory bsonFactory; - - @Resource - private ObjectMapper mapper; - - @Override - public void respond(final List>>> results, - final OutputStream out, final Response response) throws Exception { - JSONResponseStreamWriter.respond(bsonFactory, mapper, results, out, response); - } -} diff --git a/src/main/java/ch/psi/daq/queryrest/response/bson/BSONTableResponseStreamWriter.java b/src/main/java/ch/psi/daq/queryrest/response/bson/BSONTableResponseStreamWriter.java deleted file mode 100644 index c8912ec..0000000 --- a/src/main/java/ch/psi/daq/queryrest/response/bson/BSONTableResponseStreamWriter.java +++ /dev/null @@ -1,64 +0,0 @@ -package ch.psi.daq.queryrest.response.bson; - -import java.io.OutputStream; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map.Entry; -import java.util.Set; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import javax.annotation.PostConstruct; -import javax.annotation.Resource; -import javax.servlet.ServletResponse; - -import org.apache.commons.lang3.tuple.Triple; -import org.springframework.context.ApplicationContext; - -import com.fasterxml.jackson.databind.ObjectMapper; - -import ch.psi.daq.domain.json.ChannelName; -import ch.psi.daq.domain.query.DAQQueryElement; -import ch.psi.daq.domain.query.backend.BackendQuery; -import ch.psi.daq.domain.query.operation.Aggregation; -import ch.psi.daq.domain.query.response.Response; -import ch.psi.daq.queryrest.config.QueryRestConfig; -import ch.psi.daq.queryrest.response.ResponseStreamWriter; -import ch.psi.daq.queryrest.response.json.JSONTableResponseStreamWriter; - -import de.undercouch.bson4jackson.BsonFactory; - -/** - * Takes a Java 8 stream and writes it to the output stream provided by the {@link ServletResponse} - * of the current request. - */ -public class BSONTableResponseStreamWriter implements ResponseStreamWriter { - - @Resource - private ApplicationContext context; - - @Resource - private BsonFactory bsonFactory; - - @Resource - private ObjectMapper mapper; - - @Resource(name = QueryRestConfig.BEAN_NAME_DEFAULT_RESPONSE_AGGREGATIONS) - private Set defaultResponseAggregations; - - private Set defaultResponseAggregationsStr; - - @PostConstruct - public void afterPropertiesSet() { - defaultResponseAggregationsStr = - defaultResponseAggregations.stream().map(Aggregation::name) - .collect(Collectors.toCollection(LinkedHashSet::new)); - } - - @Override - public void respond(final List>>> results, - final OutputStream out, final Response response) throws Exception { - JSONTableResponseStreamWriter.respond(context, bsonFactory, mapper, defaultResponseAggregationsStr, results, out, - response); - } -} diff --git a/src/test/java/ch/psi/daq/test/queryrest/controller/BsonQueryRestControllerTableTest.java b/src/test/java/ch/psi/daq/test/queryrest/controller/BsonQueryRestControllerTableTest.java deleted file mode 100644 index c353bab..0000000 --- a/src/test/java/ch/psi/daq/test/queryrest/controller/BsonQueryRestControllerTableTest.java +++ /dev/null @@ -1,31 +0,0 @@ -package ch.psi.daq.test.queryrest.controller; - -import org.junit.After; - -import com.fasterxml.jackson.databind.ObjectMapper; - -import ch.psi.daq.domain.query.response.Response; -import ch.psi.daq.queryrest.response.bson.BSONHTTPResponse; - -import de.undercouch.bson4jackson.BsonFactory; - -/** - * Tests the {@link DaqController} implementation. - */ -public class BsonQueryRestControllerTableTest extends AbstractQueryRestControllerTableTest { - - private ObjectMapper responseMapper = new ObjectMapper(new BsonFactory()); - - @After - public void tearDown() throws Exception {} - - @Override - protected ObjectMapper getResponseMapper(){ - return responseMapper; - } - - @Override - protected Response getResponse() { - return new BSONHTTPResponse(); - } -} diff --git a/src/test/java/ch/psi/daq/test/queryrest/controller/BsonQueryRestControllerTest.java b/src/test/java/ch/psi/daq/test/queryrest/controller/BsonQueryRestControllerTest.java deleted file mode 100644 index 56303c7..0000000 --- a/src/test/java/ch/psi/daq/test/queryrest/controller/BsonQueryRestControllerTest.java +++ /dev/null @@ -1,31 +0,0 @@ -package ch.psi.daq.test.queryrest.controller; - -import org.junit.After; - -import com.fasterxml.jackson.databind.ObjectMapper; - -import ch.psi.daq.domain.query.response.Response; -import ch.psi.daq.queryrest.response.bson.BSONHTTPResponse; - -import de.undercouch.bson4jackson.BsonFactory; - -/** - * Tests the {@link DaqController} implementation. - */ -public class BsonQueryRestControllerTest extends AbstractQueryRestControllerTest { - - private ObjectMapper responseMapper = new ObjectMapper(new BsonFactory()); - - @After - public void tearDown() throws Exception {} - - @Override - protected ObjectMapper getResponseMapper(){ - return responseMapper; - } - - @Override - protected Response getResponse() { - return new BSONHTTPResponse(); - } -}