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       * @param moduleFactory
22       * @since 2.5.0
23       */
24      public ServletModuleDescriptor(final ModuleFactory moduleFactory, final ServletModuleManager servletModuleManager) {
25          super(moduleFactory);
26          this.servletModuleManager = checkNotNull(servletModuleManager);
27      }
28  
29      @Override
30      public void enabled() {
31          super.enabled();
32          servletModuleManager.addServletModule(this);
33      }
34  
35      @Override
36      public void disabled() {
37          servletModuleManager.removeServletModule(this);
38          super.disabled();
39      }
40  
41      @Override
42      public HttpServlet getModule() {
43          return moduleFactory.createModule(moduleClassName, this);
44      }
45  
46      /**
47       * @deprecated Since 2.0.0, use {@link #getModule}
48       */
49      @Deprecated
50      public HttpServlet getServlet() {
51          return getModule();
52      }
53  }