protected void executeInternal()

in ddm-bpm-extension/src/main/java/com/epam/digital/data/platform/bpms/extension/delegate/connector/soap/TrembitaSoapConnectorDelegate.java [99:132]


  protected void executeInternal(DelegateExecution execution) throws Exception {
    responseVariable.on(execution).set(Spin.XML(Map.of()));

    var responseType = responseTypeVariable.from(execution).get();
    var trembitaSystemName = systemNameVariable.from(execution).getOrThrow();
    var soapAction = trembitaSoapActionVariable.from(execution).getOrThrow();
    var payload = payloadVariable.from(execution).getOrThrow();
    var contentType = contentTypeVariable.from(execution).getOrThrow();
    var registryProperties = getTrembitaRegistryProperties(trembitaSystemName);

    var payloadStream = new ByteArrayInputStream(payload.getBytes());
    var soapMessage = MessageFactory.newInstance().createMessage(null, payloadStream);

    log.debug("Start adding trembita system headers");
    addSystemTrembitaHeader(soapMessage, registryProperties, trembitaSystemName);
    log.debug("Trembita system headers added successfully");

    var payloadOutputStream = new ByteArrayOutputStream();
    soapMessage.writeTo(payloadOutputStream);
    var payloadString = payloadOutputStream.toString();

    log.debug("Start sending soap http request");
    var soapHttpResponse = soapHttpConnector.createRequest()
        .url(registryProperties.getUrl())
        .soapAction(soapAction)
        .contentType(contentType)
        .payload(payloadString)
        .execute();
    log.debug("Got response with status: {}", soapHttpResponse.getStatusCode());

    var response = STRING_RESPONSE_TYPE.equals(responseType) ? soapHttpResponse.getResponse()
        : Spin.XML(soapHttpResponse.getResponse());
    responseVariable.on(execution).set(response);
  }