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   * @see UnrecognisedModuleDescriptor
16   * @since 2.1.2
17   */
18  class UnrecognisedModuleDescriptorFallbackFactory implements ModuleDescriptorFactory {
19      private static final Logger log = LoggerFactory.getLogger(UnrecognisedModuleDescriptorFallbackFactory.class);
20      public static final String DESCRIPTOR_TEXT = "Support for this module is not currently installed.";
21  
22      public UnrecognisedModuleDescriptor getModuleDescriptor(final String type) throws PluginParseException {
23          log.info("Unknown module descriptor of type " + type + " registered as an unrecognised descriptor.");
24          final UnrecognisedModuleDescriptor descriptor = new UnrecognisedModuleDescriptor();
25          descriptor.setErrorText(DESCRIPTOR_TEXT);
26          return descriptor;
27      }
28  
29      public boolean hasModuleDescriptor(final String type) {
30          return true;
31      }
32  
33      public Class<? extends ModuleDescriptor<?>> getModuleDescriptorClass(final String type) {
34          return UnrecognisedModuleDescriptor.class;
35      }
36  }