1 package com.atlassian.plugin.impl;
2
3 import com.atlassian.plugin.ModuleDescriptor;
4 import com.atlassian.plugin.Plugin;
5 import com.atlassian.plugin.descriptors.UnloadableModuleDescriptor;
6
7 import java.util.ArrayList;
8 import java.util.List;
9
10
11
12
13 public final class UnloadablePluginFactory
14 {
15
16
17
18
19
20
21 public static UnloadablePlugin createUnloadablePlugin(final Plugin oldPlugin)
22 {
23 return createUnloadablePlugin(oldPlugin, null);
24 }
25
26
27
28
29
30
31
32
33
34
35
36 public static UnloadablePlugin createUnloadablePlugin(final Plugin oldPlugin, final UnloadableModuleDescriptor unloadableDescriptor)
37 {
38 final UnloadablePlugin newPlugin = new UnloadablePlugin();
39
40 newPlugin.setName(oldPlugin.getName());
41 newPlugin.setKey(oldPlugin.getKey());
42 newPlugin.setI18nNameKey(oldPlugin.getI18nNameKey());
43 newPlugin.setUninstallable(oldPlugin.isUninstallable());
44 newPlugin.setDeletable(oldPlugin.isDeleteable());
45 newPlugin.setPluginsVersion(oldPlugin.getPluginsVersion());
46 newPlugin.setDynamicallyLoaded(oldPlugin.isDynamicallyLoaded());
47
48
49 newPlugin.setSystemPlugin(false);
50
51 newPlugin.setPluginInformation(oldPlugin.getPluginInformation());
52
53 final List<ModuleDescriptor<?>> moduleDescriptors = new ArrayList<ModuleDescriptor<?>>(oldPlugin.getModuleDescriptors());
54
55 for (final ModuleDescriptor<?> descriptor : moduleDescriptors)
56 {
57
58 if ((unloadableDescriptor != null) && descriptor.getKey().equals(unloadableDescriptor.getKey()))
59 {
60 continue;
61 }
62 newPlugin.addModuleDescriptor(descriptor);
63 }
64
65
66 if (unloadableDescriptor != null)
67 {
68 newPlugin.addModuleDescriptor(unloadableDescriptor);
69 }
70
71 return newPlugin;
72 }
73 }