docs: protected void processRequest(HttpServletRequest request, HttpServletResponse response)
              throws ServletException, IOException {
          List<FileItem> items;
          // Parse the request
          try {
              items = upload.parseRequest(request);
          } catch (FileUploadException e) {
              throw new ServletException(e);
          }
  
          String repository = getParameter(items, REPOSITORY_NAME_PARAMETER);
          String workspace = getParameter(items, WORKSPACE_NAME_PARAMETER);
          String path = getParameter(items, NODE_PATH_PARAMETER);
          String pname = getParameter(items, PROPERTY_NAME_PARAMETER);
          
          if (logger.isDebugEnabled()) {
              logger.debug(String.format("Upload %s at %s/%s%s", 
                      pname, repository, workspace, path));
          }
          
          String mimeType = getContentType(items);
          Connector connector = (Connector) 
                  request.getSession().getAttribute(REPOSITORY_CONNECTOR);
          
          try {
              Session session = connector.find(repository).session(workspace);
              ValueFactory valueFactory = session.getValueFactory(); 
              Binary bin = valueFactory.createBinary(getStream(items));
              
              Node node = session.getNode(path);
              node.setProperty(pname, bin);
              node.setProperty(MIME_TYPE, mimeType);
              bin.dispose();
          } catch (Exception e) {
              throw new ServletException(e);
          }
          
          String uri = request.getContextPath() + 
                  String.format(DESTINATION_URL, repository, workspace, path);
          response.sendRedirect(uri);
      }