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
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 }