@Override public boolean processBytes(byte[] buf, int off, int len) throws IOException { bodyConsumer.chunk(Unpooled.wrappedBuffer(buf, off, len), responder); return true; }
@Override public BodyConsumer getResult() { bodyConsumer.finished(responder); return bodyConsumer; } });
/** * Calls {@link BodyConsumer#handleError(Throwable)}. The current * bodyConsumer will be set to {@code null} after the call. */ private void bodyConsumerError(Throwable cause) { BodyConsumer consumer = bodyConsumer; bodyConsumer = null; consumer.handleError(cause); }
public void deployApplication(ApplicationId appId, AppRequest appRequest) throws Exception { HttpRequest request = new DefaultHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.POST, String.format("%s/apps/%s/versions/%s/create", getNamespacePath(appId.getNamespace()), appId.getApplication(), appId.getVersion())); request.headers().set(Constants.Gateway.API_KEY, "api-key-example"); HttpUtil.setTransferEncodingChunked(request, true); MockResponder mockResponder = new MockResponder(); BodyConsumer bodyConsumer = appLifecycleHttpHandler.createAppVersion(request, mockResponder, appId.getNamespace(), appId.getApplication(), appId.getVersion()); Preconditions.checkNotNull(bodyConsumer, "BodyConsumer from deploy call should not be null"); bodyConsumer.chunk(Unpooled.copiedBuffer(GSON.toJson(appRequest), StandardCharsets.UTF_8), mockResponder); bodyConsumer.finished(mockResponder); verifyResponse(HttpResponseStatus.OK, mockResponder.getStatus(), "Failed to deploy app"); }
while (chunk.length > 0) { mockResponder = new MockResponder(); bodyConsumer.chunk(Unpooled.wrappedBuffer(chunk), mockResponder); Preconditions.checkState(mockResponder.getStatus() == null, "failed to deploy app"); chunk = is.read(); bodyConsumer.finished(mockResponder); verifyResponse(HttpResponseStatus.OK, mockResponder.getStatus(), "Failed to deploy app");
/** * Calls the {@link BodyConsumer#chunk(ByteBuf, HttpResponder)} method. If the chunk method call * throws exception, the {@link BodyConsumer#handleError(Throwable)} will be called and this method will * throw {@link HandlerException}. */ private void bodyConsumerChunk(ByteBuf buffer) throws HandlerException { try { bodyConsumer.chunk(buffer, responder); } catch (Throwable t) { try { bodyConsumerError(t); } catch (Throwable t2) { exceptionHandler.handle(t2, request, responder); // log original throwable since we'll lose it otherwise LOG.debug("Handled exception thrown from handleError. original exception from chunk call was:", t); return; } exceptionHandler.handle(t, request, responder); } }
/** * Calls {@link BodyConsumer#finished(HttpResponder)} method. The current bodyConsumer will be set to {@code null} * after the call. */ private void bodyConsumerFinish() { BodyConsumer consumer = bodyConsumer; bodyConsumer = null; try { consumer.finished(responder); } catch (Throwable t) { exceptionHandler.handle(t, request, responder); } }