View Javadoc

1   package com.atlassian.plugin.impl;
2   
3   import com.atlassian.plugin.classloader.PluginClassLoader;
4   import com.atlassian.plugin.loaders.classloading.DeploymentUnit;
5   
6   import java.io.InputStream;
7   import java.net.URL;
8   
9   /**
10   * A dynamically loaded plugin is loaded through the plugin class loader.
11   */
12  public class DefaultDynamicPlugin extends AbstractPlugin implements DynamicPlugin
13  {
14      private final DeploymentUnit deploymentUnit;
15      private final PluginClassLoader loader;
16      private boolean deletable = true;
17      private boolean bundled = false;
18  
19      public DefaultDynamicPlugin(DeploymentUnit deploymentUnit, PluginClassLoader loader)
20      {
21          if (loader == null)
22          {
23              throw new IllegalArgumentException("PluginClassLoader must not be null");
24          }
25          this.deploymentUnit = deploymentUnit;
26          this.loader = loader;
27      }
28  
29      public Class loadClass(String clazz, Class callingClass) throws ClassNotFoundException
30      {
31          return loader.loadClass(clazz);
32      }
33  
34      public boolean isUninstallable()
35      {
36          return true;
37      }
38  
39      public URL getResource(String name)
40      {
41          return loader.getResource(name);
42      }
43  
44      public InputStream getResourceAsStream(String name)
45      {
46          return loader.getResourceAsStream(name);
47      }
48  
49      public ClassLoader getClassLoader()
50      {
51          return loader;
52      }
53  
54      /**
55       * This plugin is dynamically loaded, so returns true.
56       *
57       * @return true
58       */
59      public boolean isDynamicallyLoaded()
60      {
61          return true;
62      }
63  
64      public DeploymentUnit getDeploymentUnit()
65      {
66          return deploymentUnit;
67      }
68  
69      public boolean isDeleteable()
70      {
71          return deletable;
72      }
73  
74      public void setDeletable(boolean deletable)
75      {
76          this.deletable = deletable;
77      }
78  
79      public boolean isBundledPlugin()
80      {
81          return bundled;
82      }
83  
84      public void setBundled(boolean bundled)
85      {
86          this.bundled = bundled;
87      }
88  
89      public void close()
90      {
91          loader.close();
92      }
93  }