code: public void consumeFormData(String formDataId, I_CmsFormDataHandler handler) throws Exception {
  
          List<FileItem> items = m_storedFormData.get(formDataId);
  
          if (items != null) {
              Map<String, I_CmsFormDataItem> itemMap = Maps.newHashMap();
              LOG.debug(formDataId + ": Processing file items");
              for (FileItem item : items) {
                  LOG.debug(formDataId + ": " + item.toString());
                  if (!item.isFormField() && CmsStringUtil.isEmptyOrWhitespaceOnly(item.getName())) {
                      LOG.debug(formDataId + ": skipping previous file field because it is empty");
                  } else {
                      itemMap.put(item.getFieldName(), new CmsUgcDataItem(item));
                  }
              }
              Exception storedException = null;
              try {
                  handler.handleFormData(itemMap);
              } catch (Exception e) {
                  storedException = e;
              }
              for (FileItem item : items) {
                  item.delete();
              }
              m_storedFormData.remove(formDataId);
              if (storedException != null) {
                  throw storedException;
              }
          }
      }
docs: Passes the form data with the given ID to the handler object, then removes it and deletes its stored data.<p>
  
  The form data is removed even if an exception is thrown while calling the form data handler.
  
  @param formDataId the id of the form data to process
  @param handler the handler to which the form data should be passed
  @throws Exception if something goes wrong