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

org.elder.sourcerer.OperationHandlerOperation Maven / Gradle / Ivy

package org.elder.sourcerer;

import java.util.List;

/**
 * Implementation of Operation in terms of an OperationHandler and parameters.
 */
public class OperationHandlerOperation
        implements Operation {
    private final OperationHandler handler;
    private final boolean requiresState;
    private final boolean requiresArguments;
    private final ExpectedVersion expectedVersion;
    private boolean atomic;

    public OperationHandlerOperation(
            final OperationHandler handler,
            final boolean requiresState,
            final boolean requiresArguments) {
        this(handler, requiresState, requiresArguments, ExpectedVersion.any(), false);
    }

    public OperationHandlerOperation(
            final OperationHandler handler,
            final boolean requiresState,
            final boolean requiresArguments,
            final ExpectedVersion expectedVersion) {
        this(handler, requiresState, requiresArguments, expectedVersion, false);
    }

    public OperationHandlerOperation(
            final OperationHandler handler,
            final boolean requiresState,
            final boolean requiresArguments,
            final ExpectedVersion expectedVersion,
            final boolean atomic) {
        this.handler = handler;
        this.requiresState = requiresState;
        this.requiresArguments = requiresArguments;
        this.expectedVersion = expectedVersion;
        this.atomic = atomic;
    }

    @Override
    public List execute(
            final ImmutableAggregate aggregate,
            final TParams params) {
        return handler.execute(aggregate, params);
    }

    @Override
    public boolean requiresState() {
        return requiresState;
    }

    @Override
    public boolean requiresArguments() {
        return requiresArguments;
    }

    @Override
    public ExpectedVersion expectedVersion() {
        return expectedVersion;
    }

    @Override
    public boolean atomic() {
        return atomic;
    }

    public OperationHandler handler() {
        return handler;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy