@Override
      public Future<String> convert(RestRequest restRequest, String input, BlobProperties blobProperties,
          Callback<String> callback) {
        lastInput = input;
        lastBlobProperties = blobProperties;
        Future<String> result = parentIdConverter.convert(restRequest, input, blobProperties, callback);
        FutureResult<String> futureResult = new FutureResult<>();
        try {
          lastConvertedId = result.get();
          futureResult.done(lastConvertedId, null);
        } catch (Exception e) {
          if (e instanceof ExecutionException) {
            futureResult.done(null, (Exception) e.getCause());
          } else {
            futureResult.done(null, e);
          }
        }
        return futureResult;
      }
Method to easily create a PUT {@link RestRequest}. This will set {@link RestUtils.InternalKeys#REQUEST_PATH} to a
valid {@link RequestPath} object.
@param headers any associated headers as a {@link JSONObject}.
@param path the path for the request.
@param requestBody the body of the request.
@return A {@link RestRequest} object that defines the request required by the input.
ambry-frontend/src/test/java/com/github/ambry/frontend/NamedBlobPutHandlerTest.java