View Javadoc

1   package com.atlassian.plugin.web.model;
2   
3   import com.atlassian.plugin.Plugin;
4   import com.atlassian.plugin.PluginAccessor;
5   import com.atlassian.plugin.web.renderer.RendererException;
6   import com.atlassian.plugin.web.renderer.StaticWebPanelRenderer;
7   import com.atlassian.plugin.web.renderer.WebPanelRenderer;
8   import com.google.common.base.Preconditions;
9   
10  /**
11   * @since   2.5.0
12   */
13  public abstract class AbstractWebPanel implements WebPanel
14  {
15      private final PluginAccessor pluginAccessor;
16      protected Plugin plugin;
17      private String resourceType;
18  
19      protected AbstractWebPanel(PluginAccessor pluginAccessor)
20      {
21          this.pluginAccessor = pluginAccessor;
22      }
23  
24      public void setPlugin(Plugin plugin)
25      {
26          this.plugin = plugin;
27      }
28  
29      public void setResourceType(String resourceType)
30      {
31          this.resourceType = Preconditions.checkNotNull(resourceType);
32      }
33  
34      protected final WebPanelRenderer getRenderer()
35      {
36          if (StaticWebPanelRenderer.RESOURCE_TYPE.equals(resourceType))
37          {
38              return StaticWebPanelRenderer.RENDERER;
39          }
40          else
41          {
42              for (WebPanelRenderer webPanelRenderer : pluginAccessor.getEnabledModulesByClass(WebPanelRenderer.class))
43              {
44                  if (Preconditions.checkNotNull(resourceType).equals(webPanelRenderer.getResourceType()))
45                  {
46                      return webPanelRenderer;
47                  }
48              }
49              throw new RendererException("No renderer found for resource type: " + resourceType);
50          }
51      }
52  }