package com.netflix.ribbon.hystrix; import java.util.Map; import rx.Observable; import com.netflix.hystrix.HystrixObservableCommand; import com.netflix.ribbon.CacheProvider; /** * @author Tomasz Bak */ public class CacheObservableCommand<T> extends HystrixObservableCommand<T> { private final CacheProvider<T> cacheProvider; private final String key; private final String hystrixCacheKey; private final Map<String, Object> requestProperties; public CacheObservableCommand( CacheProvider<T> cacheProvider, String key, String hystrixCacheKey, Map<String, Object> requestProperties, Setter setter) { super(setter); this.cacheProvider = cacheProvider; this.key = key; this.hystrixCacheKey = hystrixCacheKey; this.requestProperties = requestProperties; } @Override protected String getCacheKey() { if (hystrixCacheKey == null) { return super.getCacheKey(); } else { return hystrixCacheKey; } } @Override protected Observable<T> construct() { return cacheProvider.get(key, requestProperties); } }