1 package com.atlassian.plugins.rest.module;
2
3 import com.atlassian.plugin.Plugin;
4 import com.atlassian.plugin.PluginParseException;
5 import com.atlassian.plugin.module.ModuleFactory;
6 import com.atlassian.plugin.osgi.factory.OsgiPlugin;
7 import com.atlassian.plugin.servlet.ServletModuleManager;
8 import com.atlassian.plugin.servlet.descriptors.ServletFilterModuleDescriptor;
9 import com.atlassian.plugin.util.validation.ValidationPattern;
10 import com.atlassian.plugins.rest.doclet.generators.AtlassianWadlGeneratorConfig;
11 import com.google.common.base.Preconditions;
12 import org.dom4j.Element;
13
14 import javax.servlet.Filter;
15
16 import static com.atlassian.plugins.rest.doclet.generators.AtlassianWadlGeneratorConfig.APPLICATION_XML;
17 import static com.atlassian.plugins.rest.doclet.generators.AtlassianWadlGeneratorConfig.GRAMMARS_XML;
18 import static com.atlassian.plugins.rest.doclet.generators.AtlassianWadlGeneratorConfig.RESOURCE_XML;
19
20
21
22
23
24 public class RestServletFilterModuleDescriptor extends ServletFilterModuleDescriptor
25 {
26 private final OsgiPlugin osgiPlugin;
27 private final RestDelegatingServletFilter restDelegatingServletFilter;
28 private final RestApiContext restApiContext;
29
30 RestServletFilterModuleDescriptor(OsgiPlugin plugin, ModuleFactory moduleFactory, ServletModuleManager servletModuleManager, RestApiContext restApiContext)
31 {
32 super(Preconditions.checkNotNull(moduleFactory), Preconditions.checkNotNull(servletModuleManager));
33 this.restApiContext = Preconditions.checkNotNull(restApiContext);
34 this.osgiPlugin = Preconditions.checkNotNull(plugin);
35 this.restDelegatingServletFilter = new RestDelegatingServletFilter(plugin, restApiContext);
36 }
37
38 @Override
39 public void init(Plugin plugin, Element element) throws PluginParseException
40 {
41 super.init(plugin, element);
42
43
44 if (resourcesAvailable(plugin, APPLICATION_XML, GRAMMARS_XML, RESOURCE_XML))
45 {
46 getInitParams().put("com.sun.jersey.config.property.WadlGeneratorConfig", AtlassianWadlGeneratorConfig.class.getName());
47 }
48 }
49
50 @Override
51 protected void provideValidationRules(ValidationPattern pattern)
52 {
53 }
54
55 @Override
56 public String getName()
57 {
58 return "Rest Servlet Filter";
59 }
60
61 protected void autowireObject(Object obj)
62 {
63 osgiPlugin.autowire(obj);
64 }
65
66 @Override
67 public Filter getModule()
68 {
69 return restDelegatingServletFilter;
70 }
71
72 public String getBasePath()
73 {
74 return restApiContext.getApiPath();
75 }
76
77 public ApiVersion getVersion()
78 {
79 return restApiContext.getVersion();
80 }
81
82 private static boolean resourcesAvailable(Plugin plugin, String...resources)
83 {
84 for (final String resource : resources)
85 {
86 if (plugin.getResource(resource) == null)
87 {
88 return false;
89 }
90 }
91 return true;
92 }
93 }