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