org.springframework.web.servlet.resource

Class AppCacheManifestTransformer

  • All Implemented Interfaces:
    ResourceTransformer


    public class AppCacheManifestTransformer
    extends ResourceTransformerSupport
    A ResourceTransformer implementation that helps handling resources within HTML5 AppCache manifests for HTML5 offline applications.

    This transformer:

    • modifies links to match the public URL paths that should be exposed to clients, using configured ResourceResolver strategies
    • appends a comment in the manifest, containing a Hash (e.g. "# Hash: 9de0f09ed7caf84e885f1f0f11c7e326"), thus changing the content of the manifest in order to trigger an appcache reload in the browser.

    All files that have the ".appcache" file extension, or the extension given in the constructor, will be transformed by this class. This hash is computed using the content of the appcache manifest and the content of the linked resources; so changing a resource linked in the manifest or the manifest itself should invalidate the browser cache.

    In order to serve manifest files with the proper "text/manifest" content type, it is required to configure it with contentNegotiationConfigurer.mediaType("appcache", MediaType.valueOf("text/manifest") in a WebMvcConfigurer.

    Since:
    4.1
    Author:
    Brian Clozel
    See Also:
    HTML5 offline applications spec
    • Constructor Detail

      • AppCacheManifestTransformer

        public AppCacheManifestTransformer()
        Create an AppCacheResourceTransformer that transforms files with extension ".appcache".
      • AppCacheManifestTransformer

        public AppCacheManifestTransformer(java.lang.String fileExtension)
        Create an AppCacheResourceTransformer that transforms files with the extension given as a parameter.
    • Method Detail

      • transform

        public Resource transform(HttpServletRequest request,
                                  Resource resource,
                                  ResourceTransformerChain chain)
                           throws java.io.IOException
        Description copied from interface: ResourceTransformer
        Transform the given resource.
        Parameters:
        request - the current request
        resource - the resource to transform
        chain - the chain of remaining transformers to delegate to
        Returns:
        the transformed resource (never null)
        Throws:
        java.io.IOException - if the transformation fails