@Override
    public <T> void get(String cacheKey, final Class<T> type, final IAsyncResultHandler<T> handler) {
        try {
            final CacheEntry cacheEntry = getStore().get(cacheKey, CacheEntry.class);
            if (null != cacheEntry) {
                try {
                    @SuppressWarnings("unchecked") final T head = JSON_MAPPER.readValue(cacheEntry.getHead(), type);
                    handler.handle(AsyncResultImpl.create(head));
                } catch (Exception e) {
                    LOGGER.error(e, "Error reading cache entry with key: {}", cacheKey);
                    handler.handle(AsyncResultImpl.create((T) null));
                }
            } else {
                handler.handle(AsyncResultImpl.create((T) null));
            }
        } catch (Throwable e) {
            handler.handle(AsyncResultImpl.create(e, type));
        }
    }
@see ICacheStoreComponent#get(String, Class, IAsyncResultHandler)
gateway/engine/storage-common/src/main/java/io/apiman/gateway/engine/storage/component/AbstractCacheStoreComponent.java