private MultipartForm parseRequest(HttpServletRequest request) throws IOException, ServletException {
MultipartForm form = new MultipartForm();
ServletFileUpload upload = newServletFileUpload();
final List fileItems;
try {
fileItems = upload.parseRequest(request);
} catch (FileUploadException e) {
throw new ServletException("Could not upload files:" + e.getMessage(), e);
}
for (Iterator fileItemIterator = fileItems.iterator(); fileItemIterator.hasNext(); ) {
FileItem item = (FileItem) fileItemIterator.next();
if (item.isFormField()) {
addField(request, item, form);
} else {
addFile(item, form);
}
}
((DiskFileItemFactory) upload.getFileItemFactory()).getFileCleaningTracker().exitWhenFinished();
request.setAttribute(MultipartForm.REQUEST_ATTRIBUTE_NAME, form);
return form;
}