1 package com.atlassian.plugin.osgi.loader;
2
3 import com.atlassian.plugin.loaders.PluginFactory;
4 import com.atlassian.plugin.loaders.classloading.DeploymentUnit;
5 import com.atlassian.plugin.osgi.container.OsgiContainerManager;
6 import com.atlassian.plugin.osgi.hostcomponents.HostComponentProvider;
7 import com.atlassian.plugin.Plugin;
8 import com.atlassian.plugin.ModuleDescriptorFactory;
9 import com.atlassian.plugin.PluginParseException;
10 import com.atlassian.plugin.util.FileUtils;
11 import com.atlassian.plugin.util.ClassLoaderUtils;
12 import com.atlassian.plugin.util.zip.UrlUnzipper;
13 import com.atlassian.plugin.impl.DynamicPlugin;
14
15 import java.io.File;
16 import java.io.IOException;
17 import java.io.FilenameFilter;
18 import java.net.URL;
19 import java.util.List;
20 import java.util.ArrayList;
21 import java.util.Collections;
22 import java.util.zip.ZipEntry;
23
24 import org.apache.log4j.Logger;
25
26
27
28
29
30 public class BundledOsgiPluginLoader extends OsgiPluginLoader
31 {
32 private static final Logger log = Logger.getLogger(BundledOsgiPluginLoader.class);
33
34
35
36
37
38
39
40
41
42
43
44 public BundledOsgiPluginLoader(URL zipUrl, File pluginPath, String pluginDescriptorFileName, PluginFactory pluginFactory, OsgiContainerManager osgi, HostComponentProvider provider)
45 {
46 super(pluginPath, pluginDescriptorFileName, pluginFactory, osgi, provider);
47 if (zipUrl == null)
48 throw new IllegalArgumentException("Bundled zip url cannot be null");
49 FileUtils.conditionallyExtractZipFile(zipUrl, pluginPath);
50 }
51
52 public BundledOsgiPluginLoader(File pluginPath, String pluginDescriptorFileName, PluginFactory pluginFactory, OsgiContainerManager osgi, HostComponentProvider provider)
53 {
54 super(pluginPath, pluginDescriptorFileName, pluginFactory, osgi, provider);
55 }
56
57
58
59
60
61
62
63
64
65
66 protected Plugin deployPluginFromUnit(DeploymentUnit deploymentUnit, ModuleDescriptorFactory moduleDescriptorFactory) throws PluginParseException
67 {
68 Plugin plugin = super.deployPluginFromUnit(deploymentUnit, moduleDescriptorFactory);
69 if (plugin instanceof DynamicPlugin)
70 {
71 DynamicPlugin dplugin = (DynamicPlugin) plugin;
72 dplugin.setDeletable(false);
73 dplugin.setBundled(true);
74 }
75
76 log.debug("Deploy bundled plugin: "+plugin.getName());
77
78 return plugin;
79 }
80 }