1   package com.atlassian.plugins.rest.module;
2   
3   import com.atlassian.plugin.hostcontainer.HostContainer;
4   import com.atlassian.plugin.osgi.factory.OsgiPlugin;
5   import com.atlassian.plugin.servlet.ServletModuleManager;
6   import com.atlassian.plugin.servlet.descriptors.ServletFilterModuleDescriptor;
7   import com.atlassian.plugin.util.validation.ValidationPattern;
8   import com.google.common.base.Preconditions;
9   
10  import javax.servlet.Filter;
11  
12  /**
13   * The module descriptor for the REST servlet. Registered dynamically by the {@link RestModuleDescriptor}.
14   * Uses the specific {@link RestDelegatingServletFilter}.
15   */
16  public class RestServletFilterModuleDescriptor extends ServletFilterModuleDescriptor
17  {
18      private final OsgiPlugin plugin;
19      private final RestDelegatingServletFilter restDelegatingServletFilter;
20      private final RestApiContext restApiContext;
21  
22      RestServletFilterModuleDescriptor(OsgiPlugin plugin, HostContainer hostContainer, ServletModuleManager servletModuleManager, RestApiContext restApiContext)
23      {
24          super(Preconditions.checkNotNull(hostContainer), Preconditions.checkNotNull(servletModuleManager));
25          this.restApiContext = Preconditions.checkNotNull(restApiContext);
26          this.plugin = Preconditions.checkNotNull(plugin);
27          this.restDelegatingServletFilter = new RestDelegatingServletFilter(plugin, restApiContext);
28      }
29  
30      @Override
31      protected void provideValidationRules(ValidationPattern pattern)
32      {
33      }
34  
35      @Override
36      public String getName()
37      {
38          return "Rest Servlet Filter";
39      }
40  
41      protected void autowireObject(Object obj)
42      {
43          plugin.autowire(obj);
44      }
45  
46      @Override
47      public Filter getModule()
48      {
49          return restDelegatingServletFilter;
50      }
51  
52      public String getBasePath()
53      {
54          return restApiContext.getApiPath();
55      }
56  
57      public ApiVersion getVersion()
58      {
59          return restApiContext.getVersion();
60      }
61  }