View Javadoc

1   package com.atlassian.plugin.servlet.descriptors;
2   
3   import com.atlassian.plugin.StateAware;
4   import com.atlassian.plugin.hostcontainer.HostContainer;
5   import com.atlassian.plugin.module.HostContainerLegacyAdaptor;
6   import com.atlassian.plugin.module.ModuleFactory;
7   import com.atlassian.plugin.servlet.ServletModuleManager;
8   import org.apache.commons.lang.Validate;
9   
10  import javax.servlet.http.HttpServlet;
11  
12  /**
13   * A module descriptor that allows plugin developers to define servlets. Developers can define what urls the
14   * servlet should be serve by defining one or more <url-pattern> elements.
15   */
16  public class ServletModuleDescriptor extends BaseServletModuleDescriptor<HttpServlet> implements StateAware
17  {
18      private final ServletModuleManager servletModuleManager;
19  
20      /**
21       * Creates a descriptor that uses a module factory to create instances
22       *
23       * @param moduleFactory
24       * @since 2.5.0
25       */
26      public ServletModuleDescriptor(final ModuleFactory moduleFactory, final ServletModuleManager servletModuleManager)
27      {
28          super(moduleFactory);
29          Validate.notNull(servletModuleManager);
30          this.servletModuleManager = servletModuleManager;
31      }
32  
33      @Override
34      public void enabled()
35      {
36          super.enabled();
37          servletModuleManager.addServletModule(this);
38      }
39  
40      @Override
41      public void disabled()
42      {
43          servletModuleManager.removeServletModule(this);
44          super.disabled();
45      }
46  
47      @Override
48      public HttpServlet getModule()
49      {
50          return moduleFactory.createModule(moduleClassName, this);
51      }
52  
53      /**
54       * @deprecated Since 2.0.0, use {@link #getModule}
55       */
56      @Deprecated
57      public HttpServlet getServlet()
58      {
59          return getModule();
60      }
61  }