From 6d44da8c96a7ddbdb4eb71ead9469ed6c4b2d213 Mon Sep 17 00:00:00 2001 From: Zellweger Christof Ralf Date: Tue, 23 Jun 2015 15:50:03 +0200 Subject: [PATCH] ATEST-81: - added dummy write method for REST interface --- .../ch/psi/daq/rest/DaqRestConfiguration.java | 12 ++++++-- .../ch/psi/daq/rest/DaqRestController.java | 28 +++++++++++++++++-- .../ch/psi/daq/rest/ResponseStreamWriter.java | 5 +--- ...erTest.java => DaqRestControllerTest.java} | 2 +- src/test/resources/test-requests.txt | 4 +++ 5 files changed, 42 insertions(+), 9 deletions(-) rename src/test/java/ch/psi/daq/test/rest/controller/{DaqControllerTest.java => DaqRestControllerTest.java} (98%) diff --git a/src/main/java/ch/psi/daq/rest/DaqRestConfiguration.java b/src/main/java/ch/psi/daq/rest/DaqRestConfiguration.java index 799c52d..027cc69 100644 --- a/src/main/java/ch/psi/daq/rest/DaqRestConfiguration.java +++ b/src/main/java/ch/psi/daq/rest/DaqRestConfiguration.java @@ -3,11 +3,13 @@ package ch.psi.daq.rest; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import ch.psi.daq.cassandra.writer.CassandraWriter; +import ch.psi.daq.cassandra.writer.CassandraWriterImpl; import ch.psi.daq.common.statistic.StorelessStatistics; import ch.psi.daq.domain.cassandra.ChannelEvent; import ch.psi.daq.hazelcast.query.processor.QueryProcessor; +import ch.psi.daq.hazelcast.query.processor.cassandra.CassandraQueryProcessorLocal; import ch.psi.daq.rest.model.PropertyFilterMixin; -import ch.psi.daq.test.rest.query.DummyQueryProcessor; import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.core.JsonFactory; @@ -18,9 +20,15 @@ public class DaqRestConfiguration { @Bean public QueryProcessor queryProcessor() { - return new DummyQueryProcessor(); +// return new DummyQueryProcessor(); + return new CassandraQueryProcessorLocal(); } + @Bean + public CassandraWriter cassandraWriter() { + return new CassandraWriterImpl(); + } + @Bean public JsonFactory jsonFactory() { return new JsonFactory(); diff --git a/src/main/java/ch/psi/daq/rest/DaqRestController.java b/src/main/java/ch/psi/daq/rest/DaqRestController.java index b5e18c0..5d14b55 100644 --- a/src/main/java/ch/psi/daq/rest/DaqRestController.java +++ b/src/main/java/ch/psi/daq/rest/DaqRestController.java @@ -2,6 +2,8 @@ package ch.psi.daq.rest; import java.io.IOException; import java.util.Map; +import java.util.UUID; +import java.util.concurrent.CompletableFuture; import java.util.stream.Stream; import javax.servlet.http.HttpServletResponse; @@ -13,6 +15,8 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import ch.psi.daq.cassandra.writer.CassandraWriter; +import ch.psi.daq.domain.cassandra.ChannelEvent; import ch.psi.daq.domain.cassandra.DataEvent; import ch.psi.daq.hazelcast.query.processor.QueryProcessor; import ch.psi.daq.rest.queries.AbstractQuery; @@ -23,11 +27,13 @@ import ch.psi.daq.rest.queries.TimeRangeQuery; public class DaqRestController { private static final Logger logger = LoggerFactory.getLogger(DaqRestController.class); - + + @Autowired + private CassandraWriter cassandraWriter; + @Autowired private ResponseStreamWriter responseStreamWriter; - // TODO: just a dummy test implementation - remove when the real processor is ready @Autowired private QueryProcessor queryProcessor; @@ -67,6 +73,7 @@ public class DaqRestController { * @throws IOException */ private void executeQuery(AbstractQuery query, HttpServletResponse res) throws IOException { + // all the magic happens here Map> process = queryProcessor.process(query); @@ -77,4 +84,21 @@ public class DaqRestController { // write the response back to the client using java 8 streams responseStreamWriter.respond(flatStreams, query, res); } + + + @RequestMapping(value = "/write") + public void writeDummyEntry() { + int pulseId = 100; + ChannelEvent event = new ChannelEvent( + "dummy-test", + pulseId, + 0, + pulseId, + pulseId, + 0, + "data_" + UUID.randomUUID().toString()); + + CompletableFuture future = cassandraWriter.writeAsync(3, 0, event); + future.join(); + } } diff --git a/src/main/java/ch/psi/daq/rest/ResponseStreamWriter.java b/src/main/java/ch/psi/daq/rest/ResponseStreamWriter.java index e9847c1..2d0efd5 100644 --- a/src/main/java/ch/psi/daq/rest/ResponseStreamWriter.java +++ b/src/main/java/ch/psi/daq/rest/ResponseStreamWriter.java @@ -57,12 +57,9 @@ public class ResponseStreamWriter { .stream() .map(a -> { return a.getType().toString(); - }) - .collect(Collectors.toSet())); + }).collect(Collectors.toSet())); } - ObjectWriter writer = configureWriter(includedFields); - respondInternal(stream, response, writer); } diff --git a/src/test/java/ch/psi/daq/test/rest/controller/DaqControllerTest.java b/src/test/java/ch/psi/daq/test/rest/controller/DaqRestControllerTest.java similarity index 98% rename from src/test/java/ch/psi/daq/test/rest/controller/DaqControllerTest.java rename to src/test/java/ch/psi/daq/test/rest/controller/DaqRestControllerTest.java index 7f03c31..9708af6 100644 --- a/src/test/java/ch/psi/daq/test/rest/controller/DaqControllerTest.java +++ b/src/test/java/ch/psi/daq/test/rest/controller/DaqRestControllerTest.java @@ -26,7 +26,7 @@ import com.google.common.collect.Sets; /** * Tests the {@link DaqController} implementation. */ -public class DaqControllerTest extends AbstractDaqRestTest { +public class DaqRestControllerTest extends AbstractDaqRestTest { private static final List DEFAULT_PROPERTIES = Lists.newArrayList("channel", "pulseId"); diff --git a/src/test/resources/test-requests.txt b/src/test/resources/test-requests.txt index 27980d2..0262784 100644 --- a/src/test/resources/test-requests.txt +++ b/src/test/resources/test-requests.txt @@ -60,3 +60,7 @@ curl -v -X POST -H 'Content-Type: application/json' -d '{"queryType":"timerange" curl -v -X POST -H 'Content-Type: application/json' -d '{"queryType":"timerange","ordering":"ASC","channels":["test"],"fields":["channel","pulseId"],"aggregateChannels":false,"aggregationType":"index","queryRange":{"startMillis":1435049709091,"startNanos":0,"endMillis":1435049710091,"endNanos":0,"startPulseId":9223372036854775807,"endPulseId":9223372036854775807},"binningStrategyEnum":"bincount"}' http://localhost:8080/timerange + + + +curl -v -X POST -H 'Content-Type: application/json' -d '{"queryType":"pulserange","ordering":"ASC","channels":["dummy-test"],"fields":["channel","pulseId","globalMillis","globalNanos","dbValueBytes"],"binningStrategy":"bincount","binDuration":100,"aggregateChannels":"false","aggregationType":"index","aggregations":[{"fieldRef":"e_val","type":"max","resultFieldName":"maximum"},{"fieldRef":"e_val","type":"min","resultFieldName":"minimum"}], "queryRange":{"startPulseId":100,"endPulseId":100}}' http://localhost:8080/pulserange \ No newline at end of file