docs: @Override
    public final AItemSpecifics<T, ID> process(
      final Map<String, Object> pReqVars,
        final AItemSpecifics<T, ID> pEntity,
          final IRequestData pRequestData) throws Exception {
      String fileToUploadName = (String) pRequestData
        .getAttribute("fileToUploadName");
      OutputStream outs = null;
      InputStream ins = null;
      try {
        String filePath;
        if (pEntity.getStringValue1() == null) { //in base language:
          String ft = String.valueOf(new Date().getTime());
          filePath = this.webAppPath + File.separator
            + this.uploadDirectory + File.separator
              + ft + fileToUploadName;
          pEntity.setStringValue2(filePath);
          pEntity.setStringValue1(this.uploadDirectory
                + "/" + ft + fileToUploadName);
        } else { //I18N files:
          String fileLang = pRequestData.getParameter("fileLang");
          if (pEntity.getStringValue3() == null
            || !pEntity.getStringValue3().contains(fileLang)) {
            throw new ExceptionWithCode(ExceptionWithCode.WRONG_PARAMETER,
              "notset_language");
          }
          int idhHtml = pEntity.getStringValue1().indexOf(".html");
          String urlWithoutHtml = pEntity.getStringValue1().substring(0, idhHtml);
          filePath = this.webAppPath + File.separator
            + urlWithoutHtml + "_" + fileLang + ".html";
        }
        ins = (InputStream) pRequestData.getAttribute("fileToUploadInputStream");
        outs = new BufferedOutputStream(new FileOutputStream(filePath));
        byte[] data = new byte[1024];
        int count;
        while ((count = ins.read(data)) != -1) {
          outs.write(data, 0, count);
        }
        outs.flush();
      } finally {
        if (ins != null) {
          ins.close();
        }
        if (outs != null) {
          outs.close();
        }
      }
      getSrvOrm().updateEntity(pReqVars, pEntity);
      return pEntity;
    }