package ru.semiot.services.tsdbservice.rest; import com.datastax.driver.core.exceptions.InvalidQueryException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import rx.Subscriber; import javax.ws.rs.container.AsyncResponse; import javax.ws.rs.core.Response; abstract class ResponseOrError<T> extends Subscriber<T> { private static final Logger logger = LoggerFactory.getLogger(ResponseOrError.class); protected final AsyncResponse response; public ResponseOrError(AsyncResponse response) { this.response = response; } @Override public void onCompleted() { } @Override public void onError(Throwable e) { logger.warn(e.getMessage(), e); if (e instanceof InvalidQueryException) { response.resume(Response.status(Response.Status.BAD_REQUEST).build()); } response.resume(e); } }