private FormEntity currentForm(List<FormEntity> forms, KnotContext knotContext) { return forms.stream() .filter(form -> form.current(knotContext, options.getFormIdentifierName())).findFirst() .orElseThrow(() -> { LOGGER .error("No form attribute [{}] matched with forms identifiers [{}]", knotContext.getClientRequest().getFormAttributes(), forms.stream().map(FormEntity::identifier).toArray()); return new IllegalStateException("Could not match form identifiers!"); }); }
private static Optional<String> getFormIdentifierFromRequest(KnotContext knotContext, String formIdAttrName) { return Optional.ofNullable( knotContext.getClientRequest().getFormAttributes().get(formIdAttrName)); }
private KnotContext createSuccessResponse(KnotContext inputContext, String renderedContent) { ClientResponse clientResponse = inputContext.getClientResponse(); if (StringUtils.isBlank(renderedContent)) { clientResponse.setStatusCode(HttpResponseStatus.NO_CONTENT.code()); } else { MultiMap headers = clientResponse.getHeaders(); headers.add(HttpHeaders.CONTENT_LENGTH.toString().toLowerCase(), Integer.toString(renderedContent.length())); clientResponse.setBody(Buffer.buffer(renderedContent)).setHeaders(headers); clientResponse.setStatusCode(HttpResponseStatus.OK.code()); } return new KnotContext() .setClientRequest(inputContext.getClientRequest()) .setClientResponse(clientResponse); } }
private FragmentContext handleError(FragmentContext fragmentContext, KnotContext request, Throwable t) { LOGGER.error("Fragment processing failed. Cause:{}\nRequest:\n{}\nFragmentContext:\n{}\n", t.getMessage(), request.getClientRequest(), fragmentContext); fragmentContext.fragment().failure(DataBridgeKnotProxy.SUPPORTED_FRAGMENT_ID, t); if (fragmentContext.fragment().fallback().isPresent()) { return fragmentContext; } else { throw new FragmentProcessingException(String.format("Fragment processing failed in %s", DataBridgeKnotProxy.SUPPORTED_FRAGMENT_ID), t); } }
private FragmentContext handleError(FragmentContext fragmentContext, KnotContext request, Throwable t) { LOGGER.error("Fragment processing failed. Cause:{}\nRequest:\n{}\nFragmentContext:\n{}\n", t.getMessage(), request.getClientRequest(), fragmentContext); fragmentContext.fragment().failure(ServiceKnotProxyImpl.SUPPORTED_FRAGMENT_ID, t); if (fragmentContext.fragment().fallback().isPresent()) { return fragmentContext; } else { throw new FragmentProcessingException(String.format("Fragment processing failed in %s", ServiceKnotProxyImpl.SUPPORTED_FRAGMENT_ID), t); } }
private KnotContext createSuccessResponse(KnotContext inputContext) { return new KnotContext() .setClientRequest(inputContext.getClientRequest()) .setClientResponse(inputContext.getClientResponse()) .setFragments( Optional.ofNullable(inputContext.getFragments()).orElse(Collections.emptyList())) .setTransition(DEFAULT_TRANSITION); }
private KnotContext createSuccessResponse(KnotContext inputContext) { return new KnotContext() .setClientRequest(inputContext.getClientRequest()) .setClientResponse(inputContext.getClientResponse()) .setFragments( Optional.ofNullable(inputContext.getFragments()).orElse(Collections.emptyList())) .setTransition(DEFAULT_TRANSITION); }
@Override protected KnotContext processError(KnotContext knotContext, Throwable error) { ClientResponse errorResponse = new ClientResponse() .setStatusCode(HttpResponseStatus.INTERNAL_SERVER_ERROR.code()); return new KnotContext() .setClientRequest(knotContext.getClientRequest()) .setClientResponse(errorResponse); }
@Override protected KnotContext processError(KnotContext knotContext, Throwable error) { ClientResponse errorResponse = new ClientResponse() .setStatusCode(HttpResponseStatus.INTERNAL_SERVER_ERROR.code()); return new KnotContext() .setClientRequest(knotContext.getClientRequest()) .setClientResponse(errorResponse); }
@Override protected KnotContext processError(KnotContext knotContext, Throwable error) { ClientResponse errorResponse = new ClientResponse() .setStatusCode(HttpResponseStatus.INTERNAL_SERVER_ERROR.code()); return new KnotContext() .setClientRequest(knotContext.getClientRequest()) .setClientResponse(errorResponse); }
private KnotContext createSuccessResponse(KnotContext inputContext) { ClientResponse clientResponse = new ClientResponse(); String responseBody = getResponseBodyAsString(inputContext); clientResponse.setBody(Buffer.buffer(responseBody)) .setHeaders(getHeaders(clientResponse, responseBody.length())); clientResponse.setStatusCode(HttpResponseStatus.OK.code()); return new KnotContext() .setClientRequest(inputContext.getClientRequest()) .setClientResponse(clientResponse); }
private KnotContext createSuccessResponse(KnotContext inputContext) { ClientResponse clientResponse = new ClientResponse(); String responseBody = getResponseBodyAsString(inputContext); clientResponse.setBody(Buffer.buffer(responseBody)) .setHeaders(getHeaders(clientResponse, responseBody.length())); clientResponse.setStatusCode(HttpResponseStatus.OK.code()); return new KnotContext() .setClientRequest(inputContext.getClientRequest()) .setClientResponse(clientResponse); }
@Override protected KnotContext processError(KnotContext knotContext, Throwable error) { LOGGER.error("Error happened during Template processing", error); ClientResponse errorResponse = new ClientResponse() .setStatusCode(HttpResponseStatus.INTERNAL_SERVER_ERROR.code()); return new KnotContext() .setClientRequest(knotContext.getClientRequest()) .setClientResponse(errorResponse); }
@Override protected KnotContext processError(KnotContext knotContext, Throwable error) { LOGGER.error("Error happened during Template processing", error); ClientResponse errorResponse = new ClientResponse() .setStatusCode(HttpResponseStatus.INTERNAL_SERVER_ERROR.code()); return new KnotContext() .setClientRequest(knotContext.getClientRequest()) .setClientResponse(errorResponse); }
@Override protected KnotContext processError(KnotContext knotContext, Throwable error) { LOGGER.error("Error happened during Template processing", error); ClientResponse errorResponse = new ClientResponse() .setStatusCode(HttpResponseStatus.INTERNAL_SERVER_ERROR.code()); return new KnotContext() .setClientRequest(knotContext.getClientRequest()) .setClientResponse(errorResponse); }
@Override protected KnotContext processError(KnotContext context, Throwable error) { LOGGER.error("Could not process template [{}]", context.getClientRequest().getPath(), error); KnotContext errorResponse = new KnotContext().setClientResponse(context.getClientResponse()); errorResponse.getClientResponse() .setStatusCode(HttpResponseStatus.INTERNAL_SERVER_ERROR.code()); return errorResponse; }
public Single<JsonObject> doServiceCall(DataSourceEntry serviceEntry, KnotContext knotContext) { DataSourceAdapterRequest adapterRequest = new DataSourceAdapterRequest() .setRequest(knotContext.getClientRequest()) .setParams(serviceEntry.getParams()); return adapters.get(serviceEntry.getAddress()).rxProcess(adapterRequest) .map(resp -> buildResultObject(adapterRequest, resp)); }
public Single<JsonObject> doServiceCall(ServiceEntry serviceEntry, KnotContext knotContext) { AdapterRequest adapterRequest = new AdapterRequest() .setRequest(knotContext.getClientRequest()) .setParams(serviceEntry.getParams()); return adapters.get(serviceEntry.getAddress()).rxProcess(adapterRequest) .map(resp -> buildResultObject(adapterRequest, resp)); }
private AdapterRequest prepareAdapterRequest(KnotContext knotContext, FormEntity formEntity) { ActionSettings metadata = formEntity.adapter(); ClientRequest request = new ClientRequest().setPath(knotContext.getClientRequest().getPath()) .setMethod(knotContext.getClientRequest().getMethod()) .setFormAttributes(knotContext.getClientRequest().getFormAttributes()) .setHeaders(getFilteredHeaders(knotContext.getClientRequest().getHeaders(), metadata.getAllowedRequestHeadersPatterns())); AdapterRequest adapterRequest = new AdapterRequest() .setRequest(request) .setParams(metadata.getParams()) .setAdapterParams(formEntity.adapterParams()); LOGGER.debug("Adapter [{}] call with request [{}]", metadata.getAddress(), adapterRequest); return adapterRequest; }
private KnotContext handleGetMethod(List<FormEntity> forms, KnotContext knotContext) { LOGGER.debug("Pass-through {} request", knotContext.getClientRequest().getMethod()); knotContext.setTransition(DEFAULT_TRANSITION); forms.forEach(form -> form.fragment() .content(simplifier.transform(form.fragment().content(), options.getFormIdentifierName(), form.identifier()))); return knotContext; }