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