public ListenableFuture get()

in protosimplestore/src/main/java/com/uber/simplestore/proto/impl/SimpleProtoStoreImpl.java [41:69]


  public <T extends MessageLite> ListenableFuture<T> get(String key, Parser<T> parser) {
    return Futures.transformAsync(
        simpleStore.get(key),
        (bytes) -> {
          T parsed;
          if (bytes == null || bytes.length == 0) {
            try {
              parsed = parser.parseFrom(ByteString.EMPTY);
            } catch (InvalidProtocolBufferException e) {
              // Has required fields, so we will pass this error forward.
              return Futures.immediateFailedFuture(e);
            }
          } else {
            try {
              parsed = parser.parseFrom(bytes);
            } catch (InvalidProtocolBufferException e) {
              if (config.equals(NamespaceConfig.CACHE)) {
                // A cache is allowed to be cleared whenever and we will try and give you a default
                // instance instead.
                return Futures.immediateFuture(parser.parseFrom(ByteString.EMPTY));
              } else {
                return Futures.immediateFailedFuture(e);
              }
            }
          }
          return Futures.immediateFuture(parsed);
        },
        SimpleStoreConfig.getComputationExecutor());
  }