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

com.aerospike.mapper.tools.virtuallist.Interactor Maven / Gradle / Ivy

package com.aerospike.mapper.tools.virtuallist;

import javax.validation.constraints.NotNull;

import com.aerospike.client.Operation;

public class Interactor {
    private Operation operation;
    private DeferredOperation deferredOperation;
    private final OperationParameters deferredParameters;
    private ResultsUnpacker[] resultsUnpackers;

    public Interactor(@NotNull Operation operation, @NotNull ResultsUnpacker... resultsUnpackers) {
        super();
        this.operation = operation;
        this.resultsUnpackers = resultsUnpackers;
        this.deferredParameters = null;
    }

    public Interactor(@NotNull DeferredOperation deferredOperation) {
        super();
        this.deferredOperation = deferredOperation;
        this.deferredParameters = new OperationParameters();
    }

    public void setNeedsResultOfType(ReturnType returnType) {
        if (this.deferredParameters != null) {
            this.deferredParameters.setNeedsResultOfType(returnType);
        }
    }

    public Operation getOperation() {
        if (operation == null && deferredOperation != null) {
            operation = deferredOperation.getOperation(this.deferredParameters);
            resultsUnpackers = deferredOperation.getUnpackers(this.deferredParameters);
        }
        return operation;
    }

    public Object getResult(Object rawResult) {
        Object result = rawResult;
        for (ResultsUnpacker thisUnpacker : resultsUnpackers) {
            result = thisUnpacker.unpack(result);
        }
        return result;
    }

    public boolean isWriteOperation() {
        if (this.operation != null) {
            switch (operation.type) {
                case ADD:
                case APPEND:
                case BIT_MODIFY:
                case CDT_MODIFY:
                case DELETE:
                case MAP_MODIFY:
                case PREPEND:
                case TOUCH:
                case WRITE:
                    return true;
                default:
                    return false;
            }
        } else {
            return !this.deferredOperation.isGetOperation();
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy