View Javadoc

1   package com.atlassian.plugins.rest.module;
2   
3   import java.net.URL;
4   
5   import com.atlassian.plugin.Plugin;
6   import com.atlassian.plugin.PluginParseException;
7   import com.atlassian.plugin.hostcontainer.HostContainer;
8   import com.atlassian.plugin.module.ModuleFactory;
9   import com.atlassian.plugin.osgi.factory.OsgiPlugin;
10  import com.atlassian.plugin.servlet.ServletModuleManager;
11  import com.atlassian.plugin.servlet.descriptors.ServletFilterModuleDescriptor;
12  import com.atlassian.plugin.util.validation.ValidationPattern;
13  import com.atlassian.plugins.rest.doclet.generators.AtlassianWadlGeneratorConfig;
14  
15  import com.google.common.base.Preconditions;
16  
17  import javax.servlet.Filter;
18  
19  import org.dom4j.Element;
20  
21  /**
22   * The module descriptor for the REST servlet. Registered dynamically by the {@link RestModuleDescriptor}.
23   * Uses the specific {@link RestDelegatingServletFilter}.
24   */
25  public class RestServletFilterModuleDescriptor extends ServletFilterModuleDescriptor
26  {
27      private final OsgiPlugin osgiPlugin;
28      private final RestDelegatingServletFilter restDelegatingServletFilter;
29      private final RestApiContext restApiContext;
30  
31      RestServletFilterModuleDescriptor(OsgiPlugin plugin, ModuleFactory moduleFactory, ServletModuleManager servletModuleManager, RestApiContext restApiContext)
32      {
33          super(Preconditions.checkNotNull(moduleFactory), Preconditions.checkNotNull(servletModuleManager));
34          this.restApiContext = Preconditions.checkNotNull(restApiContext);
35          this.osgiPlugin = Preconditions.checkNotNull(plugin);
36          this.restDelegatingServletFilter = new RestDelegatingServletFilter(plugin, restApiContext);
37      }
38  
39      @Override
40      public void init(Plugin plugin, Element element) throws PluginParseException
41      {
42          super.init(plugin, element);
43  
44          //see if we have a resourcedoc.xml and if so, use the extended WADL generator
45          URL resourceDoc = plugin.getResource("resourcedoc.xml");
46  
47          if(null != resourceDoc)
48          {
49              getInitParams().put("com.sun.jersey.config.property.WadlGeneratorConfig", AtlassianWadlGeneratorConfig.class.getName());
50          }
51      }
52  
53      @Override
54      protected void provideValidationRules(ValidationPattern pattern)
55      {
56      }
57  
58      @Override
59      public String getName()
60      {
61          return "Rest Servlet Filter";
62      }
63  
64      protected void autowireObject(Object obj)
65      {
66          osgiPlugin.autowire(obj);
67      }
68  
69      @Override
70      public Filter getModule()
71      {
72          return restDelegatingServletFilter;
73      }
74  
75      public String getBasePath()
76      {
77          return restApiContext.getApiPath();
78      }
79  
80      public ApiVersion getVersion()
81      {
82          return restApiContext.getVersion();
83      }
84  }