Class ResourceSettings
- java.lang.Object
-
- org.apache.wicket.settings.ResourceSettings
-
- All Implemented Interfaces:
IPropertiesFactoryContext
public class ResourceSettings extends Object implements IPropertiesFactoryContext
Class for resource related settingsresourcePollFrequency (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 especiallyLocalizedImageResource
.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)
andComponent.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 Summary
Constructors Constructor Description ResourceSettings(Application application)
Configures Wicket's default ResourceLoaders.
For an example inFooApplication
letbar.Foo
extendComponent
, 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)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description ResourceSettings
addResourceFactory(String name, IResourceFactory resourceFactory)
Adds a resource factory to the list of factories to consult when generating resources automaticallyIResourceCachingStrategy
getCachingStrategy()
gets the resource caching strategyICssCompressor
getCssCompressor()
Get the CSS compressor to remove comments and whitespace characters from css resourcesDuration
getDefaultCacheDuration()
Get the the default cache duration for resources.IFileCleaner
getFileCleaner()
Comparator<? super ResourceAggregator.RecordedHeaderItem>
getHeaderItemComparator()
IJavaScriptCompressor
getJavaScriptCompressor()
Get the javascript compressor to remove comments and whitespace characters from javascriptsLocalizer
getLocalizer()
Get the application's localizer.IPackageResourceGuard
getPackageResourceGuard()
Gets thepackage resource guard
.String
getParentFolderPlaceholder()
Placeholder string for '..' within resource urls (which will be crippled by the browser and not work anymore).IPropertiesFactory
getPropertiesFactory()
Get the property factory which will be used to load property filesIResourceFactory
getResourceFactory(String name)
List<IResourceFinder>
getResourceFinders()
Gets the resource finders to use when searching for resources.Duration
getResourcePollFrequency()
IResourceStreamLocator
getResourceStreamLocator()
IModificationWatcher
getResourceWatcher(boolean start)
List<IStringResourceLoader>
getStringResourceLoaders()
boolean
getThrowExceptionOnMissingResource()
boolean
getUseDefaultOnMissingResource()
boolean
getUseMinifiedResources()
boolean
isEncodeJSessionId()
A flag indicating whether static resources should have jsessionid encoded in their url.ResourceSettings
setCachingStrategy(IResourceCachingStrategy strategy)
sets the resource caching strategyICssCompressor
setCssCompressor(ICssCompressor compressor)
Set the CSS compressor implemententation use e.g.ResourceSettings
setDefaultCacheDuration(Duration duration)
Set the the default cache duration for resources.ResourceSettings
setEncodeJSessionId(boolean encodeJSessionId)
Sets a flag indicating whether the jsessionid should be encoded in the url for resources implementingIStaticCacheableResource
when the cookies are disabled and there is an active http session.ResourceSettings
setFileCleaner(IFileCleaner fileUploadCleaner)
Sets a cleaner that can be used to remove files asynchronously.ResourceSettings
setHeaderItemComparator(Comparator<? super ResourceAggregator.RecordedHeaderItem> headerItemComparator)
Sets the comparator used by the resource aggregator for sorting header items.IJavaScriptCompressor
setJavaScriptCompressor(IJavaScriptCompressor compressor)
Set the javascript compressor implemententation use e.g.ResourceSettings
setLocalizer(Localizer localizer)
Sets the localizer which will be used to find property values.ResourceSettings
setPackageResourceGuard(IPackageResourceGuard packageResourceGuard)
Sets thepackage resource guard
.ResourceSettings
setParentFolderPlaceholder(String sequence)
Placeholder string for '..' within resource urls (which will be crippled by the browser and not work anymore).ResourceSettings
setPropertiesFactory(IPropertiesFactory factory)
Set the property factory which will be used to load property filesResourceSettings
setResourceFinders(List<IResourceFinder> resourceFinders)
Sets the finders to use when searching for resources.ResourceSettings
setResourcePollFrequency(Duration resourcePollFrequency)
Sets the resource polling frequency.ResourceSettings
setResourceStreamLocator(IResourceStreamLocator resourceStreamLocator)
/** Sets the resource stream locator for this application Consider wrappingresourceStreamLocator
inCachingResourceStreamLocator
.ResourceSettings
setResourceWatcher(IModificationWatcher watcher)
Sets the resource watcherResourceSettings
setThrowExceptionOnMissingResource(boolean throwExceptionOnMissingResource)
ResourceSettings
setUseDefaultOnMissingResource(boolean useDefaultOnMissingResource)
ResourceSettings
setUseMinifiedResources(boolean useMinifiedResources)
Sets whether to use pre-minified resources when available.
-
-
-
Constructor Detail
-
ResourceSettings
public ResourceSettings(Application application)
Configures Wicket's default ResourceLoaders.
For an example inFooApplication
letbar.Foo
extendComponent
, 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 factoryresourceFactory
- The resource factory to add- Returns:
this
object for chaining
-
getLocalizer
public Localizer getLocalizer()
Description copied from interface:IPropertiesFactoryContext
Get the application's localizer. to modify the way Wicket resolves keys to localized messages you can add custom resource loaders to the list returned bygetStringResourceLoaders()
.- Specified by:
getLocalizer
in interfaceIPropertiesFactoryContext
- Returns:
- The application wide localizer instance
-
getPackageResourceGuard
public IPackageResourceGuard getPackageResourceGuard()
Gets thepackage resource guard
.- Returns:
- The package resource guard
-
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<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.
-
getResourceStreamLocator
public IResourceStreamLocator getResourceStreamLocator()
- Specified by:
getResourceStreamLocator
in interfaceIPropertiesFactoryContext
- Returns:
- Resource locator for this application
-
getResourceWatcher
public IModificationWatcher getResourceWatcher(boolean start)
- Specified by:
getResourceWatcher
in interfaceIPropertiesFactoryContext
- 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(IModificationWatcher watcher)
Sets the resource watcher- Parameters:
watcher
-- Returns:
this
object for chaining
-
getFileCleaner
public IFileCleaner getFileCleaner()
- Returns:
- the a cleaner which can be used to remove files asynchronously.
-
setFileCleaner
public ResourceSettings setFileCleaner(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 benull
- 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
-
setPackageResourceGuard
public ResourceSettings setPackageResourceGuard(IPackageResourceGuard packageResourceGuard)
Sets thepackage resource guard
.- Parameters:
packageResourceGuard
- The package resource guard- Returns:
this
object for chaining
-
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<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 bygetResourceFinders()
. 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 ornull
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 wrappingresourceStreamLocator
inCachingResourceStreamLocator
. This way the locator will not be asked more than once forIResourceStream
s 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. byJavaScriptPackageResource
. 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. byCssPackageResource
. 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 aIPackageResourceGuard
implementation such asPackageResourceGuard
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 isnull
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 aIPackageResourceGuard
implementation such asPackageResourceGuard
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
-
setCachingStrategy
public ResourceSettings setCachingStrategy(IResourceCachingStrategy strategy)
sets the resource caching strategy- Parameters:
strategy
- instance of resource caching strategy- Returns:
this
object for chaining- See Also:
IResourceCachingStrategy
-
setUseMinifiedResources
public ResourceSettings setUseMinifiedResources(boolean useMinifiedResources)
Sets whether to use pre-minified resources when available. Minified resources are detected by name. The minified version ofx.js
is expected to be calledx.min.js
. For css files, the same convention is used:x.min.css
is the minified version ofx.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.
-
getHeaderItemComparator
public Comparator<? super ResourceAggregator.RecordedHeaderItem> getHeaderItemComparator()
- Returns:
- The comparator used to sort header items.
-
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 thePriorityFirstComparator
.- 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 implementingIStaticCacheableResource
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 implementingIStaticCacheableResource
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
-
-