1 package com.atlassian.plugin.osgi.factory;
2
3 import com.atlassian.plugin.parsers.XmlDescriptorParser;
4 import com.atlassian.plugin.PluginParseException;
5 import com.atlassian.plugin.ModuleDescriptor;
6 import com.atlassian.plugin.Plugin;
7 import com.atlassian.plugin.ModuleDescriptorFactory;
8
9 import java.io.InputStream;
10 import java.util.HashSet;
11 import java.util.Arrays;
12 import java.util.HashMap;
13
14 import org.dom4j.Element;
15 import org.apache.commons.lang.Validate;
16
17
18
19
20
21
22
23 public class OsgiPluginXmlDescriptorParser extends XmlDescriptorParser
24 {
25 private HashSet<String> modulesToIgnore;
26
27
28
29
30
31
32
33
34 public OsgiPluginXmlDescriptorParser(InputStream source, String... modulesToIgnore) throws PluginParseException
35 {
36 super(source);
37 Validate.notNull(source, "The descriptor source must not be null");
38 this.modulesToIgnore = new HashSet<String>(Arrays.asList(modulesToIgnore));
39 }
40
41
42
43
44
45
46
47
48
49 @Override
50 protected ModuleDescriptor createModuleDescriptor(Plugin plugin, Element element, ModuleDescriptorFactory moduleDescriptorFactory) throws PluginParseException
51 {
52 ModuleDescriptor descriptor = null;
53 if (!modulesToIgnore.contains(element.getName()))
54 {
55 descriptor = super.createModuleDescriptor(plugin, element, moduleDescriptorFactory);
56 String key = (descriptor != null ? descriptor.getKey() : element.attributeValue("key"));
57 ((OsgiPlugin)plugin).addModuleDescriptorElement(key, element);
58 }
59 return descriptor;
60 }
61 }