Class WebAppMediaFilter

java.lang.Object
org.springframework.web.filter.GenericFilterBean
de.hybris.platform.servicelayer.web.WebAppMediaFilter
All Implemented Interfaces:
javax.servlet.Filter, org.springframework.beans.factory.Aware, org.springframework.beans.factory.BeanNameAware, org.springframework.beans.factory.DisposableBean, org.springframework.beans.factory.InitializingBean, org.springframework.context.EnvironmentAware, org.springframework.core.env.EnvironmentCapable, org.springframework.web.context.ServletContextAware

public class WebAppMediaFilter extends org.springframework.web.filter.GenericFilterBean
  • Field Details

    • MEDIAS_RESOURCE_PATH_PREFIX

      public static final String MEDIAS_RESOURCE_PATH_PREFIX
      See Also:
    • SECURE_MEDIAS_RESOURCE_PATH_PREFIX_PATTERN

      public static final String SECURE_MEDIAS_RESOURCE_PATH_PREFIX_PATTERN
      See Also:
    • CONTENT_TYPE_TEXT_PLAIN

      protected static final String CONTENT_TYPE_TEXT_PLAIN
      See Also:
    • CONTENT_DISPOSITION

      protected static final String CONTENT_DISPOSITION
      See Also:
    • ALLOWED_EXT_FOR_CL

      protected static final String ALLOWED_EXT_FOR_CL
      advanced.properties key for setting the allowed extensions when using load from jar (loading with the class loader)
      See Also:
    • HEADER_ETAG

      protected static final String HEADER_ETAG
      See Also:
    • HEADER_IF_NONE_MATCH

      protected static final String HEADER_IF_NONE_MATCH
      See Also:
    • HEADER_X_CONTENT_OPTIONS

      protected static final String HEADER_X_CONTENT_OPTIONS
      See Also:
    • NOSNIFF

      protected static final String NOSNIFF
      See Also:
    • CTX_SPLITTER

      protected static final com.google.common.base.Splitter CTX_SPLITTER
    • FORCE_DOWNLOAD_DIALOG_FILE_EXTENSIONS

      protected static final String FORCE_DOWNLOAD_DIALOG_FILE_EXTENSIONS
      This settings helps to deal with IE8 and IE9 behavior, in case that for a specific file extension a download dialog should pop up, even when 'preview' was pressed.
      See Also:
    • INTERNAL_PRETTY_URL_MARKER

      protected static final String INTERNAL_PRETTY_URL_MARKER
    • MEDIAS_RESOURCE_PATH_PREFIXES

      protected static String[] MEDIAS_RESOURCE_PATH_PREFIXES
    • MEDIAS_CUSTOM_RESOURCE_PATH_PREFIX

      protected String MEDIAS_CUSTOM_RESOURCE_PATH_PREFIX
    • MEDIAS_CUSTOM_RESOURCE_PATH_PREFIXES

      protected String[] MEDIAS_CUSTOM_RESOURCE_PATH_PREFIXES
    • firstEssentialOrdinal

      protected Supplier<Integer> firstEssentialOrdinal
  • Constructor Details

    • WebAppMediaFilter

      public WebAppMediaFilter()
  • Method Details

    • doFilter

      public void doFilter(javax.servlet.ServletRequest request, javax.servlet.ServletResponse response, javax.servlet.FilterChain chain) throws IOException, javax.servlet.ServletException
      Throws:
      IOException
      javax.servlet.ServletException
    • isMedia

      protected boolean isMedia(String resourcePath)
    • isSecureMedia

      protected boolean isSecureMedia(String resourcePath)
    • isNotHttpRequestResponse

      protected boolean isNotHttpRequestResponse(javax.servlet.ServletRequest request, javax.servlet.ServletResponse response)
    • setSecureURLRendererForThread

      protected void setSecureURLRendererForThread(javax.servlet.http.HttpServletRequest httpRequest)
    • unsetSecureURLRendererForThread

      protected void unsetSecureURLRendererForThread()
    • setPublicURLRendererForThread

      protected void setPublicURLRendererForThread(javax.servlet.http.HttpServletRequest httpRequest)
    • unsetPublicURLRendererForThread

      protected void unsetPublicURLRendererForThread()
    • doFilterMedia

      @Deprecated(since="1811", forRemoval=true) protected void doFilterMedia(javax.servlet.http.HttpServletRequest httpRequest, javax.servlet.http.HttpServletResponse httpResponse, Iterable<String> mediaContext, String resourcePath) throws IOException, javax.servlet.ServletException
      Deprecated, for removal: This API element is subject to removal in a future version.
      since 1811
      Filters media.
      Parameters:
      httpRequest -
      httpResponse -
      mediaContext -
      resourcePath -
      Throws:
      IOException
      javax.servlet.ServletException
    • doFilterMedia

      protected void doFilterMedia(javax.servlet.http.HttpServletRequest httpRequest, javax.servlet.http.HttpServletResponse httpResponse, Iterable<String> mediaContext) throws IOException, javax.servlet.ServletException
      Filters media.
      Parameters:
      httpRequest -
      httpResponse -
      mediaContext -
      Throws:
      IOException
      javax.servlet.ServletException
    • processSecureMedia

      protected void processSecureMedia(javax.servlet.http.HttpServletRequest httpRequest, javax.servlet.http.HttpServletResponse httpResponse) throws IOException
      Throws:
      IOException
    • findMediaModel

      protected MediaModel findMediaModel(String mediaPKString)
    • isAccessDenied

      protected boolean isAccessDenied(MediaModel mediaModel)
    • getMediaContext

      protected Iterable<String> getMediaContext(javax.servlet.http.HttpServletRequest httpRequest)
    • isLegacyPrettyUrlSupport

      protected boolean isLegacyPrettyUrlSupport()
    • createLegacyLocalMediaWebUrlContext

      protected Iterable<String> createLegacyLocalMediaWebUrlContext(javax.servlet.http.HttpServletRequest httpRequest)
    • splitLegacyPath

      protected Iterable<String> splitLegacyPath(String path)
    • getFirstEssentialOrdinal

      protected Integer getFirstEssentialOrdinal()
    • getLegacyResourcePath

      protected String getLegacyResourcePath(javax.servlet.http.HttpServletRequest httpRequest)
    • createLocalMediawebUrlContext

      protected Iterable<String> createLocalMediawebUrlContext(String encodedMediaCtx)
    • getLocalMediaWebUrlContextParam

      protected String getLocalMediaWebUrlContextParam(javax.servlet.http.HttpServletRequest httpRequest)
    • generateETag

      protected String generateETag(String location)
    • getResourcePath

      protected String getResourcePath(javax.servlet.http.HttpServletRequest httpRequest)
    • processStandardResponse

      protected void processStandardResponse(javax.servlet.http.HttpServletRequest httpRequest, javax.servlet.http.HttpServletResponse httpResponse, Iterable<String> mediaContext) throws IOException, javax.servlet.ServletException
      Throws:
      IOException
      javax.servlet.ServletException
    • readConfiguredHeaderParamsAndWriteToResponse

      protected void readConfiguredHeaderParamsAndWriteToResponse(javax.servlet.http.HttpServletResponse httpResponse) throws UnsupportedEncodingException
      Reads the defined http header parameters from the properties into the map and writes to httpResponse. And also register a config change listener to get the properties changes during runtime.
      Throws:
      UnsupportedEncodingException
    • addContentDisposition

      protected void addContentDisposition(javax.servlet.http.HttpServletRequest httpRequest, javax.servlet.http.HttpServletResponse httpResponse, String resourcePath)
    • isAddContentDisposition

      protected boolean isAddContentDisposition(javax.servlet.http.HttpServletRequest httpRequest, String resourcePath)
    • isAddContentDisposition

      protected boolean isAddContentDisposition(javax.servlet.http.HttpServletRequest httpRequest)
    • addContentType

      @Deprecated(since="2011", forRemoval=true) protected void addContentType(javax.servlet.http.HttpServletResponse httpResponse, Iterable<String> mediaContext, String resourcePath)
      Deprecated, for removal: This API element is subject to removal in a future version.
    • addContentType

      protected void addContentType(javax.servlet.http.HttpServletResponse httpResponse, MediaFilterLogicContext ctx)
    • getMediaFilterLogic

      protected DefaultMediaFilterLogic getMediaFilterLogic()
    • isResourceFromClassLoader

      protected boolean isResourceFromClassLoader(String resourcePath)
    • getRealFileNameFromResource

      protected String getRealFileNameFromResource(String resourcePath)
    • loadFromClassLoader

      protected void loadFromClassLoader(javax.servlet.http.HttpServletResponse httpResponse, String resourcePath) throws IOException
      Throws:
      IOException
    • isDeniedByExtensionForClassloader

      protected boolean isDeniedByExtensionForClassloader(String resourceName)
      Returns true if the extension of given resource name is NOT defined in the advanced.properties with the key "media.allowed.extensions.for.ClassLoader". This does only applies when getting the resources with the class loader.
      Returns:
      false if no extension is configured (every extension is allowed) or the extension of given resource is configured, otherwise true
    • getResourceAsStream

      protected InputStream getResourceAsStream(String resourceName)
    • loadFromMediaStorage

      protected void loadFromMediaStorage(javax.servlet.http.HttpServletResponse httpResponse, Iterable<String> mediaContext) throws IOException
      Throws:
      IOException
    • verifyHash

      protected void verifyHash(MediaFilterLogicContext ctx)
    • isBasedOnPrettyUrl

      protected boolean isBasedOnPrettyUrl(Iterable<String> mediaContext)
    • verifyHashForLocation

      @Deprecated(since="2011", forRemoval=true) protected void verifyHashForLocation(String folderQualifier, String location, String storedHash)
      Deprecated, for removal: This API element is subject to removal in a future version.
      since 2011, use verifyHash(MediaFilterLogicContext) instead
    • getMediaAsStreamWithSize

      protected MediaManager.InputStreamWithSize getMediaAsStreamWithSize(String folderQualifier, String location)
    • getMediaAsStream

      @Deprecated(since="1905", forRemoval=true) protected InputStream getMediaAsStream(String folderQualifier, String location)
      Deprecated, for removal: This API element is subject to removal in a future version.
    • getMediaManager

      protected MediaManager getMediaManager()
    • decodeBase64

      protected String decodeBase64(String value)
    • getContextPart

      protected String getContextPart(WebAppMediaFilter.ContextPart contextPart, Iterable<String> mediaContext)
    • sendForbiddenResponseStatus

      protected void sendForbiddenResponseStatus(javax.servlet.http.HttpServletResponse httpResponse, Exception exception)
    • sendBadRequestResponseStatus

      protected void sendBadRequestResponseStatus(javax.servlet.http.HttpServletResponse httpResponse, Exception exception)
    • sendResourceNotFoundResponseStatus

      protected void sendResourceNotFoundResponseStatus(javax.servlet.http.HttpServletResponse httpResponse, Exception exception)
    • getAllowedExtensions

      protected Set<String> getAllowedExtensions(String configParameter)
    • modifyResponseWithConfiguredHeaders

      protected void modifyResponseWithConfiguredHeaders(javax.servlet.http.HttpServletResponse httpResponse)
    • modifyResponseWithConfiguredHeaders

      protected void modifyResponseWithConfiguredHeaders(javax.servlet.http.HttpServletResponse httpResponse, String mime, String folder)
    • modifyResponseWithConfiguredHeaders

      protected void modifyResponseWithConfiguredHeaders(javax.servlet.http.HttpServletResponse httpResponse, String mime)
    • setXContentTypeOptionsHeader

      protected void setXContentTypeOptionsHeader(javax.servlet.http.HttpServletResponse httpResponse)
    • getConfig

      protected ConfigIntf getConfig()
    • destroy

      public void destroy()
      Specified by:
      destroy in interface org.springframework.beans.factory.DisposableBean
      Specified by:
      destroy in interface javax.servlet.Filter
      Overrides:
      destroy in class org.springframework.web.filter.GenericFilterBean
    • setModelService

      public void setModelService(ModelService modelService)
    • setMediaPermissionService

      public void setMediaPermissionService(MediaPermissionService mediaPermissionService)
    • setUserService

      public void setUserService(UserService userService)
    • setMediaService

      public void setMediaService(MediaService mediaService)
    • setAddContextPath

      public void setAddContextPath(boolean addContextPath)
    • setSecureMediasResourcePathPrefix

      public void setSecureMediasResourcePathPrefix(String token)