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  {
17      private final ServletModuleManager servletModuleManager;
18  
19      /**
20       * Creates a descriptor that uses a module factory to create instances
21       *
22       * @param moduleFactory
23       * @since 2.5.0
24       */
25      public ServletModuleDescriptor(final ModuleFactory moduleFactory, final ServletModuleManager servletModuleManager)
26      {
27          super(moduleFactory);
28          this.servletModuleManager = checkNotNull(servletModuleManager);
29      }
30  
31      @Override
32      public void enabled()
33      {
34          super.enabled();
35          servletModuleManager.addServletModule(this);
36      }
37  
38      @Override
39      public void disabled()
40      {
41          servletModuleManager.removeServletModule(this);
42          super.disabled();
43      }
44  
45      @Override
46      public HttpServlet getModule()
47      {
48          return moduleFactory.createModule(moduleClassName, this);
49      }
50  
51      /**
52       * @deprecated Since 2.0.0, use {@link #getModule}
53       */
54      @Deprecated
55      public HttpServlet getServlet()
56      {
57          return getModule();
58      }
59  }