1 package com.atlassian.plugin.loaders;
2
3 import com.atlassian.plugin.ModuleDescriptorFactory;
4 import com.atlassian.plugin.Plugin;
5 import com.atlassian.plugin.PluginArtifact;
6 import com.atlassian.plugin.PluginException;
7 import com.atlassian.plugin.PluginParseException;
8 import com.google.common.collect.ForwardingObject;
9
10 import static com.google.common.base.Preconditions.checkNotNull;
11
12 abstract class ForwardingPluginLoader extends ForwardingObject implements DynamicPluginLoader
13 {
14 private final PluginLoader delegate;
15
16 protected ForwardingPluginLoader(PluginLoader delegate)
17 {
18 this.delegate = checkNotNull(delegate);
19 }
20
21 @Override
22 protected final PluginLoader delegate()
23 {
24 return delegate;
25 }
26
27 @Override
28 public Iterable<Plugin> loadAllPlugins(ModuleDescriptorFactory moduleDescriptorFactory) throws PluginParseException
29 {
30 return delegate().loadAllPlugins(moduleDescriptorFactory);
31 }
32
33 @Override
34 public Iterable<Plugin> loadFoundPlugins(ModuleDescriptorFactory moduleDescriptorFactory) throws PluginParseException
35 {
36 return delegate().loadFoundPlugins(moduleDescriptorFactory);
37 }
38
39 @Override
40 public boolean supportsAddition()
41 {
42 return delegate().supportsAddition();
43 }
44
45 @Override
46 public boolean supportsRemoval()
47 {
48 return delegate().supportsRemoval();
49 }
50
51 @Override
52 public void removePlugin(Plugin plugin) throws PluginException
53 {
54 delegate().removePlugin(plugin);
55 }
56
57 @Override
58 public boolean isDynamicPluginLoader()
59 {
60 return delegate().isDynamicPluginLoader();
61 }
62
63 @Override
64 public String canLoad(PluginArtifact pluginArtifact) throws PluginParseException
65 {
66 if (isDynamicPluginLoader())
67 {
68 return ((DynamicPluginLoader)delegate()).canLoad(pluginArtifact);
69 }
70 else
71 {
72 throw new IllegalStateException("Should not call on non-dynamic plugin loader");
73 }
74 }
75 }