ConnectorResponse.java
package com.bonitasoft.processbuilder.execution;
import java.util.Collections;
import java.util.Map;
/**
* Output response from the ConnectorExecutionEngine.
*
* @param success Whether the execution was successful (HTTP 2xx)
* @param statusCode The HTTP status code (-1 if connection error)
* @param responseBody The response body as string
* @param responseHeaders The response headers
* @param errorMessage Error description (null if successful)
* @param executionTimeMs Time taken in milliseconds
* @param requestUrl The final URL that was called
* @param mappedData Optional transformed data from fieldMapping (null if no mapping)
*/
public record ConnectorResponse(
boolean success,
int statusCode,
String responseBody,
Map<String, String> responseHeaders,
String errorMessage,
long executionTimeMs,
String requestUrl,
String mappedData
) {
public ConnectorResponse {
responseHeaders = responseHeaders != null ? Map.copyOf(responseHeaders) : Collections.emptyMap();
}
public static ConnectorResponse success(int statusCode, String responseBody,
Map<String, String> responseHeaders,
long executionTimeMs, String requestUrl) {
return new ConnectorResponse(true, statusCode, responseBody, responseHeaders,
null, executionTimeMs, requestUrl, null);
}
public static ConnectorResponse success(int statusCode, String responseBody,
Map<String, String> responseHeaders,
long executionTimeMs, String requestUrl,
String mappedData) {
return new ConnectorResponse(true, statusCode, responseBody, responseHeaders,
null, executionTimeMs, requestUrl, mappedData);
}
public static ConnectorResponse error(String errorMessage, long executionTimeMs, String requestUrl) {
return new ConnectorResponse(false, -1, null, Collections.emptyMap(),
errorMessage, executionTimeMs, requestUrl, null);
}
public static ConnectorResponse error(int statusCode, String responseBody, String errorMessage,
long executionTimeMs, String requestUrl) {
return new ConnectorResponse(false, statusCode, responseBody, Collections.emptyMap(),
errorMessage, executionTimeMs, requestUrl, null);
}
}