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

com.alicp.jetcache.MultiGetResult Maven / Gradle / Ivy

The newest version!
package com.alicp.jetcache;

import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CompletionStage;

/**
 * Created on 2017/2/21.
 *
 * @author huangli
 */
public class MultiGetResult extends CacheResult {
    private volatile Map> values;

    public MultiGetResult(CompletionStage future) {
        super(future);
    }

    public MultiGetResult(CacheResultCode resultCode, String message, Map> values) {
        super(CompletableFuture.completedFuture(new ResultData(resultCode, message, values)));
    }

    public MultiGetResult(Throwable e) {
        super(e);
    }

    public Map> getValues() {
        waitForResult();
        return values;
    }

    @Override
    protected void fetchResultSuccess(ResultData resultData) {
        values = (Map>) resultData.getOriginData();
        super.fetchResultSuccess(resultData);
    }

    @Override
    protected void fetchResultFail(Throwable e) {
        values = null;
        super.fetchResultFail(e);
    }

    public Map unwrapValues() {
        waitForResult();
        if (values == null) {
            return null;
        }
        Map m = new HashMap<>();
        values.entrySet().stream().forEach((en) -> {
            if (en.getValue().isSuccess()) {
                m.put(en.getKey(), en.getValue().getValue());
            }
        });
        return m;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy