View Javadoc

1   package com.atlassian.plugin.webresource;
2   
3   import com.atlassian.plugin.ModuleDescriptor;
4   import com.atlassian.plugin.PluginInformation;
5   
6   /**
7    * The default implementation of {@link WebResourceUrlProvider}.
8    *
9    * @since 2.9.0
10   */
11  public class WebResourceUrlProviderImpl implements WebResourceUrlProvider
12  {
13      static final String STATIC_RESOURCE_PREFIX = "s";
14      static final String STATIC_RESOURCE_SUFFIX = "_";
15  
16      private final WebResourceIntegration webResourceIntegration;
17  
18      public WebResourceUrlProviderImpl(WebResourceIntegration webResourceIntegration)
19      {
20          this.webResourceIntegration = webResourceIntegration;
21      }
22  
23      public String getStaticResourcePrefix(UrlMode urlMode)
24      {
25          // "{base url}/s/{lang?}/{build num}/{system counter}/_"
26          // {lang} is optional
27          String lang = webResourceIntegration.getStaticResourceLocale();
28          return webResourceIntegration.getBaseUrl(urlMode) + "/" + STATIC_RESOURCE_PREFIX + "/" +
29                  (lang != null ? lang + "/" : "") +
30                  webResourceIntegration.getSystemBuildNumber() + "/" + webResourceIntegration.getSystemCounter() + "/" + STATIC_RESOURCE_SUFFIX;
31      }
32  
33      public String getStaticResourcePrefix(String resourceCounter, UrlMode urlMode)
34      {
35          // "{base url}/s/{lang?}/{build num}/{system counter}/{resource counter}/_"
36          // {lang} is optional
37          String lang = webResourceIntegration.getStaticResourceLocale();
38          return webResourceIntegration.getBaseUrl(urlMode) + "/" + STATIC_RESOURCE_PREFIX + "/" +
39                  (lang != null ? lang + "/" : "") +
40                  webResourceIntegration.getSystemBuildNumber() + "/" + webResourceIntegration.getSystemCounter() + "/" + resourceCounter + "/" + STATIC_RESOURCE_SUFFIX;
41      }
42  
43      public String getStaticPluginResourceUrl(final String moduleCompleteKey, final String resourceName, final UrlMode urlMode)
44      {
45          final ModuleDescriptor<?> moduleDescriptor = webResourceIntegration.getPluginAccessor().getEnabledPluginModule(moduleCompleteKey);
46          if (moduleDescriptor == null)
47          {
48              return null;
49          }
50  
51          return getStaticPluginResourceUrl(moduleDescriptor, resourceName, urlMode);
52      }
53  
54      public String getStaticPluginResourceUrl(ModuleDescriptor moduleDescriptor, String resourceName, UrlMode urlMode)
55      {
56          PluginInformation pluginInfo = moduleDescriptor.getPlugin().getPluginInformation();
57          String pluginVersion = pluginInfo != null ? pluginInfo.getVersion() : "unknown";
58  
59          // "{base url}/s/{build num}/{system counter}/{plugin version}/_"
60          final String staticUrlPrefix = getStaticResourcePrefix(pluginVersion, urlMode);
61          // "/download/resources/plugin.key:module.key/resource.name"
62          return staticUrlPrefix + getResourceUrl(moduleDescriptor.getCompleteKey(), resourceName);
63      }
64  
65      public String getResourceUrl(final String moduleCompleteKey, final String resourceName)
66      {
67          return new SinglePluginResource(resourceName, moduleCompleteKey, false).getUrl();
68      }
69  
70      public String getBaseUrl()
71      {
72          return webResourceIntegration.getBaseUrl();
73      }
74  
75      public String getBaseUrl(UrlMode urlMode)
76      {
77          return webResourceIntegration.getBaseUrl(urlMode);
78      }
79  }