diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/FedoraDatastreamController.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/FedoraDatastreamController.java index 93def6de3..9ae6b7b86 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/FedoraDatastreamController.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/FedoraDatastreamController.java @@ -45,7 +45,6 @@ import edu.cornell.mannlib.vitro.webapp.dao.IndividualDao; import edu.cornell.mannlib.vitro.webapp.dao.ModelAccess; import edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary; import edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory; -import edu.cornell.mannlib.vitro.webapp.filestorage.uploadrequest.FileUploadServletRequest; import fedora.client.FedoraClient; import fedora.common.Constants; import fedora.server.management.FedoraAPIM; @@ -220,12 +219,22 @@ public class FedoraDatastreamController extends VitroHttpServlet implements Cons } @Override + public long maximumMultipartFileSize() { + return maxFileSize; + } + + @Override + public boolean stashFileSizeException() { + return true; + } + + @Override public void doPost(HttpServletRequest rawRequest, HttpServletResponse res) throws ServletException, IOException { - try{ - FileUploadServletRequest req = FileUploadServletRequest.parseRequest(rawRequest, maxFileSize); - if (req.hasFileUploadException()) { - throw new FdcException("Size limit exceeded: " + req.getFileUploadException().getLocalizedMessage()); + try{ + VitroRequest req = new VitroRequest(rawRequest); + if (req.hasFileSizeException()) { + throw new FdcException("Size limit exceeded: " + req.getFileSizeException().getLocalizedMessage()); } if (!req.isMultipart()) { throw new FdcException("Must POST a multipart encoded request"); diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/ImageUploadController.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/ImageUploadController.java index 537b4573c..d01d163e9 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/ImageUploadController.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/ImageUploadController.java @@ -2,12 +2,6 @@ package edu.cornell.mannlib.vitro.webapp.controller.freemarker; -import java.util.Arrays; -import java.util.Enumeration; -import java.util.Map; -import java.util.Map.Entry; - -import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.UnavailableException; import javax.servlet.http.HttpServletRequest; @@ -36,7 +30,6 @@ import edu.cornell.mannlib.vitro.webapp.filestorage.backend.FileStorage; import edu.cornell.mannlib.vitro.webapp.filestorage.backend.FileStorageSetup; import edu.cornell.mannlib.vitro.webapp.filestorage.model.FileInfo; import edu.cornell.mannlib.vitro.webapp.filestorage.model.ImageInfo; -import edu.cornell.mannlib.vitro.webapp.filestorage.uploadrequest.FileUploadServletRequest; import edu.cornell.mannlib.vitro.webapp.i18n.I18n; import edu.cornell.mannlib.vitro.webapp.web.images.PlaceholderUtil; @@ -52,6 +45,7 @@ public class ImageUploadController extends FreemarkerHttpServlet { private static final String ERROR_CODE_UNRECOGNIZED_URI = "imageUpload.errorUnrecognizedURI"; private static final String ERROR_CODE_NO_URI = "imageUpload.errorNoURI"; + private static final String ERROR_CODE_FILE_TOO_BIG = "imageUpload.errorFileTooBig"; /** Limit file size to 6 megabytes. */ public static final int MAXIMUM_FILE_SIZE = 6 * 1024 * 1024; @@ -136,6 +130,22 @@ public class ImageUploadController extends FreemarkerHttpServlet { + FileStorage.class.getName() + "'"); } } + + /** + * How large an image file will we accept? + */ + @Override + public long maximumMultipartFileSize() { + return MAXIMUM_FILE_SIZE; + } + + /** + * What will we do if there is a problem parsing the request? + */ + @Override + public boolean stashFileSizeException() { + return true; + } /** * The required action depends on what we are trying to do. @@ -171,52 +181,17 @@ public class ImageUploadController extends FreemarkerHttpServlet { } } - /** - *

- * Parse the multi-part request, process the request, and produce the - * output. - *

- *

- * If the request was a multi-part file upload, it will parse to a - * normal-looking request with a "file_item_map" attribute. - *

- *

- * The processing will produce a {@link ResponseValues} object, which - * represents either a request for a FreeMarker template or a forwarding - * operation. - *

- *

- */ - - @Override - protected ResponseValues processRequest(VitroRequest vreq) { - try { - // Parse the multi-part request. - FileUploadServletRequest.parseRequest(vreq, MAXIMUM_FILE_SIZE); - if (log.isTraceEnabled()) { - dumpRequestDetails(vreq); - } - - return buildTheResponse(vreq); - } catch (Exception e) { - // log.error("Could not produce response page", e); - return new ExceptionResponseValues(e); - } - } - /** * Handle the different actions. If not specified, the default action is to * show the intro screen. */ - private ResponseValues buildTheResponse(VitroRequest vreq) { - String action = vreq.getParameter(PARAMETER_ACTION); - + @Override + protected ResponseValues processRequest(VitroRequest vreq) { try { + checkForFileTooBigException(vreq); + + String action = vreq.getParameter(PARAMETER_ACTION); + Individual entity = validateEntityUri(vreq); if (ACTION_UPLOAD.equals(action)) { return doUploadImage(vreq, entity); @@ -240,6 +215,19 @@ public class ImageUploadController extends FreemarkerHttpServlet { } } + /** + * If our exception handler caught a "file too big" exception, we need to + * deal with it before anything else, since we can't trust the other + * parameters. + */ + private void checkForFileTooBigException(VitroRequest vreq) + throws UserMistakeException { + if (vreq.hasFileSizeException()) { + int limit = MAXIMUM_FILE_SIZE / (1024 * 1024); + throw new UserMistakeException(ERROR_CODE_FILE_TOO_BIG, limit); + } + } + /** * We are just starting the upload process. Record where we came from, so if * they hit "cancel" we know where to send them. If we have problems, just @@ -626,31 +614,6 @@ public class ImageUploadController extends FreemarkerHttpServlet { } - /** - * For debugging, dump all sorts of information about the request. - * - * WARNING: if "req" represents a Multi-part request which has not yet been - * parsed, then reading these parameters will consume them. - */ - @SuppressWarnings("unchecked") - private void dumpRequestDetails(HttpServletRequest req) { - log.trace("Request is " + req.getClass().getName()); - - Map parms = req.getParameterMap(); - for (Entry entry : parms.entrySet()) { - log.trace("Parameter '" + entry.getKey() + "'=" - + Arrays.deepToString(entry.getValue())); - } - - Enumeration attrs = req.getAttributeNames(); - while (attrs.hasMoreElements()) { - String key = attrs.nextElement(); - String valueString = String.valueOf(req.getAttribute(key)); - String valueOneLine = valueString.replace("\n", " | "); - log.trace("Attribute '" + key + "'=" + valueOneLine); - } - } - static class Dimensions { final int width; final int height; diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/ImageUploadHelper.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/ImageUploadHelper.java index 68d0d00f6..3528ecc35 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/ImageUploadHelper.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/ImageUploadHelper.java @@ -2,12 +2,9 @@ package edu.cornell.mannlib.vitro.webapp.controller.freemarker; -import static edu.cornell.mannlib.vitro.webapp.controller.freemarker.ImageUploadController.MAXIMUM_FILE_SIZE; import static edu.cornell.mannlib.vitro.webapp.controller.freemarker.ImageUploadController.PARAMETER_UPLOADED_FILE; import static edu.cornell.mannlib.vitro.webapp.controller.freemarker.ImageUploadController.THUMBNAIL_HEIGHT; import static edu.cornell.mannlib.vitro.webapp.controller.freemarker.ImageUploadController.THUMBNAIL_WIDTH; -import static edu.cornell.mannlib.vitro.webapp.filestorage.uploadrequest.FileUploadServletRequest.FILE_ITEM_MAP; -import static edu.cornell.mannlib.vitro.webapp.filestorage.uploadrequest.FileUploadServletRequest.FILE_UPLOAD_EXCEPTION; import java.io.FileNotFoundException; import java.io.IOException; @@ -21,7 +18,6 @@ import javax.media.jai.JAI; import javax.media.jai.RenderedOp; import javax.media.jai.util.ImagingListener; import javax.servlet.ServletContext; -import javax.servlet.http.HttpServletRequest; import org.apache.commons.fileupload.FileItem; import org.apache.commons.io.FilenameUtils; @@ -41,7 +37,6 @@ import edu.cornell.mannlib.vitro.webapp.filestorage.UploadedFileHelper; import edu.cornell.mannlib.vitro.webapp.filestorage.backend.FileAlreadyExistsException; import edu.cornell.mannlib.vitro.webapp.filestorage.backend.FileStorage; import edu.cornell.mannlib.vitro.webapp.filestorage.model.FileInfo; -import edu.cornell.mannlib.vitro.webapp.filestorage.uploadrequest.FileUploadServletRequest; /** * Handle the mechanics of validating, storing, and deleting file images. @@ -55,7 +50,6 @@ public class ImageUploadHelper { private static final String ERROR_CODE_NO_IMAGE_TO_CROP = "imageUpload.errorNoImageForCropping"; private static final String ERROR_CODE_IMAGE_TOO_SMALL = "imageUpload.errorImageTooSmall"; private static final String ERROR_CODE_UNKNOWN = "imageUpload.errorUnknown"; - private static final String ERROR_CODE_FILE_TOO_BIG = "imageUpload.errorFileTooBig"; private static final String ERROR_CODE_UNRECOGNIZED_FILE_TYPE = "imageUpload.errorUnrecognizedFileType"; private static final String ERROR_CODE_NO_PHOTO_SELECTED = "imageUpload.errorNoPhotoSelected"; private static final String ERROR_CODE_BAD_MULTIPART_REQUEST = "imageUpload.errorBadMultipartRequest"; @@ -133,20 +127,13 @@ public class ImageUploadHelper { * if there is no file, if it is empty, or if it is not an image * file. */ - @SuppressWarnings("unchecked") - FileItem validateImageFromRequest(HttpServletRequest request) + FileItem validateImageFromRequest(VitroRequest vreq) throws UserMistakeException { - Object exception = request.getAttribute(FILE_UPLOAD_EXCEPTION); - if (exception != null) { - int limit = MAXIMUM_FILE_SIZE / (1024 * 1024); - throw new UserMistakeException(ERROR_CODE_FILE_TOO_BIG, limit); - } - - Map> map = (Map>) request - .getAttribute(FILE_ITEM_MAP); + Map> map = vreq.getFiles(); if (map == null) { throw new IllegalStateException(ERROR_CODE_BAD_MULTIPART_REQUEST); } + List list = map.get(PARAMETER_UPLOADED_FILE); if ((list == null) || list.isEmpty()) { throw new UserMistakeException(ERROR_CODE_FORM_FIELD_MISSING, diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/jena/JenaCsv2RdfController.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/jena/JenaCsv2RdfController.java index c310de156..877bb05c0 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/jena/JenaCsv2RdfController.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/jena/JenaCsv2RdfController.java @@ -25,7 +25,6 @@ import com.hp.hpl.jena.rdf.model.ModelMaker; import edu.cornell.mannlib.vitro.webapp.auth.permissions.SimplePermission; import edu.cornell.mannlib.vitro.webapp.controller.Controllers; import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; -import edu.cornell.mannlib.vitro.webapp.filestorage.uploadrequest.FileUploadServletRequest; import edu.cornell.mannlib.vitro.webapp.utils.Csv2Rdf; import edu.cornell.mannlib.vitro.webapp.utils.jena.JenaIngestUtils; @@ -37,6 +36,17 @@ public class JenaCsv2RdfController extends JenaIngestController { private static final String CSV2RDF_SELECT_URI_JSP = "/jenaIngest/csv2rdfSelectUri.jsp"; private static int maxFileSizeInBytes = 1024 * 1024 * 2000; //2000mb + + @Override + public long maximumMultipartFileSize() { + return maxFileSizeInBytes; + } + + @Override + public boolean stashFileSizeException() { + return true; + } + @Override public void doPost(HttpServletRequest rawRequest, HttpServletResponse response) throws ServletException, IOException { @@ -45,15 +55,13 @@ public class JenaCsv2RdfController extends JenaIngestController { return; } - FileUploadServletRequest req = FileUploadServletRequest.parseRequest(rawRequest, - maxFileSizeInBytes); - if (req.hasFileUploadException()) { - forwardToFileUploadError(req.getFileUploadException().getLocalizedMessage(), req, response); + VitroRequest request = new VitroRequest(rawRequest); + if (request.hasFileSizeException()) { + forwardToFileUploadError(request.getFileSizeException().getLocalizedMessage(), request, response); return; } - VitroRequest request = new VitroRequest(req); - Map> fileStreams = req.getFiles(); + Map> fileStreams = request.getFiles(); FileItem fileStream = fileStreams.get("filePath").get(0); String filePath = fileStreams.get("filePath").get(0).getName(); @@ -70,7 +78,7 @@ public class JenaCsv2RdfController extends JenaIngestController { csv2rdfResult = doExecuteCsv2Rdf( request, fileStream, filePath); }catch(Exception ex){ - forwardToFileUploadError(ex.getMessage(),req,response); + forwardToFileUploadError(ex.getMessage(),request,response); return; } ModelMaker maker = getVitroJenaModelMaker(request); diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/jena/JenaXMLFileUpload.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/jena/JenaXMLFileUpload.java index f9ea1335b..39e862325 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/jena/JenaXMLFileUpload.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/jena/JenaXMLFileUpload.java @@ -36,7 +36,6 @@ import com.hp.hpl.jena.shared.Lock; import edu.cornell.mannlib.vitro.webapp.auth.permissions.SimplePermission; import edu.cornell.mannlib.vitro.webapp.controller.Controllers; import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; -import edu.cornell.mannlib.vitro.webapp.filestorage.uploadrequest.FileUploadServletRequest; public class JenaXMLFileUpload extends JenaIngestController { Log log = LogFactory.getLog(JenaXMLFileUpload.class); @@ -76,6 +75,16 @@ public class JenaXMLFileUpload extends JenaIngestController { } } + @Override + public long maximumMultipartFileSize() { + return maxFileSize; + } + + @Override + public boolean stashFileSizeException() { + return true; + } + /** * Each file will be converted to RDF/XML and loaded to the target model. * If any of the files fail, no data will be loaded. @@ -86,14 +95,14 @@ public class JenaXMLFileUpload extends JenaIngestController { * */ @Override - public void doPost(HttpServletRequest rawRequest, HttpServletResponse resp) + public void doPost(HttpServletRequest request, HttpServletResponse resp) throws ServletException, IOException { - FileUploadServletRequest request = FileUploadServletRequest.parseRequest(rawRequest, maxFileSize); - if (request.hasFileUploadException()) { + VitroRequest vreq = new VitroRequest(request); + if (vreq.hasFileSizeException()) { throw new ServletException("Size limit exceeded: " - + request.getFileUploadException().getLocalizedMessage()); + + vreq.getFileSizeException().getLocalizedMessage()); } - if (request.isMultipart()) { + if (vreq.isMultipart()) { log.debug("multipart content detected"); } else { // TODO: forward to error message @@ -105,7 +114,6 @@ public class JenaXMLFileUpload extends JenaIngestController { return; } - VitroRequest vreq = new VitroRequest(request); ModelMaker modelMaker = getVitroJenaModelMaker(vreq); String targetModel = request.getParameter("targetModel"); if (targetModel == null) { @@ -117,7 +125,7 @@ public class JenaXMLFileUpload extends JenaIngestController { throw new ServletException("targetModel '" + targetModel + "' was not found."); request.setAttribute("targetModel", targetModel); - List filesToLoad = saveFiles( request.getFiles() ); + List filesToLoad = saveFiles( vreq.getFiles() ); List rdfxmlToLoad = convertFiles( filesToLoad); List modelsToLoad = loadRdfXml( rdfxmlToLoad ); @@ -136,7 +144,7 @@ public class JenaXMLFileUpload extends JenaIngestController { request.setAttribute("title","Uploaded files and converted to RDF"); request.setAttribute("bodyJsp","/jenaIngest/xmlFileUploadSuccess.jsp"); - request.setAttribute("fileItems",request.getFiles()); + request.setAttribute("fileItems",vreq.getFiles()); RequestDispatcher rd = request.getRequestDispatcher(Controllers.BASIC_JSP); request.setAttribute("css", ""); diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/jena/RDFUploadController.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/jena/RDFUploadController.java index a196d8d28..bcb2eb635 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/jena/RDFUploadController.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/jena/RDFUploadController.java @@ -42,7 +42,6 @@ import edu.cornell.mannlib.vitro.webapp.dao.jena.OntModelSelector; import edu.cornell.mannlib.vitro.webapp.dao.jena.RDFServiceGraph; import edu.cornell.mannlib.vitro.webapp.dao.jena.event.BulkUpdateEvent; import edu.cornell.mannlib.vitro.webapp.dao.jena.event.EditEvent; -import edu.cornell.mannlib.vitro.webapp.filestorage.uploadrequest.FileUploadServletRequest; import edu.cornell.mannlib.vitro.webapp.rdfservice.ChangeSet; import edu.cornell.mannlib.vitro.webapp.rdfservice.RDFService; import edu.cornell.mannlib.vitro.webapp.rdfservice.RDFServiceException; @@ -56,31 +55,39 @@ public class RDFUploadController extends JenaIngestController { private static FileItem fileStream = null; private static final String LOAD_RDF_DATA_JSP="/jenaIngest/loadRDFData.jsp"; - public void doPost(HttpServletRequest rawRequest, + @Override + public long maximumMultipartFileSize() { + return maxFileSizeInBytes; + } + + @Override + public boolean stashFileSizeException() { + return true; + } + + public void doPost(HttpServletRequest req, HttpServletResponse response) throws ServletException, IOException { - if (!isAuthorizedToDisplayPage(rawRequest, response, + if (!isAuthorizedToDisplayPage(req, response, SimplePermission.USE_ADVANCED_DATA_TOOLS_PAGES.ACTIONS)) { return; } - FileUploadServletRequest req = FileUploadServletRequest.parseRequest( - rawRequest, maxFileSizeInBytes); - if (req.hasFileUploadException()) { + VitroRequest request = new VitroRequest(req); + if (request.hasFileSizeException()) { forwardToFileUploadError( - req.getFileUploadException().getLocalizedMessage(), + request.getFileSizeException().getLocalizedMessage(), req, response); return; } - Map> fileStreams = req.getFiles(); + Map> fileStreams = request.getFiles(); - VitroRequest request = new VitroRequest(req); LoginStatusBean loginBean = LoginStatusBean.getBean(request); try { String modelName = req.getParameter("modelName"); if(modelName!=null){ - loadRDF(req,request,response); + loadRDF(request,response); return; } } catch (Exception e) { @@ -234,15 +241,13 @@ public class RDFUploadController extends JenaIngestController { } } - public void loadRDF(FileUploadServletRequest req, - VitroRequest request, - HttpServletResponse response) - throws ServletException, IOException { - Map> fileStreams = req.getFiles(); + public void loadRDF(VitroRequest request, HttpServletResponse response) + throws ServletException { + Map> fileStreams = request.getFiles(); String filePath = fileStreams.get("filePath").get(0).getName(); fileStream = fileStreams.get("filePath").get(0); - String modelName = req.getParameter("modelName"); - String docLoc = req.getParameter("docLoc"); + String modelName = request.getParameter("modelName"); + String docLoc = request.getParameter("docLoc"); String languageStr = request.getParameter("language"); ModelMaker maker = getVitroJenaModelMaker(request); diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/search/controller/SearchServiceController.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/search/controller/SearchServiceController.java index 88175db88..490fff4ef 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/search/controller/SearchServiceController.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/search/controller/SearchServiceController.java @@ -23,7 +23,6 @@ import edu.cornell.mannlib.vitro.webapp.controller.freemarker.FreemarkerHttpServ import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.ExceptionResponseValues; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.ResponseValues; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.TemplateResponseValues; -import edu.cornell.mannlib.vitro.webapp.filestorage.uploadrequest.FileUploadServletRequest; import edu.cornell.mannlib.vitro.webapp.search.indexing.IndexBuilder; /** @@ -35,7 +34,10 @@ public class SearchServiceController extends FreemarkerHttpServlet { .getLog(SearchServiceController.class); /** Limit file size to 1 Gigabyte. */ - public static final int MAXIMUM_FILE_SIZE = 1024 * 1024 * 1024; + @Override + public long maximumMultipartFileSize() { + return 1024 * 1024 * 1024; + } /** * Handle the different actions. If not specified, the default action is to @@ -44,9 +46,6 @@ public class SearchServiceController extends FreemarkerHttpServlet { @Override protected ResponseValues processRequest(VitroRequest req) { try { - req = new VitroRequest(FileUploadServletRequest.parseRequest(req, - MAXIMUM_FILE_SIZE)); - // Check the authorization here, because we don't want to redirect // to the login page if they are not authorized. (The file upload // would be lost. diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/search/controller/UpdateUrisInIndex.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/search/controller/UpdateUrisInIndex.java index 5c3e1636f..f723613ac 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/search/controller/UpdateUrisInIndex.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/search/controller/UpdateUrisInIndex.java @@ -2,8 +2,6 @@ package edu.cornell.mannlib.vitro.webapp.search.controller; -import static edu.cornell.mannlib.vitro.webapp.filestorage.uploadrequest.FileUploadServletRequest.FILE_ITEM_MAP; - import java.io.IOException; import java.io.InputStreamReader; import java.io.Reader; @@ -21,6 +19,7 @@ import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; import edu.cornell.mannlib.vitro.webapp.search.indexing.IndexBuilder; /** @@ -41,9 +40,7 @@ public class UpdateUrisInIndex { */ protected int doUpdateUris(HttpServletRequest req, IndexBuilder builder) throws ServletException, IOException { - @SuppressWarnings("unchecked") - Map> map = (Map>) req - .getAttribute(FILE_ITEM_MAP); + Map> map = new VitroRequest(req).getFiles(); if (map == null) { throw new ServletException("Expected Multipart Content"); } @@ -54,13 +51,13 @@ public class UpdateUrisInIndex { for (String name : map.keySet()) { for (FileItem item : map.get(name)) { log.debug("Found " + item.getSize() + " byte file for '" + name + "'"); - uriCount += processFileItem(builder, name, item, enc); + uriCount += processFileItem(builder, item, enc); } } return uriCount; } - private int processFileItem(IndexBuilder builder, String name, + private int processFileItem(IndexBuilder builder, FileItem item, Charset enc) throws IOException { int count = 0; Reader reader = new InputStreamReader(item.getInputStream(), enc.name());