code: @PUT
      @Timed
      public void setResource(@Suspended final AsyncResponse response, @Context final Request request,
              @Context final UriInfo uriInfo, @Context final HttpHeaders headers,
              @Context final SecurityContext secContext, final InputStream body) {
          final TrellisRequest req = new TrellisRequest(request, uriInfo, headers, secContext);
          final String urlBase = getBaseUrl(req);
          final IRI identifier = rdf.createIRI(TRELLIS_DATA_PREFIX + req.getPath());
          final PutHandler putHandler = new PutHandler(req, body, trellis, preconditionRequired, createUncontained,
                  urlBase);
  
          getParent(identifier).thenCombine(trellis.getResourceService().get(identifier), putHandler::initialize)
              .thenCompose(putHandler::setResource).thenCompose(putHandler::updateMemento)
              .thenApply(ResponseBuilder::build).exceptionally(this::handleException).thenApply(response::resume);
      }
docs: Perform a PUT operation on a LDP Resource.
  
  @param response the async response
  @param uriInfo the URI info
  @param secContext the security context
  @param headers the HTTP headers
  @param request the request
  @param body the body