use of org.n52.iceland.event.events.CountingOutputStreamEvent in project arctic-sea by 52North.
the class AbstractStatisticsServiceEventListener method addEventToResolver.
private void addEventToResolver(BatchResolver resolver, Event event) {
StatisticsServiceEventResolver<?> evtResolver = null;
if (event instanceof ExceptionEvent) {
ExceptionEventResolver sosExceptionEventResolver = resolverFactory.getExceptionEventResolver();
sosExceptionEventResolver.setEvent((ExceptionEvent) event);
evtResolver = sosExceptionEventResolver;
} else if (event instanceof OutgoingResponseEvent) {
OutgoingResponseEventResolver outgoingResponseEventResolver = resolverFactory.getOutgoingResponseEventResolver();
outgoingResponseEventResolver.setEvent((OutgoingResponseEvent) event);
evtResolver = outgoingResponseEventResolver;
} else if (event instanceof CountingOutputStreamEvent) {
CountingOutputStreamEventResolver countingOutputstreamEventResolver = resolverFactory.getCountingOutputstreamEventResolver();
countingOutputstreamEventResolver.setEvent((CountingOutputStreamEvent) event);
evtResolver = countingOutputstreamEventResolver;
} else {
evtResolver = findResolver(event);
}
// Default fallback event resolver
if (evtResolver == null) {
DefaultServiceEventResolver defaultServiceEventResolver = resolverFactory.getDefaultServiceEventResolver();
defaultServiceEventResolver.setEvent(event);
evtResolver = defaultServiceEventResolver;
}
resolver.addEventResolver(evtResolver);
}
use of org.n52.iceland.event.events.CountingOutputStreamEvent in project arctic-sea by 52North.
the class HttpUtils method writeObject.
private void writeObject(HttpServletRequest request, HttpServletResponse response, MediaType contentType, Writable writable, EncodingExceptionHandler owserHandler) throws IOException, HTTPException {
OutputStream out = null;
response.setContentType(writable.getEncodedContentType().toString());
try {
out = response.getOutputStream();
if (HTTPHeaders.supportsGzipEncoding(request) && writable.supportsGZip()) {
out = new GZIPOutputStream(out);
response.setHeader(HTTPHeaders.CONTENT_ENCODING, HTTPConstants.GZIP_ENCODING);
}
if (isCountingOutputStream) {
out = new CountingOutputStream(out);
}
if (writable.hasForcedHttpStatus()) {
response.setStatus(writable.getForcedHttpStatus().getCode());
}
writable.write(out, new ResponseProxy(response));
out.flush();
} catch (EncodingException e) {
Object writeOwsExceptionReport = owserHandler.handleEncodingException(request, response, e);
if (writeOwsExceptionReport != null) {
Writable owserWritable = getWritable(writeOwsExceptionReport, contentType);
try {
owserWritable.write(out, new ResponseProxy(response));
if (out != null) {
out.flush();
}
} catch (EncodingException ex) {
throw new HTTPException(HTTPStatus.INTERNAL_SERVER_ERROR, ex);
}
}
} finally {
if (out instanceof CountingOutputStream) {
Long bytesWritten = ((CountingOutputStream) out).getCount();
eventBus.submit(new CountingOutputStreamEvent(bytesWritten));
}
if (out != null) {
LOGGER.debug("Response status = " + response.getStatus());
out.close();
}
}
}
use of org.n52.iceland.event.events.CountingOutputStreamEvent in project arctic-sea by 52North.
the class EventHandlerFinderTest method findDirectDefaultServiceEvent.
@Test
public void findDirectDefaultServiceEvent() {
Map<String, StatisticsServiceEventHandler<?>> handlers = new HashMap<>();
CountingOutputStreamEventHandler handler = new CountingOutputStreamEventHandler();
CountingOutputStreamEvent request = new CountingOutputStreamEvent();
handlers.put(request.getClass().getSimpleName(), handler);
Assert.assertNotNull(EventHandlerFinder.findHandler(request, handlers));
}
Aggregations