View Javadoc

1   package com.atlassian.plugin.osgi.factory;
2   
3   import com.atlassian.plugin.ModuleDescriptor;
4   import com.atlassian.plugin.ModuleDescriptorFactory;
5   import com.atlassian.plugin.PluginParseException;
6   import com.atlassian.plugin.descriptors.UnrecognisedModuleDescriptor;
7   import org.slf4j.Logger;
8   import org.slf4j.LoggerFactory;
9   
10  
11  /**
12   * Module descriptor factory for deferred modules.  Turns every request for a module descriptor into a deferred
13   * module so be sure that this factory is last in a list of factories.
14   *
15   * @since 2.1.2
16   * @see {@link UnrecognisedModuleDescriptor}
17   */
18  class UnrecognisedModuleDescriptorFallbackFactory implements ModuleDescriptorFactory
19  {
20      private static final Logger log = LoggerFactory.getLogger(UnrecognisedModuleDescriptorFallbackFactory.class);
21      public static final String DESCRIPTOR_TEXT = "Support for this module is not currently installed.";
22  
23      public UnrecognisedModuleDescriptor getModuleDescriptor(final String type) throws PluginParseException, IllegalAccessException, InstantiationException, ClassNotFoundException
24      {
25          log.info("Unknown module descriptor of type " + type + " registered as an unrecognised descriptor.");
26          final UnrecognisedModuleDescriptor descriptor = new UnrecognisedModuleDescriptor();
27          descriptor.setErrorText(DESCRIPTOR_TEXT);
28          return descriptor;
29      }
30  
31      public boolean hasModuleDescriptor(final String type)
32      {
33          return true;
34      }
35  
36      public Class<? extends ModuleDescriptor<?>> getModuleDescriptorClass(final String type)
37      {
38          return UnrecognisedModuleDescriptor.class;
39      }
40  }