Class ResourceSettings

  • All Implemented Interfaces:
    IPropertiesFactoryContext

    public class ResourceSettings
    extends Object
    implements IPropertiesFactoryContext
    Class for resource related settings

    resourcePollFrequency (defaults to no polling frequency) - Frequency at which resources should be polled for changes.

    resourceFinders - Add/modify this to alter the search path for resources.

    useDefaultOnMissingResource (defaults to true) - Set to true to return a default value if available when a required string resource is not found. If set to false then the throwExceptionOnMissingResource flag is used to determine how to behave. If no default is available then this is the same as if this flag were false

    A ResourceStreamLocator - An Application's ResourceStreamLocator is used to find resources such as images or markup files. You can supply your own ResourceStreamLocator if your prefer to store your application's resources in a non-standard location (such as a different filesystem location, a particular JAR file or even a database) by overriding the getResourceLocator() method.

    Resource Factories - Resource factories can be used to create resources dynamically from specially formatted HTML tag attribute values. For more details, see IResourceFactory, DefaultButtonImageResourceFactory and especially LocalizedImageResource.

    A Localizer The getLocalizer() method returns an object encapsulating all of the functionality required to access localized resources. For many localization problems, even this will not be required, as there are convenience methods available to all components: Component.getString(String key) and Component.getString(String key, org.apache.wicket.model.IModel model).

    stringResourceLoaders - A chain of IStringResourceLoader instances that are searched in order to obtain string resources used during localization. By default the chain is set up to first search for resources against a particular component (e.g. page etc.) and then against the application.

    Author:
    Jonathan Locke, Chris Turner, Eelco Hillenius, Juergen Donnerstag, Johan Compagner, Igor Vaynberg (ivaynberg), Martijn Dashorst, James Carman
    • Constructor Detail

      • ResourceSettings

        public ResourceSettings​(Application application)
        Configures Wicket's default ResourceLoaders.
        For an example in FooApplication let bar.Foo extend Component, this results in the following ordering:
        component specific
        • bar/Foo.properties
        • org/apache/wicket/Component.properties
        package specific
        • bar/package.properties
        • package.properties (on Foo's class loader)
        • org/apache/wicket/package.properties
        • org/apache/package.properties
        • org/package.properties
        • package.properties (on Component's class loader)
        application specific
        • FooApplication.properties
        • Application.properties
        validator specific
        Initializer specific
        • bar.Foo.properties (Foo implementing IInitializer)
        Parameters:
        application -
    • Method Detail

      • addResourceFactory

        public ResourceSettings addResourceFactory​(String name,
                                                   IResourceFactory resourceFactory)
        Adds a resource factory to the list of factories to consult when generating resources automatically
        Parameters:
        name - The name to give to the factory
        resourceFactory - The resource factory to add
        Returns:
        this object for chaining
      • getResourceFinders

        public List<org.apache.wicket.util.file.IResourceFinder> getResourceFinders()
        Gets the resource finders to use when searching for resources. By default, a finder that looks in the classpath root is configured. WebApplication adds the classpath directory META-INF/resources. To configure additional search paths or filesystem paths, add to this list.
        Returns:
        Returns the resourceFinders.
      • getResourceWatcher

        public org.apache.wicket.util.watch.IModificationWatcher getResourceWatcher​(boolean start)
        Specified by:
        getResourceWatcher in interface IPropertiesFactoryContext
        Parameters:
        start - boolean if the resource watcher should be started if not already started.
        Returns:
        Resource watcher with polling frequency determined by setting, or null if no polling frequency has been set.
      • setResourceWatcher

        public ResourceSettings setResourceWatcher​(org.apache.wicket.util.watch.IModificationWatcher watcher)
        Sets the resource watcher
        Parameters:
        watcher -
        Returns:
        this object for chaining
      • getFileCleaner

        public org.apache.wicket.util.file.IFileCleaner getFileCleaner()
        Returns:
        the a cleaner which can be used to remove files asynchronously.
      • setFileCleaner

        public ResourceSettings setFileCleaner​(org.apache.wicket.util.file.IFileCleaner fileUploadCleaner)
        Sets a cleaner that can be used to remove files asynchronously.

        Used internally to delete the temporary files created by FileUpload functionality

        Parameters:
        fileUploadCleaner - the actual cleaner implementation. Can be null
        Returns:
        this object for chaining
      • getUseDefaultOnMissingResource

        public boolean getUseDefaultOnMissingResource()
        Returns:
        Whether to use a default value (if available) when a missing resource is requested
      • setLocalizer

        public ResourceSettings setLocalizer​(Localizer localizer)
        Sets the localizer which will be used to find property values.
        Parameters:
        localizer -
        Returns:
        this object for chaining
        Since:
        1.3.0
      • setResourceFinders

        public ResourceSettings setResourceFinders​(List<org.apache.wicket.util.file.IResourceFinder> resourceFinders)
        Sets the finders to use when searching for resources. By default, the resources are located on the classpath. To add additional search paths, add to the list given by getResourceFinders(). Use this method if you want to completely exchange the list of resource finders.
        Parameters:
        resourceFinders - The resourceFinders to set
        Returns:
        this object for chaining
      • setResourcePollFrequency

        public ResourceSettings setResourcePollFrequency​(Duration resourcePollFrequency)
        Sets the resource polling frequency. This is the duration of time between checks of resource modification times. If a resource, such as an HTML file, has changed, it will be reloaded. The default is one second in 'development' mode and 'never' in deployment mode.
        Parameters:
        resourcePollFrequency - Frequency at which to poll resources or null if polling should be disabled
        Returns:
        this object for chaining
      • setUseDefaultOnMissingResource

        public ResourceSettings setUseDefaultOnMissingResource​(boolean useDefaultOnMissingResource)
        Parameters:
        useDefaultOnMissingResource - Whether to use a default value (if available) when a missing resource is requested
        Returns:
        this object for chaining
      • getDefaultCacheDuration

        public final Duration getDefaultCacheDuration()
        Get the the default cache duration for resources.

        Returns:
        cache duration (Duration.NONE will be returned if caching is disabled)
        See Also:
        Duration.NONE
      • setDefaultCacheDuration

        public final ResourceSettings setDefaultCacheDuration​(Duration duration)
        Set the the default cache duration for resources.

        Based on RFC-2616 this should not exceed one year. If you set Duration.NONE caching will be disabled.

        Parameters:
        duration - default cache duration in seconds
        Returns:
        this object for chaining
        See Also:
        Duration.NONE, WebResponse.MAX_CACHE_DURATION
      • getCssCompressor

        public ICssCompressor getCssCompressor()
        Get the CSS compressor to remove comments and whitespace characters from css resources
        Returns:
        whether the comments and whitespace characters will be stripped from resources served through CssPackageResource. Null is a valid value.
      • setCssCompressor

        public ICssCompressor setCssCompressor​(ICssCompressor compressor)
        Set the CSS compressor implemententation use e.g. by CssPackageResource. A typical implementation will remove comments and whitespace. But a no-op implementation is available as well.
        Parameters:
        compressor - The implementation to be used
        Returns:
        The old value
      • getParentFolderPlaceholder

        public String getParentFolderPlaceholder()
        Placeholder string for '..' within resource urls (which will be crippled by the browser and not work anymore). Note that by default the placeholder string is ::. Resources are protected by a IPackageResourceGuard implementation such as PackageResourceGuard which you may use or extend based on your needs.
        Returns:
        placeholder
      • setParentFolderPlaceholder

        public ResourceSettings setParentFolderPlaceholder​(String sequence)
        Placeholder string for '..' within resource urls (which will be crippled by the browser and not work anymore). Note that by default the placeholder string is null and thus will not allow to access parent folders. That is by purpose and for security reasons (see Wicket-1992). In case you really need it, a good value for placeholder would e.g. be "$up$". Resources additionally are protected by a IPackageResourceGuard implementation such as PackageResourceGuard which you may use or extend based on your needs.
        Parameters:
        sequence - character sequence which must not be ambiguous within urls
        Returns:
        this object for chaining
        See Also:
        getParentFolderPlaceholder()
      • setUseMinifiedResources

        public ResourceSettings setUseMinifiedResources​(boolean useMinifiedResources)
        Sets whether to use pre-minified resources when available. Minified resources are detected by name. The minified version of x.js is expected to be called x.min.js. For css files, the same convention is used: x.min.css is the minified version of x.css. When this is null, minified resources will only be used in deployment configuration.
        Parameters:
        useMinifiedResources - The new value for the setting
        Returns:
        this object for chaining
      • getUseMinifiedResources

        public boolean getUseMinifiedResources()
        Returns:
        Whether pre-minified resources will be used.
      • isEncodeJSessionId

        public boolean isEncodeJSessionId()
        A flag indicating whether static resources should have jsessionid encoded in their url.
        Returns:
        true if the jsessionid should be encoded in the url for resources implementing IStaticCacheableResource when the cookies are disabled and there is an active http session.
      • setEncodeJSessionId

        public ResourceSettings setEncodeJSessionId​(boolean encodeJSessionId)
        Sets a flag indicating whether the jsessionid should be encoded in the url for resources implementing IStaticCacheableResource when the cookies are disabled and there is an active http session.
        Parameters:
        encodeJSessionId - true when the jsessionid should be encoded, false - otherwise
        Returns:
        this object for chaining