View Javadoc
1   package com.atlassian.plugin.servlet.descriptors;
2   
3   import com.atlassian.plugin.StateAware;
4   import com.atlassian.plugin.module.ModuleFactory;
5   import com.atlassian.plugin.servlet.ServletModuleManager;
6   
7   import javax.servlet.http.HttpServlet;
8   
9   import static com.google.common.base.Preconditions.checkNotNull;
10  
11  /**
12   * A module descriptor that allows plugin developers to define servlets. Developers can define what urls the
13   * servlet should be serve by defining one or more <url-pattern> elements.
14   */
15  public class ServletModuleDescriptor extends BaseServletModuleDescriptor<HttpServlet> implements StateAware {
16      private final ServletModuleManager servletModuleManager;
17  
18      /**
19       * Creates a descriptor that uses a module factory to create instances
20       *
21       * @since 2.5.0
22       */
23      public ServletModuleDescriptor(final ModuleFactory moduleFactory, final ServletModuleManager servletModuleManager) {
24          super(moduleFactory);
25          this.servletModuleManager = checkNotNull(servletModuleManager);
26      }
27  
28      @Override
29      public void enabled() {
30          super.enabled();
31          servletModuleManager.addServletModule(this);
32      }
33  
34      @Override
35      public void disabled() {
36          servletModuleManager.removeServletModule(this);
37          super.disabled();
38      }
39  
40      @Override
41      public HttpServlet getModule() {
42          return moduleFactory.createModule(moduleClassName, this);
43      }
44  }