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 -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected static final Stringadvanced.properties key for setting the allowed extensions when using load from jar (loading with the class loader)protected static final Stringprotected static final Stringprotected static final com.google.common.base.Splitterprotected static final StringThis 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 final Stringprotected static final Stringprotected static final Stringprotected static final Stringprotected Stringprotected String[]static final Stringprotected static String[]protected static final Stringstatic final StringFields inherited from class org.springframework.web.filter.GenericFilterBean
logger -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidaddContentDisposition(javax.servlet.http.HttpServletRequest httpRequest, javax.servlet.http.HttpServletResponse httpResponse, String resourcePath) protected voidaddContentType(javax.servlet.http.HttpServletResponse httpResponse, MediaFilterLogicContext ctx) protected voidaddContentType(javax.servlet.http.HttpServletResponse httpResponse, Iterable<String> mediaContext, String resourcePath) Deprecated, for removal: This API element is subject to removal in a future version.createLegacyLocalMediaWebUrlContext(javax.servlet.http.HttpServletRequest httpRequest) createLocalMediawebUrlContext(String encodedMediaCtx) protected StringdecodeBase64(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, Iterable<String> mediaContext) Filters media.protected voiddoFilterMedia(javax.servlet.http.HttpServletRequest httpRequest, javax.servlet.http.HttpServletResponse httpResponse, Iterable<String> mediaContext, String resourcePath) Deprecated, for removal: This API element is subject to removal in a future version.since 1811protected MediaModelfindMediaModel(String mediaPKString) protected StringgenerateETag(String location) getAllowedExtensions(String configParameter) protected ConfigIntfprotected StringgetContextPart(WebAppMediaFilter.ContextPart contextPart, Iterable<String> mediaContext) protected Integerprotected StringgetLegacyResourcePath(javax.servlet.http.HttpServletRequest httpRequest) protected StringgetLocalMediaWebUrlContextParam(javax.servlet.http.HttpServletRequest httpRequest) protected InputStreamgetMediaAsStream(String folderQualifier, String location) Deprecated, for removal: This API element is subject to removal in a future version.protected MediaManager.InputStreamWithSizegetMediaAsStreamWithSize(String folderQualifier, String location) getMediaContext(javax.servlet.http.HttpServletRequest httpRequest) protected DefaultMediaFilterLogicprotected MediaManagerprotected StringgetRealFileNameFromResource(String resourcePath) protected InputStreamgetResourceAsStream(String resourceName) protected StringgetResourcePath(javax.servlet.http.HttpServletRequest httpRequest) protected booleanisAccessDenied(MediaModel mediaModel) protected booleanisAddContentDisposition(javax.servlet.http.HttpServletRequest httpRequest) protected booleanisAddContentDisposition(javax.servlet.http.HttpServletRequest httpRequest, String resourcePath) protected booleanisBasedOnPrettyUrl(Iterable<String> mediaContext) protected booleanisDeniedByExtensionForClassloader(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 booleanprotected booleanprotected booleanisNotHttpRequestResponse(javax.servlet.ServletRequest request, javax.servlet.ServletResponse response) protected booleanisResourceFromClassLoader(String resourcePath) protected booleanisSecureMedia(String resourcePath) protected voidloadFromClassLoader(javax.servlet.http.HttpServletResponse httpResponse, String resourcePath) protected voidloadFromMediaStorage(javax.servlet.http.HttpServletResponse httpResponse, Iterable<String> mediaContext) protected voidmodifyResponseWithConfiguredHeaders(javax.servlet.http.HttpServletResponse httpResponse) protected voidmodifyResponseWithConfiguredHeaders(javax.servlet.http.HttpServletResponse httpResponse, String mime) protected voidmodifyResponseWithConfiguredHeaders(javax.servlet.http.HttpServletResponse httpResponse, String mime, String folder) protected voidprocessSecureMedia(javax.servlet.http.HttpServletRequest httpRequest, javax.servlet.http.HttpServletResponse httpResponse) protected voidprocessStandardResponse(javax.servlet.http.HttpServletRequest httpRequest, javax.servlet.http.HttpServletResponse httpResponse, Iterable<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, Exception exception) protected voidsendForbiddenResponseStatus(javax.servlet.http.HttpServletResponse httpResponse, Exception exception) protected voidsendResourceNotFoundResponseStatus(javax.servlet.http.HttpServletResponse httpResponse, Exception exception) voidsetAddContextPath(boolean addContextPath) voidsetMediaPermissionService(MediaPermissionService mediaPermissionService) voidsetMediaService(MediaService mediaService) voidsetModelService(ModelService modelService) protected voidsetPublicURLRendererForThread(javax.servlet.http.HttpServletRequest httpRequest) voidprotected voidsetSecureURLRendererForThread(javax.servlet.http.HttpServletRequest httpRequest) voidsetUserService(UserService userService) protected voidsetXContentTypeOptionsHeader(javax.servlet.http.HttpServletResponse httpResponse) splitLegacyPath(String path) protected voidprotected voidprotected voidprotected voidverifyHashForLocation(String folderQualifier, String location, String storedHash) Deprecated, for removal: This API element is subject to removal in a future version.since 2011, useverifyHash(MediaFilterLogicContext)insteadMethods inherited from class org.springframework.web.filter.GenericFilterBean
addRequiredProperty, afterPropertiesSet, createEnvironment, getEnvironment, getFilterConfig, getFilterName, getServletContext, init, initBeanWrapper, initFilterBean, setBeanName, setEnvironment, setServletContext
-
Field Details
-
MEDIAS_RESOURCE_PATH_PREFIX
- See Also:
-
SECURE_MEDIAS_RESOURCE_PATH_PREFIX_PATTERN
- See Also:
-
CONTENT_TYPE_TEXT_PLAIN
- See Also:
-
CONTENT_DISPOSITION
- See Also:
-
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
- See Also:
-
HEADER_IF_NONE_MATCH
- See Also:
-
HEADER_X_CONTENT_OPTIONS
- See Also:
-
NOSNIFF
- See Also:
-
CTX_SPLITTER
protected static final com.google.common.base.Splitter CTX_SPLITTER -
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
-
MEDIAS_RESOURCE_PATH_PREFIXES
-
MEDIAS_CUSTOM_RESOURCE_PATH_PREFIX
-
MEDIAS_CUSTOM_RESOURCE_PATH_PREFIXES
-
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:
IOExceptionjavax.servlet.ServletException
-
isMedia
-
isSecureMedia
-
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 1811Filters media.- Parameters:
httpRequest-httpResponse-mediaContext-resourcePath-- Throws:
IOExceptionjavax.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:
IOExceptionjavax.servlet.ServletException
-
processSecureMedia
protected void processSecureMedia(javax.servlet.http.HttpServletRequest httpRequest, javax.servlet.http.HttpServletResponse httpResponse) throws IOException - Throws:
IOException
-
findMediaModel
-
isAccessDenied
-
getMediaContext
-
isLegacyPrettyUrlSupport
protected boolean isLegacyPrettyUrlSupport() -
createLegacyLocalMediaWebUrlContext
-
splitLegacyPath
-
getFirstEssentialOrdinal
-
getLegacyResourcePath
-
createLocalMediawebUrlContext
-
getLocalMediaWebUrlContextParam
-
generateETag
-
getResourcePath
-
processStandardResponse
protected void processStandardResponse(javax.servlet.http.HttpServletRequest httpRequest, javax.servlet.http.HttpServletResponse httpResponse, Iterable<String> mediaContext) throws IOException, javax.servlet.ServletException - Throws:
IOExceptionjavax.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 tohttpResponse. 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.since 2011, useaddContentType(HttpServletResponse, MediaFilterLogicContext) -
addContentType
protected void addContentType(javax.servlet.http.HttpServletResponse httpResponse, MediaFilterLogicContext ctx) -
getMediaFilterLogic
-
isResourceFromClassLoader
-
getRealFileNameFromResource
-
loadFromClassLoader
protected void loadFromClassLoader(javax.servlet.http.HttpServletResponse httpResponse, String resourcePath) throws IOException - Throws:
IOException
-
isDeniedByExtensionForClassloader
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
-
loadFromMediaStorage
protected void loadFromMediaStorage(javax.servlet.http.HttpServletResponse httpResponse, Iterable<String> mediaContext) throws IOException - Throws:
IOException
-
verifyHash
-
isBasedOnPrettyUrl
-
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, useverifyHash(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
-
decodeBase64
-
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
-
modifyResponseWithConfiguredHeaders
protected void modifyResponseWithConfiguredHeaders(javax.servlet.http.HttpServletResponse httpResponse) -
modifyResponseWithConfiguredHeaders
-
modifyResponseWithConfiguredHeaders
protected void modifyResponseWithConfiguredHeaders(javax.servlet.http.HttpServletResponse httpResponse, String mime) -
setXContentTypeOptionsHeader
protected void setXContentTypeOptionsHeader(javax.servlet.http.HttpServletResponse httpResponse) -
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
-
setMediaPermissionService
-
setUserService
-
setMediaService
-
setAddContextPath
public void setAddContextPath(boolean addContextPath) -
setSecureMediasResourcePathPrefix
-
addContentType(HttpServletResponse, MediaFilterLogicContext)