All Downloads are FREE. Search and download functionalities are using the official Maven repository.

uk.co.mruoc.camunda.client.CamundaClient Maven / Gradle / Ivy

package uk.co.mruoc.camunda.client;

import lombok.Builder;
import lombok.RequiredArgsConstructor;
import uk.co.mruoc.camunda.client.deploy.create.CreateDeploymentRequest;
import uk.co.mruoc.camunda.client.deploy.create.CreateDeploymentResponse;
import uk.co.mruoc.camunda.client.deploy.delete.DeleteDeploymentRequest;
import uk.co.mruoc.camunda.client.deploy.get.GetDeploymentsResponse;
import uk.co.mruoc.camunda.client.deploy.get.GetDeploymentsRequest;
import uk.co.mruoc.camunda.client.message.DeliverMessageRequest;
import uk.co.mruoc.camunda.client.process.StartProcessRequest;
import uk.co.mruoc.camunda.client.process.StartProcessResponse;
import uk.co.mruoc.json.JsonConverter;
import uk.co.mruoc.json.jackson.JacksonJsonConverter;

import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

@Builder
@RequiredArgsConstructor
public class CamundaClient {

    private final String baseUri;
    private final RequestExecutor executor;
    private final CompositeRequestConverter requestConverter;
    private final ResponseConverter responseConverter;

    public CamundaClient(String baseUri) {
        this(baseUri, new JacksonJsonConverter(ObjectMapperFactory.build()));
    }

    public CamundaClient(String baseUri, JsonConverter jsonConverter) {
        this(baseUri,
                new RequestExecutor(),
                new CompositeRequestConverter(baseUri, jsonConverter),
                new ResponseConverter(jsonConverter)
        );
    }

    public CreateDeploymentResponse createDeployment(CreateDeploymentRequest request) {
        HttpRequest httpRequest = requestConverter.toHttpRequest(request);
        HttpResponse response = executor.execute(httpRequest);
        return responseConverter.toTypeOrThrowError(response, CreateDeploymentResponse.class);
    }

    public GetDeploymentsResponse getDeployments(GetDeploymentsRequest request) {
        HttpRequest httpRequest = requestConverter.toHttpRequest(request);
        HttpResponse response = executor.execute(httpRequest);
        return responseConverter.toTypeOrThrowError(response, GetDeploymentsResponse.class);
    }

    public void deleteDeployment(DeleteDeploymentRequest request) {
        HttpRequest httpRequest = requestConverter.toHttpRequest(request);
        HttpResponse response = executor.execute(httpRequest);
        responseConverter.throwErrorIfRequired(response);
    }

    public StartProcessResponse startProcess(StartProcessRequest request) {
        HttpRequest httpRequest = requestConverter.toHttpRequest(request);
        HttpResponse response = executor.execute(httpRequest);
        return responseConverter.toTypeOrThrowError(response, StartProcessResponse.class);
    }

    public void deliverMessage(DeliverMessageRequest request) {
        HttpRequest httpRequest = requestConverter.toHttpRequest(request);
        HttpResponse response = executor.execute(httpRequest);
        responseConverter.throwErrorIfRequired(response);
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy