public interface

WebResourceManager

com.atlassian.plugin.webresource.WebResourceManager
Known Indirect Subclasses

Class Overview

Manage 'css', 'javascript' and other 'resources' that are usually linked at the top of pages using <script> and <link> tags.

By using the WebResourceManager, components can declare dependencies on javascript and css that they would otherwise have to embed inline (which means that it can't be cached, and are often duplicated in a page).

Summary

Nested Classes
interface WebResourceManager.IncludeMode This interface is deprecated. Since 2.2  
Fields
public static final WebResourceManager.IncludeMode DELAYED_INCLUDE_MODE This field is deprecated. Since 2.2. Use requireResource(String, Writer, UrlMode) instead.
public static final WebResourceManager.IncludeMode INLINE_INCLUDE_MODE This field is deprecated. Since 2.2. Use requireResource(String) instead.
Public Methods
<T> T executeInNewContext(Supplier<T> nestedExecution)
Executes a Supplier within a new WebResourceManager context.
String getRequiredResources(UrlMode urlMode)
This is the equivalent of calling getRequiredResources(UrlMode, WebResourceFilter) with the given url mode and a default filter that is dependent on the implementation.
@Deprecated String getRequiredResources()
This method is deprecated. As of 2.3.0, replaced by getRequiredResources(UrlMode)
String getRequiredResources(UrlMode urlMode, WebResourceFilter webResourceFilter)
Returns the resource tags for the previously required resources called via requireResource(String) that match the specified web resource filter.
String getResourceTags(String moduleCompleteKey, UrlMode urlMode)
Returns the resource tags of the specified resource.
@Deprecated String getResourceTags(String moduleCompleteKey)
This method is deprecated. As of 2.3.0, replaced by getResourceTags(String, UrlMode)
@Deprecated String getStaticPluginResource(ModuleDescriptor<?> moduleDescriptor, String resourceName, UrlMode urlMode)
@Deprecated String getStaticPluginResource(String moduleCompleteKey, String resourceName)
This method is deprecated. As of 2.3.0, replaced by getStaticPluginResource(String, String, UrlMode)
@Deprecated String getStaticPluginResource(ModuleDescriptor<?> moduleDescriptor, String resourceName)
This method is deprecated. As of 2.3.0, replaced by getStaticPluginResource(ModuleDescriptor, String, UrlMode)
@Deprecated String getStaticPluginResource(String moduleCompleteKey, String resourceName, UrlMode urlMode)
This method is deprecated. As of 2.9.0, replaced by getStaticPluginResourceUrl(String, String, UrlMode)
@Deprecated String getStaticPluginResourcePrefix(ModuleDescriptor<?> moduleDescriptor, String resourceName)
This method is deprecated. Since 2.2 Use #getStaticPluginResource instead
@Deprecated String getStaticResourcePrefix(String resourceCounter, UrlMode urlMode)
This method is deprecated. As of 2.9.0, replaced by getStaticResourcePrefix(String, UrlMode)
@Deprecated String getStaticResourcePrefix(String resourceCounter)
This method is deprecated. As of 2.3.0, replaced by getStaticResourcePrefix(String, UrlMode)
@Deprecated String getStaticResourcePrefix(UrlMode urlMode)
This method is deprecated. As of 2.9.0, replaced by getStaticResourcePrefix(UrlMode)
@Deprecated String getStaticResourcePrefix()
This method is deprecated. As of 2.3.0, replaced by getStaticResourcePrefix(UrlMode)
void includeResources(Writer writer, UrlMode urlMode)
This is the equivalent of calling includeResources(Writer, UrlMode, WebResourceFilter) with the given url mode and a default web resource filter that is dependent on the implementation.
void includeResources(Writer writer, UrlMode urlMode, WebResourceFilter webResourceFilter)
Writes out the resource tags to the previously required resources called via requireResource(String) for the specified resource type.
void includeResources(Iterable<String> moduleCompleteKeys, Writer writer, UrlMode urlMode)
Writes out the resource tags for a specified set of required resources and their dependencies.
@Deprecated void includeResources(Writer writer)
This method is deprecated. As of 2.3.0, replaced by includeResources(Writer, UrlMode)
@Deprecated void requireResource(String moduleCompleteKey, Writer writer)
This method is deprecated. As of 2.3.0, replaced by requireResource(String, Writer, UrlMode)
void requireResource(String moduleCompleteKey)
Indicates that a given plugin web resource is required.
void requireResource(String moduleCompleteKey, Writer writer, UrlMode urlMode)
Writes the resource tags of the specified resource to the writer.
void requireResourcesForContext(String context)
Writes the resource tags of all resources that have the given context specified in their descriptor.
@Deprecated void setIncludeMode(WebResourceManager.IncludeMode includeMode)
This method is deprecated. Since 2.2.

Fields

public static final WebResourceManager.IncludeMode DELAYED_INCLUDE_MODE

This field is deprecated.
Since 2.2. Use requireResource(String, Writer, UrlMode) instead.

public static final WebResourceManager.IncludeMode INLINE_INCLUDE_MODE

This field is deprecated.
Since 2.2. Use requireResource(String) instead.

Public Methods

public T executeInNewContext (Supplier<T> nestedExecution)

Executes a Supplier within a new WebResourceManager context. The request-local state manipulated by requireResource and requireResourcesForContext is preserved, an empty state is initialized for the execution of nestedExecution and after the nestedExecution is run, the old state is restored. If no return is required from the nestedExecution then Suppier can be used. Useful for rendering of pages which include nested pages (such as gadgets), which need to resolve the requirements of the inner pages without polluting the outer page's resources.

Parameters
nestedExecution the code to be executed in the empty context.
Returns
  • the value returned by nestedExection.get()

public String getRequiredResources (UrlMode urlMode)

This is the equivalent of calling getRequiredResources(UrlMode, WebResourceFilter) with the given url mode and a default filter that is dependent on the implementation.

Returns
  • the resource tags for all resources previously required

@Deprecated public String getRequiredResources ()

This method is deprecated.
As of 2.3.0, replaced by getRequiredResources(UrlMode)

public String getRequiredResources (UrlMode urlMode, WebResourceFilter webResourceFilter)

Returns the resource tags for the previously required resources called via requireResource(String) that match the specified web resource filter. If you are outputting the value to a Writer, use includeResources(Writer, UrlMode).

Example - if a 'javascript' resource has been required earlier with requireResource() and this method is called with JavascriptWebResource.FILTER_INSTANCE, it should return:
  <script type="text/javascript" src="$contextPath/scripts/javascript.js"></script>
 
Similarly for other supported resources.

This method formats resource URLs in either relative or absolute format, depending on the value of urlMode. See UrlMode for details of the different options for URL format.

Parameters
urlMode specifies whether to use absolute URLs, relative URLs, or allow the concrete implementation to decide
webResourceFilter the web resource filter to filter resources on
Returns
  • the resource tags for all resources previously required

public String getResourceTags (String moduleCompleteKey, UrlMode urlMode)

Returns the resource tags of the specified resource. If you are outputting the value to a Writer, use requireResource(String, java.io.Writer, UrlMode).

This method formats resource URLs in either relative or absolute format, depending on the value of urlMode. See UrlMode for details of the different options for URL format.
Parameters
moduleCompleteKey The fully qualified plugin web resource module (eg jira.webresources:scriptaculous)
urlMode specifies whether to use absolute URLs, relative URLs, or allow the concrete implementation to decide
Returns
  • the resource tags for the specified resource

@Deprecated public String getResourceTags (String moduleCompleteKey)

This method is deprecated.
As of 2.3.0, replaced by getResourceTags(String, UrlMode)

@Deprecated public String getStaticPluginResource (ModuleDescriptor<?> moduleDescriptor, String resourceName, UrlMode urlMode)

This method is deprecated.
As of 2.9.0, replaced by getStaticPluginResourceUrl(com.atlassian.plugin.ModuleDescriptor, String, UrlMode)

A helper method to return a url for 'plugin' resources. Generally the implementation will return

/s/{build num/{system counter}/{plugin version}/_/download/resources/plugin.key:module.key/resource.name}

Note that the servlet context is prepended, and there is no trailing slash.

Typical usage is to replace:

<%= request.getContextPath() %>/download/resources/plugin.key:module.key/resource.name with <%= webResourceManager.getStaticPluginResource(descriptor, resourceName) %>

This method returns a URL in either a relative or an absolute format, depending on the value of urlMode. See UrlMode for details of the different options for URL format.
Parameters
moduleDescriptor plugin module descriptor that contains the resource
resourceName the name of the resource as defined in the plugin manifest
urlMode specifies whether to use absolute URLs, relative URLs, or allow the concrete implementation to decide
Returns
  • returns the url of this plugin resource

@Deprecated public String getStaticPluginResource (String moduleCompleteKey, String resourceName)

This method is deprecated.
As of 2.3.0, replaced by getStaticPluginResource(String, String, UrlMode)

@Deprecated public String getStaticPluginResource (ModuleDescriptor<?> moduleDescriptor, String resourceName)

This method is deprecated.
As of 2.3.0, replaced by getStaticPluginResource(ModuleDescriptor, String, UrlMode)

@Deprecated public String getStaticPluginResource (String moduleCompleteKey, String resourceName, UrlMode urlMode)

This method is deprecated.
As of 2.9.0, replaced by getStaticPluginResourceUrl(String, String, UrlMode)

A helper method to return a url for 'plugin' resources. Generally the implementation will return

/s/{build num/{system counter}/{plugin version}/_/download/resources/plugin.key:module.key/resource.name}

Note that the servlet context is prepended, and there is no trailing slash.

Typical usage is to replace:

<%= request.getContextPath() %>/download/resources/plugin.key:module.key/resource.name with <%= webResourceManager.getStaticPluginResource(descriptor, resourceName) %>

This method returns a URL in either a relative or an absolute format, depending on the value of urlMode. See UrlMode for details of the different options for URL format.
Parameters
moduleCompleteKey complete plugin module key
resourceName the name of the resource as defined in the plugin manifest
urlMode specifies whether to use absolute URLs, relative URLs, or allow the concrete implementation to decide
Returns
  • A url that can be used to request 'plugin' resources.

@Deprecated public String getStaticPluginResourcePrefix (ModuleDescriptor<?> moduleDescriptor, String resourceName)

This method is deprecated.
Since 2.2 Use #getStaticPluginResource instead

@Deprecated public String getStaticResourcePrefix (String resourceCounter, UrlMode urlMode)

This method is deprecated.
As of 2.9.0, replaced by getStaticResourcePrefix(String, UrlMode)

A helper method to return a prefix for 'system' static resources. This method should be used for resources that change more frequently than system resources, and therefore have their own resource counter.

Generally the implementation will return

/s/{build num/{system counter}/{resource counter}/_}

Note that the servlet context is prepended, and there is no trailing slash.

Typical usage is to replace:

<%= request.getContextPath() %>/styles/global.css with <%= webResourceManager.getStaticResourcePrefix(resourceCounter) %>/styles/global.css

This method returns a URL in either a relative or an absolute format, depending on the value of urlMode. See UrlMode for details of the different options for URL format.
Parameters
resourceCounter A number that represents the unique version of the resource you require. Every time this resource changes, you need to increment the resource counter
urlMode specifies whether to use absolute URLs, relative URLs, or allow the concrete implementation to decide
Returns
  • A prefix that can be used to prefix 'static system' resources.

@Deprecated public String getStaticResourcePrefix (String resourceCounter)

This method is deprecated.
As of 2.3.0, replaced by getStaticResourcePrefix(String, UrlMode)

@Deprecated public String getStaticResourcePrefix (UrlMode urlMode)

This method is deprecated.
As of 2.9.0, replaced by getStaticResourcePrefix(UrlMode)

A helper method to return a prefix for 'system' static resources. Generally the implementation will return

/s/{build num/{system counter}/_}

Note that the servlet context is prepended, and there is no trailing slash.

Typical usage is to replace:

<%= request.getContextPath() %>/styles/global.css with <%= webResourceManager.getStaticResourcePrefix() %>/styles/global.css

This method returns a URL in either a relative or an absolute format, depending on the value of urlMode. See UrlMode for details of the different options for URL format.
Parameters
urlMode specifies whether to use absolute URLs, relative URLs, or allow the concrete implementation to decide
Returns
  • A prefix that can be used to prefix 'static system' resources.

@Deprecated public String getStaticResourcePrefix ()

This method is deprecated.
As of 2.3.0, replaced by getStaticResourcePrefix(UrlMode)

public void includeResources (Writer writer, UrlMode urlMode)

This is the equivalent of calling includeResources(Writer, UrlMode, WebResourceFilter) with the given url mode and a default web resource filter that is dependent on the implementation.

public void includeResources (Writer writer, UrlMode urlMode, WebResourceFilter webResourceFilter)

Writes out the resource tags to the previously required resources called via requireResource(String) for the specified resource type. If you need it as a String to embed the tags in a template, use getRequiredResources(UrlMode).

Example - if a 'javascript' resource has been required earlier with requireResource() and this method is called with JavascriptWebResource.FILTER_INSTANCE, it should output:
  <script type="text/javascript" src="$contextPath/scripts/javascript.js"></script>
 
Similarly for other supported resources.

This method formats resource URLs in either relative or absolute format, depending on the value of urlMode. See UrlMode for details of the different options for URL format.
Parameters
writer the writer to write the links to
urlMode specifies whether to use absolute URLs, relative URLs, or allow the concrete implementation to decide
webResourceFilter the web resource filter to filter resources on

public void includeResources (Iterable<String> moduleCompleteKeys, Writer writer, UrlMode urlMode)

Writes out the resource tags for a specified set of required resources and their dependencies. Does not write out tags for resources specified in calls to requireResource(String).

Parameters
moduleCompleteKeys The set of web resource modules to include
writer the writer to write the links to
urlMode specifies whether to use absolute URLs, relative URLs, or allow the concrete implementation to decide

@Deprecated public void includeResources (Writer writer)

This method is deprecated.
As of 2.3.0, replaced by includeResources(Writer, UrlMode)

@Deprecated public void requireResource (String moduleCompleteKey, Writer writer)

This method is deprecated.
As of 2.3.0, replaced by requireResource(String, Writer, UrlMode)

public void requireResource (String moduleCompleteKey)

Indicates that a given plugin web resource is required. All resources called via this method must be included when includeResources(Writer) is called.

Parameters
moduleCompleteKey The fully qualified plugin web resource module (eg jira.webresources:scriptaculous)

public void requireResource (String moduleCompleteKey, Writer writer, UrlMode urlMode)

Writes the resource tags of the specified resource to the writer. If you need it as a String to embed the tags in a template, use getResourceTags(String, UrlMode).

This method formats resource URLs in either relative or absolute format, depending on the value of urlMode. See UrlMode for details of the different options for URL format.
Parameters
moduleCompleteKey The fully qualified plugin web resource module (eg jira.webresources:scriptaculous)
writer The writer to write the resource tags to.
urlMode specifies whether to use absolute URLs, relative URLs, or allow the concrete implementation to decide

public void requireResourcesForContext (String context)

Writes the resource tags of all resources that have the given context specified in their descriptor.

Parameters
context The name of the context for which you want to require resources (eg "atl.admin")

@Deprecated public void setIncludeMode (WebResourceManager.IncludeMode includeMode)

This method is deprecated.
Since 2.2.