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
      • getPropertiesFactory

        public IPropertiesFactory getPropertiesFactory()
        Get the property factory which will be used to load property files
        Returns:
        PropertiesFactory
      • getResourceFactory

        public IResourceFactory getResourceFactory​(String name)
        Parameters:
        name - Name of the factory to get
        Returns:
        The IResourceFactory with the given name.
      • 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.
      • getResourcePollFrequency

        public Duration getResourcePollFrequency()
        Returns:
        Returns the resourcePollFrequency.
      • 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
      • getStringResourceLoaders

        public List<IStringResourceLoader> getStringResourceLoaders()
        Returns:
        mutable list of all available string resource loaders
      • getThrowExceptionOnMissingResource

        public boolean getThrowExceptionOnMissingResource()
      • 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
      • setPropertiesFactory

        public ResourceSettings setPropertiesFactory​(IPropertiesFactory factory)
        Set the property factory which will be used to load property files
        Parameters:
        factory -
        Returns:
        this object for chaining
      • 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
      • setResourceStreamLocator

        public ResourceSettings setResourceStreamLocator​(IResourceStreamLocator resourceStreamLocator)
        /** Sets the resource stream locator for this application Consider wrapping resourceStreamLocator in CachingResourceStreamLocator. This way the locator will not be asked more than once for IResourceStreams which do not exist.
        Parameters:
        resourceStreamLocator - new resource stream locator
        Returns:
        this object for chaining
        See Also:
        getResourceStreamLocator()
      • setThrowExceptionOnMissingResource

        public ResourceSettings setThrowExceptionOnMissingResource​(boolean throwExceptionOnMissingResource)
        Parameters:
        throwExceptionOnMissingResource -
        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
      • getJavaScriptCompressor

        public IJavaScriptCompressor getJavaScriptCompressor()
        Get the javascript compressor to remove comments and whitespace characters from javascripts
        Returns:
        whether the comments and whitespace characters will be stripped from resources served through JavaScriptPackageResource. Null is a valid value.
      • setJavaScriptCompressor

        public IJavaScriptCompressor setJavaScriptCompressor​(IJavaScriptCompressor compressor)
        Set the javascript compressor implemententation use e.g. by JavaScriptPackageResource. 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
      • 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()
      • getCachingStrategy

        public IResourceCachingStrategy getCachingStrategy()
        gets the resource caching strategy
        Returns:
        strategy
      • 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.
      • setHeaderItemComparator

        public ResourceSettings setHeaderItemComparator​(Comparator<? super ResourceAggregator.RecordedHeaderItem> headerItemComparator)
        Sets the comparator used by the resource aggregator for sorting header items. It should be noted that sorting header items may break resource dependencies. This comparator should therefore at least respect dependencies declared by resource references. By default, items are sorted using the PriorityFirstComparator.
        Parameters:
        headerItemComparator - The comparator used to sort header items, when null, header items will not be sorted.
        Returns:
        this object for chaining
      • 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