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 private final RestDelegatingServletFilter restDelegatingServletFilter;
26 private final RestApiContext restApiContext;
27 private final static String DISABLE_WADL_PROPERTY = "com.sun.jersey.config.feature.DisableWADL";
28
29 RestServletFilterModuleDescriptor(OsgiPlugin plugin, ModuleFactory moduleFactory, ServletModuleManager servletModuleManager, RestApiContext restApiContext) {
30 super(Preconditions.checkNotNull(moduleFactory), Preconditions.checkNotNull(servletModuleManager));
31 this.restApiContext = Preconditions.checkNotNull(restApiContext);
32 this.restDelegatingServletFilter = new RestDelegatingServletFilter(plugin, restApiContext);
33 }
34
35 @Override
36 public void init(Plugin plugin, Element element) throws PluginParseException {
37 super.init(plugin, element);
38
39
40 getInitParams().put(DISABLE_WADL_PROPERTY, System.getProperty(DISABLE_WADL_PROPERTY, "false"));
41
42
43 if (resourcesAvailable(plugin, APPLICATION_XML, GRAMMARS_XML, RESOURCE_XML)) {
44 getInitParams().put("com.sun.jersey.config.property.WadlGeneratorConfig", AtlassianWadlGeneratorConfig.class.getName());
45 }
46 }
47
48 @Override
49 protected void provideValidationRules(ValidationPattern pattern) {
50 }
51
52 @Override
53 public String getName() {
54 return "Rest Servlet Filter";
55 }
56
57 @Override
58 public Filter getModule() {
59 return restDelegatingServletFilter;
60 }
61
62 public String getBasePath() {
63 return restApiContext.getApiPath();
64 }
65
66 public ApiVersion getVersion() {
67 return restApiContext.getVersion();
68 }
69
70 private static boolean resourcesAvailable(Plugin plugin, String... resources) {
71 for (final String resource : resources) {
72 if (plugin.getResource(resource) == null) {
73 return false;
74 }
75 }
76 return true;
77 }
78 }