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
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static classWebAppMediaFilter.ContextPart
-
Field Summary
Fields Modifier and Type Field Description protected static java.lang.StringALLOWED_EXT_FOR_CLadvanced.properties key for setting the allowed extensions when using load from jar (loading with the class loader)protected static java.lang.StringCONTENT_DISPOSITIONprotected static java.lang.StringCONTENT_TYPE_TEXT_PLAINprotected static com.google.common.base.SplitterCTX_SPLITTERprotected static java.lang.StringFORCE_DOWNLOAD_DIALOG_FILE_EXTENSIONSThis 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.protected static java.lang.StringHEADER_ETAGprotected static java.lang.StringHEADER_IF_NONE_MATCHstatic java.lang.StringMEDIAS_RESOURCE_PATH_PREFIXprotected static java.lang.String[]MEDIAS_RESOURCE_PATH_PREFIXESstatic java.lang.StringSECURE_MEDIAS_RESOURCE_PATH_PREFIX_PATTERN
-
Constructor Summary
Constructors Constructor Description WebAppMediaFilter()
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description protected voidaddContentDisposition(javax.servlet.http.HttpServletRequest httpRequest, javax.servlet.http.HttpServletResponse httpResponse, java.lang.String resourcePath)protected voidaddContentType(javax.servlet.http.HttpServletResponse httpResponse, java.lang.Iterable<java.lang.String> mediaContext, java.lang.String resourcePath)protected java.lang.Iterable<java.lang.String>createLegacyLocalMediaWebUrlContext(javax.servlet.http.HttpServletRequest httpRequest)protected java.lang.Iterable<java.lang.String>createLocalMediawebUrlContext(java.lang.String encodedMediaCtx)protected java.lang.StringdecodeBase64(java.lang.String value)voiddestroy()voiddoFilter(javax.servlet.ServletRequest request, javax.servlet.ServletResponse response, javax.servlet.FilterChain chain)protected voiddoFilterMedia(javax.servlet.http.HttpServletRequest httpRequest, javax.servlet.http.HttpServletResponse httpResponse, java.lang.Iterable<java.lang.String> mediaContext)Filters media.protected voiddoFilterMedia(javax.servlet.http.HttpServletRequest httpRequest, javax.servlet.http.HttpServletResponse httpResponse, java.lang.Iterable<java.lang.String> mediaContext, java.lang.String resourcePath)Deprecated.since 1811protected MediaModelfindMediaModel(java.lang.String mediaPKString)protected java.lang.StringgenerateETag(java.lang.String location)protected java.util.Set<java.lang.String>getAllowedExtensions(java.lang.String configParameter)protected ConfigIntfgetConfig()protected java.lang.StringgetContextPart(WebAppMediaFilter.ContextPart contextPart, java.lang.Iterable<java.lang.String> mediaContext)protected java.lang.StringgetLegacyResourcePath(javax.servlet.http.HttpServletRequest httpRequest)protected java.lang.StringgetLocalMediaWebUrlContextParam(javax.servlet.http.HttpServletRequest httpRequest)protected java.io.InputStreamgetMediaAsStream(java.lang.String folderQualifier, java.lang.String location)Deprecated, for removal: This API element is subject to removal in a future version.protected MediaManager.InputStreamWithSizegetMediaAsStreamWithSize(java.lang.String folderQualifier, java.lang.String location)protected java.lang.Iterable<java.lang.String>getMediaContext(javax.servlet.http.HttpServletRequest httpRequest)protected MediaManagergetMediaManager()protected java.lang.StringgetRealFileNameFromResource(java.lang.String resourcePath)protected java.io.InputStreamgetResourceAsStream(java.lang.String resourceName)protected java.lang.StringgetResourcePath(javax.servlet.http.HttpServletRequest httpRequest)protected booleanisAccessDenied(MediaModel mediaModel)protected booleanisAddContentDisposition(javax.servlet.http.HttpServletRequest httpRequest)protected booleanisAddContentDisposition(javax.servlet.http.HttpServletRequest httpRequest, java.lang.String resourcePath)protected booleanisDeniedByExtensionForClassloader(java.lang.String resourceName)Returnstrueif the extension of given resource name is NOT defined in the advanced.properties with the key "media.allowed.extensions.for.ClassLoader".protected booleanisLegacyPrettyUrlSupport()protected booleanisMedia(java.lang.String resourcePath)protected booleanisNotHttpRequestResponse(javax.servlet.ServletRequest request, javax.servlet.ServletResponse response)protected booleanisResourceFromClassLoader(java.lang.String resourcePath)protected booleanisSecureMedia(java.lang.String resourcePath)protected voidloadFromClassLoader(javax.servlet.http.HttpServletResponse httpResponse, java.lang.String resourcePath)protected voidloadFromMediaStorage(javax.servlet.http.HttpServletResponse httpResponse, java.lang.Iterable<java.lang.String> mediaContext)protected voidprocessSecureMedia(javax.servlet.http.HttpServletRequest httpRequest, javax.servlet.http.HttpServletResponse httpResponse)protected voidprocessStandardResponse(javax.servlet.http.HttpServletRequest httpRequest, javax.servlet.http.HttpServletResponse httpResponse, java.lang.Iterable<java.lang.String> mediaContext)protected voidreadConfiguredHeaderParamsAndWriteToResponse(javax.servlet.http.HttpServletResponse httpResponse)Reads the defined http header parameters from the properties into the map and writes tohttpResponse.protected voidsendBadRequestResponseStatus(javax.servlet.http.HttpServletResponse httpResponse, java.lang.Exception exception)protected voidsendForbiddenResponseStatus(javax.servlet.http.HttpServletResponse httpResponse, java.lang.Exception exception)protected voidsendResourceNotFoundResponseStatus(javax.servlet.http.HttpServletResponse httpResponse, java.lang.Exception exception)voidsetAddContextPath(boolean addContextPath)voidsetMediaPermissionService(MediaPermissionService mediaPermissionService)voidsetMediaService(MediaService mediaService)voidsetModelService(ModelService modelService)protected voidsetPublicURLRendererForThread(javax.servlet.http.HttpServletRequest httpRequest)voidsetSecureMediasResourcePathPrefix(java.lang.String token)protected voidsetSecureURLRendererForThread(javax.servlet.http.HttpServletRequest httpRequest)voidsetUserService(UserService userService)protected java.lang.Iterable<java.lang.String>splitLegacyPath(java.lang.String path)protected voidunsetPublicURLRendererForThread()protected voidunsetSecureURLRendererForThread()protected voidverifyHashForLocation(java.lang.String folderQualifier, java.lang.String location, java.lang.String storedHash)
-
-
-
Field Detail
-
MEDIAS_RESOURCE_PATH_PREFIX
public static final java.lang.String MEDIAS_RESOURCE_PATH_PREFIX
- See Also:
- Constant Field Values
-
MEDIAS_RESOURCE_PATH_PREFIXES
protected static final java.lang.String[] MEDIAS_RESOURCE_PATH_PREFIXES
-
SECURE_MEDIAS_RESOURCE_PATH_PREFIX_PATTERN
public static final java.lang.String SECURE_MEDIAS_RESOURCE_PATH_PREFIX_PATTERN
- See Also:
- Constant Field Values
-
CONTENT_TYPE_TEXT_PLAIN
protected static final java.lang.String CONTENT_TYPE_TEXT_PLAIN
- See Also:
- Constant Field Values
-
CONTENT_DISPOSITION
protected static final java.lang.String CONTENT_DISPOSITION
- See Also:
- Constant Field Values
-
ALLOWED_EXT_FOR_CL
protected static final java.lang.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:
- Constant Field Values
-
HEADER_ETAG
protected static final java.lang.String HEADER_ETAG
- See Also:
- Constant Field Values
-
HEADER_IF_NONE_MATCH
protected static final java.lang.String HEADER_IF_NONE_MATCH
- See Also:
- Constant Field Values
-
CTX_SPLITTER
protected static final com.google.common.base.Splitter CTX_SPLITTER
-
FORCE_DOWNLOAD_DIALOG_FILE_EXTENSIONS
protected static final java.lang.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:
- Constant Field Values
-
-
Method Detail
-
doFilter
public void doFilter(javax.servlet.ServletRequest request, javax.servlet.ServletResponse response, javax.servlet.FilterChain chain) throws java.io.IOException, javax.servlet.ServletException- Throws:
java.io.IOExceptionjavax.servlet.ServletException
-
isMedia
protected boolean isMedia(java.lang.String resourcePath)
-
isSecureMedia
protected boolean isSecureMedia(java.lang.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 protected void doFilterMedia(javax.servlet.http.HttpServletRequest httpRequest, javax.servlet.http.HttpServletResponse httpResponse, java.lang.Iterable<java.lang.String> mediaContext, java.lang.String resourcePath) throws java.io.IOException, javax.servlet.ServletExceptionDeprecated.since 1811Filters media.- Parameters:
httpRequest-httpResponse-mediaContext-resourcePath-- Throws:
java.io.IOExceptionjavax.servlet.ServletException
-
doFilterMedia
protected void doFilterMedia(javax.servlet.http.HttpServletRequest httpRequest, javax.servlet.http.HttpServletResponse httpResponse, java.lang.Iterable<java.lang.String> mediaContext) throws java.io.IOException, javax.servlet.ServletExceptionFilters media.- Parameters:
httpRequest-httpResponse-mediaContext-- Throws:
java.io.IOExceptionjavax.servlet.ServletException
-
processSecureMedia
protected void processSecureMedia(javax.servlet.http.HttpServletRequest httpRequest, javax.servlet.http.HttpServletResponse httpResponse) throws java.io.IOException- Throws:
java.io.IOException
-
findMediaModel
protected MediaModel findMediaModel(java.lang.String mediaPKString)
-
isAccessDenied
protected boolean isAccessDenied(MediaModel mediaModel)
-
getMediaContext
protected java.lang.Iterable<java.lang.String> getMediaContext(javax.servlet.http.HttpServletRequest httpRequest)
-
isLegacyPrettyUrlSupport
protected boolean isLegacyPrettyUrlSupport()
-
createLegacyLocalMediaWebUrlContext
protected java.lang.Iterable<java.lang.String> createLegacyLocalMediaWebUrlContext(javax.servlet.http.HttpServletRequest httpRequest)
-
splitLegacyPath
protected java.lang.Iterable<java.lang.String> splitLegacyPath(java.lang.String path)
-
getLegacyResourcePath
protected java.lang.String getLegacyResourcePath(javax.servlet.http.HttpServletRequest httpRequest)
-
createLocalMediawebUrlContext
protected java.lang.Iterable<java.lang.String> createLocalMediawebUrlContext(java.lang.String encodedMediaCtx)
-
getLocalMediaWebUrlContextParam
protected java.lang.String getLocalMediaWebUrlContextParam(javax.servlet.http.HttpServletRequest httpRequest)
-
generateETag
protected java.lang.String generateETag(java.lang.String location)
-
getResourcePath
protected java.lang.String getResourcePath(javax.servlet.http.HttpServletRequest httpRequest)
-
processStandardResponse
protected void processStandardResponse(javax.servlet.http.HttpServletRequest httpRequest, javax.servlet.http.HttpServletResponse httpResponse, java.lang.Iterable<java.lang.String> mediaContext) throws java.io.IOException, javax.servlet.ServletException- Throws:
java.io.IOExceptionjavax.servlet.ServletException
-
readConfiguredHeaderParamsAndWriteToResponse
protected void readConfiguredHeaderParamsAndWriteToResponse(javax.servlet.http.HttpServletResponse httpResponse) throws java.io.UnsupportedEncodingExceptionReads the defined http header parameters from the properties into the map and writes tohttpResponse. And also register a config change listener to get the properties changes during runtime.- Throws:
java.io.UnsupportedEncodingException
-
addContentDisposition
protected void addContentDisposition(javax.servlet.http.HttpServletRequest httpRequest, javax.servlet.http.HttpServletResponse httpResponse, java.lang.String resourcePath)
-
isAddContentDisposition
protected boolean isAddContentDisposition(javax.servlet.http.HttpServletRequest httpRequest, java.lang.String resourcePath)
-
isAddContentDisposition
protected boolean isAddContentDisposition(javax.servlet.http.HttpServletRequest httpRequest)
-
addContentType
protected void addContentType(javax.servlet.http.HttpServletResponse httpResponse, java.lang.Iterable<java.lang.String> mediaContext, java.lang.String resourcePath)
-
isResourceFromClassLoader
protected boolean isResourceFromClassLoader(java.lang.String resourcePath)
-
getRealFileNameFromResource
protected java.lang.String getRealFileNameFromResource(java.lang.String resourcePath)
-
loadFromClassLoader
protected void loadFromClassLoader(javax.servlet.http.HttpServletResponse httpResponse, java.lang.String resourcePath) throws java.io.IOException- Throws:
java.io.IOException
-
isDeniedByExtensionForClassloader
protected boolean isDeniedByExtensionForClassloader(java.lang.String resourceName)
Returnstrueif 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:
falseif no extension is configured (every extension is allowed) or the extension of given resource is configured, otherwisetrue
-
getResourceAsStream
protected java.io.InputStream getResourceAsStream(java.lang.String resourceName)
-
loadFromMediaStorage
protected void loadFromMediaStorage(javax.servlet.http.HttpServletResponse httpResponse, java.lang.Iterable<java.lang.String> mediaContext) throws java.io.IOException- Throws:
java.io.IOException
-
verifyHashForLocation
protected void verifyHashForLocation(java.lang.String folderQualifier, java.lang.String location, java.lang.String storedHash)
-
getMediaAsStreamWithSize
protected MediaManager.InputStreamWithSize getMediaAsStreamWithSize(java.lang.String folderQualifier, java.lang.String location)
-
getMediaAsStream
@Deprecated(since="1905", forRemoval=true) protected java.io.InputStream getMediaAsStream(java.lang.String folderQualifier, java.lang.String location)Deprecated, for removal: This API element is subject to removal in a future version.
-
getMediaManager
protected MediaManager getMediaManager()
-
decodeBase64
protected java.lang.String decodeBase64(java.lang.String value)
-
getContextPart
protected java.lang.String getContextPart(WebAppMediaFilter.ContextPart contextPart, java.lang.Iterable<java.lang.String> mediaContext)
-
sendForbiddenResponseStatus
protected void sendForbiddenResponseStatus(javax.servlet.http.HttpServletResponse httpResponse, java.lang.Exception exception)
-
sendBadRequestResponseStatus
protected void sendBadRequestResponseStatus(javax.servlet.http.HttpServletResponse httpResponse, java.lang.Exception exception)
-
sendResourceNotFoundResponseStatus
protected void sendResourceNotFoundResponseStatus(javax.servlet.http.HttpServletResponse httpResponse, java.lang.Exception exception)
-
getAllowedExtensions
protected java.util.Set<java.lang.String> getAllowedExtensions(java.lang.String configParameter)
-
getConfig
protected ConfigIntf getConfig()
-
destroy
public void destroy()
- Specified by:
destroyin interfaceorg.springframework.beans.factory.DisposableBean- Specified by:
destroyin interfacejavax.servlet.Filter- Overrides:
destroyin classorg.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(java.lang.String token)
-
-