1 package com.atlassian.plugin.osgi.factory.descriptor;
2
3 import com.atlassian.plugin.Permissions;
4 import com.atlassian.plugin.Plugin;
5 import com.atlassian.plugin.PluginParseException;
6 import com.atlassian.plugin.RequirePermission;
7 import com.atlassian.plugin.descriptors.AbstractModuleDescriptor;
8 import com.atlassian.plugin.descriptors.CannotDisable;
9 import com.atlassian.plugin.module.ModuleFactory;
10 import com.atlassian.plugin.osgi.module.BeanPrefixModuleFactory;
11 import org.dom4j.Element;
12
13 import javax.annotation.Nonnull;
14
15
16
17
18
19
20 @CannotDisable
21 @RequirePermission(Permissions.EXECUTE_JAVA)
22 public class ComponentModuleDescriptor extends AbstractModuleDescriptor<Object> {
23 public ComponentModuleDescriptor() {
24 super(ModuleFactory.LEGACY_MODULE_FACTORY);
25 }
26
27 @Override
28 public void init(@Nonnull Plugin plugin, @Nonnull Element element) throws PluginParseException {
29 super.init(plugin, element);
30 checkPermissions();
31 }
32
33 @Override
34 protected void loadClass(Plugin plugin, String clazz) throws PluginParseException {
35 try {
36
37 this.moduleClass = plugin.loadClass(clazz, null);
38 } catch (ClassNotFoundException e) {
39 throw new PluginParseException("cannot load component class", e);
40 }
41 }
42
43 @Override
44 public Object getModule() {
45 return new BeanPrefixModuleFactory().createModule(getKey(), this);
46 }
47 }