public void onCacheDelete(HttpServletRequest request, final FilterDirector director)
      throws DatastoreOperationException, MalformedCacheRequestException {
    final CacheRequest cacheDelete = CacheRequest.marshallCacheRequest(request);
    hashRingDatastore.remove(
        cacheDelete.getCacheKey(),
        encodingProvider.decode(cacheDelete.getCacheKey()),
        cacheDelete.getRequestedRemoteBehavior());

    director.setResponseStatus(HttpStatusCode.ACCEPTED);
    director.setFilterAction(FilterAction.RETURN);
  }
  public void onCachePut(HttpServletRequest request, final FilterDirector director)
      throws MalformedCacheRequestException, DatastoreOperationException {
    final CacheRequest cachePut = CacheRequest.marshallCachePutRequest(request);
    hashRingDatastore.put(
        cachePut.getCacheKey(),
        encodingProvider.decode(cachePut.getCacheKey()),
        cachePut.getPayload(),
        cachePut.getTtlInSeconds(),
        TimeUnit.SECONDS,
        cachePut.getRequestedRemoteBehavior());

    director.setResponseStatus(HttpStatusCode.ACCEPTED);
    director.setFilterAction(FilterAction.RETURN);
  }
  public void onCacheGet(CacheRequest cacheGet, FilterDirector director) {
    final StoredElement element =
        hashRingDatastore.get(
            cacheGet.getCacheKey(),
            encodingProvider.decode(cacheGet.getCacheKey()),
            cacheGet.getRequestedRemoteBehavior());

    if (!element.elementIsNull()) {
      try {
        director.getResponseOutputStream().write(element.elementBytes());

        director.setResponseStatus(HttpStatusCode.OK);
        director.setFilterAction(FilterAction.RETURN);
      } catch (IOException ioe) {
        LOG.error(ioe.getMessage(), ioe);

        director.setResponseStatus(HttpStatusCode.INTERNAL_SERVER_ERROR);
        director.setFilterAction(FilterAction.RETURN);
      }
    } else {
      director.setResponseStatus(HttpStatusCode.NOT_FOUND);
      director.setFilterAction(FilterAction.RETURN);
    }
  }