Class MultiPartRequestWrapper

java.lang.Object
jakarta.servlet.ServletRequestWrapper
jakarta.servlet.http.HttpServletRequestWrapper
org.apache.struts2.dispatcher.StrutsRequestWrapper
org.apache.struts2.dispatcher.multipart.MultiPartRequestWrapper
All Implemented Interfaces:
jakarta.servlet.http.HttpServletRequest, jakarta.servlet.ServletRequest

public class MultiPartRequestWrapper extends StrutsRequestWrapper

Parse a multipart request and provide a wrapper around the request. The parsing implementation used depends on the struts.multipart.parser setting. It should be set to a class which extends MultiPartRequest.

The struts.multipart.parser property should be set to jakarta for the Jakarta implementation, and cos for the Jason Hunter implementation.

The files are uploaded when the object is instantiated. If there are any errors they are logged using addError(LocalizedMessage). An action handling a multipart form should first check hasErrors() before doing any other processing.

An alternate implementation, PellMultiPartRequest, is provided as a plugin.

  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected static final org.apache.logging.log4j.Logger
     

    Fields inherited from interface jakarta.servlet.http.HttpServletRequest

    BASIC_AUTH, CLIENT_CERT_AUTH, DIGEST_AUTH, FORM_AUTH
  • Constructor Summary

    Constructors
    Constructor
    Description
    MultiPartRequestWrapper(MultiPartRequest multiPartRequest, jakarta.servlet.http.HttpServletRequest request, String saveDir, LocaleProvider provider)
     
    MultiPartRequestWrapper(MultiPartRequest multiPartRequest, jakarta.servlet.http.HttpServletRequest request, String saveDir, LocaleProvider provider, boolean disableRequestAttributeValueStackLookup)
    Process file downloads and log any errors.
  • Method Summary

    Modifier and Type
    Method
    Description
    protected void
    addError(LocalizedMessage anErrorMessage)
    Adds an error message when it isn't already added.
     
    void
     
    Get an array of content encoding for the specified input field name or null if no content type was specified.
    Returns a collection of any errors generated when parsing the multipart request.
    getFileNames(String fieldName)
    Get a String array of the file names for uploaded files
    Get an enumeration of the parameter names for uploaded files
    getFiles(String fieldName)
    Get a File for the given input field name.
    Get the filename(s) of the file(s) uploaded for the given input field name.
     
     
     
     
    boolean
    Returns true if any errors occured when parsing the HTTP multipart request, false otherwise.
    protected Enumeration<String>
    Merges 2 enumeration of parameters as one.
    protected void
    setLocale(jakarta.servlet.http.HttpServletRequest request)
     

    Methods inherited from class org.apache.struts2.dispatcher.StrutsRequestWrapper

    getAttribute

    Methods inherited from class jakarta.servlet.http.HttpServletRequestWrapper

    authenticate, changeSessionId, getAuthType, getContextPath, getCookies, getDateHeader, getHeader, getHeaderNames, getHeaders, getHttpServletMapping, getIntHeader, getMethod, getPart, getParts, getPathInfo, getPathTranslated, getQueryString, getRemoteUser, getRequestedSessionId, getRequestURI, getRequestURL, getServletPath, getSession, getSession, getTrailerFields, getUserPrincipal, isRequestedSessionIdFromCookie, isRequestedSessionIdFromURL, isRequestedSessionIdValid, isTrailerFieldsReady, isUserInRole, login, logout, newPushBuilder, upgrade

    Methods inherited from class jakarta.servlet.ServletRequestWrapper

    getAsyncContext, getAttributeNames, getCharacterEncoding, getContentLength, getContentLengthLong, getContentType, getDispatcherType, getInputStream, getLocalAddr, getLocale, getLocales, getLocalName, getLocalPort, getProtocol, getProtocolRequestId, getReader, getRemoteAddr, getRemoteHost, getRemotePort, getRequest, getRequestDispatcher, getRequestId, getScheme, getServerName, getServerPort, getServletConnection, getServletContext, isAsyncStarted, isAsyncSupported, isSecure, isWrapperFor, isWrapperFor, removeAttribute, setAttribute, setCharacterEncoding, setRequest, startAsync, startAsync

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface jakarta.servlet.ServletRequest

    getAsyncContext, getAttributeNames, getCharacterEncoding, getContentLength, getContentLengthLong, getContentType, getDispatcherType, getInputStream, getLocalAddr, getLocale, getLocales, getLocalName, getLocalPort, getProtocol, getProtocolRequestId, getReader, getRemoteAddr, getRemoteHost, getRemotePort, getRequestDispatcher, getRequestId, getScheme, getServerName, getServerPort, getServletConnection, getServletContext, isAsyncStarted, isAsyncSupported, isSecure, removeAttribute, setAttribute, setCharacterEncoding, startAsync, startAsync
  • Field Details

    • LOG

      protected static final org.apache.logging.log4j.Logger LOG
  • Constructor Details

    • MultiPartRequestWrapper

      public MultiPartRequestWrapper(MultiPartRequest multiPartRequest, jakarta.servlet.http.HttpServletRequest request, String saveDir, LocaleProvider provider, boolean disableRequestAttributeValueStackLookup)
      Process file downloads and log any errors.
      Parameters:
      multiPartRequest - Our MultiPartRequest object
      request - Our HttpServletRequest object
      saveDir - Target directory for any files that we save
      provider - locale provider
      disableRequestAttributeValueStackLookup - disable the request attribute value stack lookup
    • MultiPartRequestWrapper

      public MultiPartRequestWrapper(MultiPartRequest multiPartRequest, jakarta.servlet.http.HttpServletRequest request, String saveDir, LocaleProvider provider)
  • Method Details

    • setLocale

      protected void setLocale(jakarta.servlet.http.HttpServletRequest request)
    • buildErrorMessage

      protected LocalizedMessage buildErrorMessage(Throwable e, Object[] args)
    • getFileParameterNames

      public Enumeration<String> getFileParameterNames()
      Get an enumeration of the parameter names for uploaded files
      Returns:
      enumeration of parameter names for uploaded files
    • getContentTypes

      public String[] getContentTypes(String name)
      Get an array of content encoding for the specified input field name or null if no content type was specified.
      Parameters:
      name - input field name
      Returns:
      an array of content encoding for the specified input field name
    • getFiles

      public UploadedFile[] getFiles(String fieldName)
      Get a File for the given input field name.
      Parameters:
      fieldName - input field name
      Returns:
      a File[] object for files associated with the specified input field name
    • getFileNames

      public String[] getFileNames(String fieldName)
      Get a String array of the file names for uploaded files
      Parameters:
      fieldName - Field to check for file names.
      Returns:
      a String[] of file names for uploaded files
    • getFileSystemNames

      public String[] getFileSystemNames(String fieldName)
      Get the filename(s) of the file(s) uploaded for the given input field name. Returns null if the file is not found.
      Parameters:
      fieldName - input field name
      Returns:
      the filename(s) of the file(s) uploaded for the given input field name or null if name not found.
    • getParameter

      public String getParameter(String name)
      Specified by:
      getParameter in interface jakarta.servlet.ServletRequest
      Overrides:
      getParameter in class jakarta.servlet.ServletRequestWrapper
      See Also:
      • ServletRequest.getParameter(String)
    • getParameterMap

      public Map<String,String[]> getParameterMap()
      Specified by:
      getParameterMap in interface jakarta.servlet.ServletRequest
      Overrides:
      getParameterMap in class jakarta.servlet.ServletRequestWrapper
      See Also:
      • ServletRequest.getParameterMap()
    • getParameterNames

      public Enumeration<String> getParameterNames()
      Specified by:
      getParameterNames in interface jakarta.servlet.ServletRequest
      Overrides:
      getParameterNames in class jakarta.servlet.ServletRequestWrapper
      See Also:
      • ServletRequest.getParameterNames()
    • getParameterValues

      public String[] getParameterValues(String name)
      Specified by:
      getParameterValues in interface jakarta.servlet.ServletRequest
      Overrides:
      getParameterValues in class jakarta.servlet.ServletRequestWrapper
      See Also:
      • ServletRequest.getParameterValues(String)
    • hasErrors

      public boolean hasErrors()
      Returns true if any errors occured when parsing the HTTP multipart request, false otherwise.
      Returns:
      true if any errors occured when parsing the HTTP multipart request, false otherwise.
    • getErrors

      public Collection<LocalizedMessage> getErrors()
      Returns a collection of any errors generated when parsing the multipart request.
      Returns:
      the error Collection.
    • addError

      protected void addError(LocalizedMessage anErrorMessage)
      Adds an error message when it isn't already added.
      Parameters:
      anErrorMessage - the error message to report.
    • mergeParams

      protected Enumeration<String> mergeParams(Enumeration<String> params1, Enumeration<String> params2)
      Merges 2 enumeration of parameters as one.
      Parameters:
      params1 - the first enumeration.
      params2 - the second enumeration.
      Returns:
      a single Enumeration of all elements from both Enumerations.
    • cleanUp

      public void cleanUp()