View Javadoc
1   package com.atlassian.plugin.osgi.container.impl;
2   
3   import com.atlassian.plugin.osgi.container.PackageScannerConfiguration;
4   
5   import javax.servlet.ServletContext;
6   import java.util.ArrayList;
7   import java.util.Arrays;
8   import java.util.Collections;
9   import java.util.HashMap;
10  import java.util.List;
11  import java.util.Map;
12  
13  /**
14   * Default package scanner configuration. Probably mostly useful for Spring XML configuration.
15   */
16  public class DefaultPackageScannerConfiguration implements PackageScannerConfiguration {
17  
18      private List<String> jarIncludes = Arrays.asList("*.jar");
19      private List<String> jarExcludes = Collections.emptyList();
20      private List<String> packageIncludes = Arrays.asList("com.atlassian.*", "com.google.common.*", "javax.*",
21              "net.jcip.*", "org.jfree.*", "org.joda.*", "org.quartz", "org.quartz.*", "com.opensymphony.*",
22              "org.apache.*", "org.ofbiz.*", "org.xml.*", "org.w3c.*", "webwork.*", "org.tuckey.web.filters.urlrewrite.*",
23              "org.bouncycastle*", "org.dom4j*", "org.jdom*", "com.perforce*", "org.slf4j*", "io.atlassian.*");
24      private List<String> packageExcludes = Arrays.asList("com.springframework*", "org.apache.tomcat.*",
25              "org.apache.catalina.*", "org.apache.jasper.*", "org.apache.coyote.*", "org.apache.naming*",
26              "com.atlassian.plugin.osgi.bridge.*");
27      private Map<String, String> packageVersions;
28      private String hostVersion;
29      private ServletContext servletContext;
30  
31      public DefaultPackageScannerConfiguration() {
32          this(null);
33      }
34  
35      /**
36       * @param hostVersion The current host application version
37       * @since 2.2
38       */
39      public DefaultPackageScannerConfiguration(String hostVersion) {
40          this.hostVersion = hostVersion;
41          jarIncludes = new ArrayList<>(jarIncludes);
42          jarExcludes = new ArrayList<>(jarExcludes);
43          packageIncludes = new ArrayList<>(packageIncludes);
44          packageExcludes = new ArrayList<>(packageExcludes);
45          packageVersions = new HashMap<>();
46      }
47  
48  
49      public void setJarIncludes(List<String> jarIncludes) {
50          this.jarIncludes = jarIncludes;
51      }
52  
53      public void setJarExcludes(List<String> jarExcludes) {
54          this.jarExcludes = jarExcludes;
55      }
56  
57      public void setPackageIncludes(List<String> packageIncludes) {
58          this.packageIncludes = packageIncludes;
59      }
60  
61      public void setPackageExcludes(List<String> packageExcludes) {
62          this.packageExcludes = packageExcludes;
63      }
64  
65      /**
66       * Sets the jars to include and exclude from scanning
67       *
68       * @param includes A list of jar patterns to include
69       * @param excludes A list of jar patterns to exclude
70       */
71      public void setJarPatterns(List<String> includes, List<String> excludes) {
72          this.jarIncludes = includes;
73          this.jarExcludes = excludes;
74      }
75  
76      /**
77       * Sets the packages to include and exclude
78       *
79       * @param includes A list of patterns to include
80       * @param excludes A list of patterns to exclude
81       */
82      public void setPackagePatterns(List<String> includes, List<String> excludes) {
83          this.packageIncludes = includes;
84          this.packageExcludes = excludes;
85      }
86  
87      /**
88       * Maps discovered packages to specific versions by overriding autodiscovered versions
89       *
90       * @param packageToVersions A map of package patterns to version strings
91       */
92      public void setPackageVersions(Map<String, String> packageToVersions) {
93          this.packageVersions = packageToVersions;
94      }
95  
96      public List<String> getJarIncludes() {
97          return jarIncludes;
98      }
99  
100     public List<String> getJarExcludes() {
101         return jarExcludes;
102     }
103 
104     public List<String> getPackageIncludes() {
105         return packageIncludes;
106     }
107 
108     public List<String> getPackageExcludes() {
109         return packageExcludes;
110     }
111 
112     public Map<String, String> getPackageVersions() {
113         return packageVersions;
114     }
115 
116     public String getCurrentHostVersion() {
117         return hostVersion;
118     }
119 
120     public ServletContext getServletContext() {
121         return servletContext;
122     }
123 
124     public void setServletContext(ServletContext servletContext) {
125         this.servletContext = servletContext;
126     }
127 }