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

org.cloudfoundry.multiapps.controller.process.steps.PollOperationBaseExecution Maven / Gradle / Ivy

There is a newer version: 1.183.0
Show newest version
package org.cloudfoundry.multiapps.controller.process.steps;

import java.util.function.Consumer;

import org.cloudfoundry.multiapps.controller.process.util.AsyncJobToAsyncExecutionStateAdapter;
import org.cloudfoundry.multiapps.controller.process.util.ImmutableAsyncJobToAsyncExecutionStateAdapter;

import com.sap.cloudfoundry.client.facade.CloudControllerClient;
import com.sap.cloudfoundry.client.facade.domain.CloudAsyncJob;

public abstract class PollOperationBaseExecution implements AsyncExecution {

    @Override
    public AsyncExecutionState execute(ProcessContext context) {
        String asyncJobId = getAsyncJobId(context);
        CloudControllerClient controllerClient = context.getControllerClient();
        CloudAsyncJob asyncJob = controllerClient.getAsyncJob(asyncJobId);
        AsyncJobToAsyncExecutionStateAdapter asyncJobToAsyncExecutionStateAdapter = buildAsyncJobToAsyncExecutionAdapter(context);
        return asyncJobToAsyncExecutionStateAdapter.evaluateState(asyncJob);
    }

    private AsyncJobToAsyncExecutionStateAdapter buildAsyncJobToAsyncExecutionAdapter(ProcessContext context) {
        return ImmutableAsyncJobToAsyncExecutionStateAdapter.builder()
                                                            .inProgressHandler(getInProgressHandler(context))
                                                            .onCompleteHandler(getOnCompleteHandler(context))
                                                            .onErrorHandler(getOnErrorHandler(context))
                                                            .onErrorHandlerForOptionalResource(getOnErrorHandlerForOptionalResource(context))
                                                            .isOptionalResource(isOptional(context))
                                                            .build();
    }

    protected abstract String getAsyncJobId(ProcessContext context);

    protected boolean isOptional(ProcessContext context) {
        return false;
    }

    protected abstract Consumer getInProgressHandler(ProcessContext context);

    protected abstract Consumer getOnCompleteHandler(ProcessContext context);

    protected abstract Consumer getOnErrorHandler(ProcessContext context);

    protected Consumer getOnErrorHandlerForOptionalResource(ProcessContext context) {
        return getOnErrorHandler(context);
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy