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
46
47 newPlugin.setSystemPlugin(false);
48
49 newPlugin.setPluginInformation(oldPlugin.getPluginInformation());
50
51 final List<ModuleDescriptor<?>> moduleDescriptors = new ArrayList<ModuleDescriptor<?>>(oldPlugin.getModuleDescriptors());
52
53 for (final ModuleDescriptor<?> descriptor : moduleDescriptors)
54 {
55
56 if ((unloadableDescriptor != null) && descriptor.getKey().equals(unloadableDescriptor.getKey()))
57 {
58 continue;
59 }
60 newPlugin.addModuleDescriptor(descriptor);
61 }
62
63
64 if (unloadableDescriptor != null)
65 {
66 newPlugin.addModuleDescriptor(unloadableDescriptor);
67 }
68
69 return newPlugin;
70 }
71 }