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