[nobug] Support multiple url-mappings per property group
diff --git a/web/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/DeploymentDescriptorPropertyCache.java b/web/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/DeploymentDescriptorPropertyCache.java
index 6d28e2c..8d613da 100644
--- a/web/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/DeploymentDescriptorPropertyCache.java
+++ b/web/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/DeploymentDescriptorPropertyCache.java
@@ -115,7 +115,7 @@
group.setPageEncoding(getContainedText(node));
}
else if (URL_PATTERN.equals(name)) {
- group.setUrlPattern(getContainedText(node));
+ group.addUrlPattern(getContainedText(node));
}
}
@@ -133,10 +133,10 @@
private IPath[] include_prelude = new IPath[0];
private boolean is_xml;
- private StringMatcher matcher;
+ private StringMatcher[] urlMatchers;
private String page_encoding;
private boolean scripting_invalid;
- String url_pattern;
+ String[] url_patterns;
private IPath webxmlPath;
int number;
@@ -147,7 +147,7 @@
this.number = number;
}
- private void addCoda(String containedText) {
+ void addCoda(String containedText) {
if (containedText.length() > 0) {
IPath[] codas = new IPath[include_coda.length + 1];
System.arraycopy(include_coda, 0, codas, 0, include_coda.length);
@@ -156,7 +156,7 @@
}
}
- private void addPrelude(String containedText) {
+ void addPrelude(String containedText) {
if (containedText.length() > 0) {
IPath[] preludes = new IPath[include_prelude.length + 1];
System.arraycopy(include_prelude, 0, preludes, 0, include_prelude.length);
@@ -165,6 +165,28 @@
}
}
+
+ void addUrlPattern(String pattern) {
+ if (url_patterns == null) {
+ url_patterns = new String[1];
+ }
+ else {
+ String[] patterns = new String[url_patterns.length + 1];
+ System.arraycopy(url_patterns, 0, patterns, 0, url_patterns.length);
+ url_patterns = patterns;
+ }
+ url_patterns[url_patterns.length - 1] = pattern;
+
+ if (urlMatchers == null) {
+ urlMatchers = new StringMatcher[1];
+ }
+ else {
+ StringMatcher[] matchers = new StringMatcher[urlMatchers.length + 1];
+ System.arraycopy(urlMatchers, 0, matchers, 0, urlMatchers.length);
+ }
+ urlMatchers[urlMatchers.length - 1] = new StringMatcher(pattern);
+ }
+
public String getId() {
return id;
}
@@ -181,8 +203,8 @@
return page_encoding;
}
- public String getUrlPattern() {
- return url_pattern;
+ public String[] getUrlPatterns() {
+ return url_patterns;
}
public boolean isELignored() {
@@ -198,40 +220,49 @@
}
boolean matches(String pattern, boolean optimistic) {
- if (matcher == null)
+ if (urlMatchers == null) {
return optimistic;
- return matcher.match(pattern);
+ }
+ for (int i = 0; i < urlMatchers.length; i++) {
+ if (urlMatchers[i].match(pattern)) {
+ return true;
+ }
+ }
+ return false;
}
- private void setElignored(String el_ignored) {
+ void setElignored(String el_ignored) {
this.el_ignored = Boolean.valueOf(el_ignored).booleanValue();
}
- private void setId(String id) {
+ void setId(String id) {
this.id = id;
}
- private void setIsXML(String is_xml) {
+ void setIsXML(String is_xml) {
this.is_xml = Boolean.valueOf(is_xml).booleanValue();
}
- private void setPageEncoding(String page_encoding) {
+ void setPageEncoding(String page_encoding) {
this.page_encoding = page_encoding;
}
- private void setScriptingInvalid(String scripting_invalid) {
+ void setScriptingInvalid(String scripting_invalid) {
this.scripting_invalid = Boolean.valueOf(scripting_invalid).booleanValue();
}
- private void setUrlPattern(String url_pattern) {
- this.url_pattern = url_pattern;
- if (url_pattern != null && url_pattern.length() > 0) {
- this.matcher = new StringMatcher(url_pattern);
+ void setUrlPatterns(String[] url_patterns) {
+ this.url_patterns = url_patterns;
+ if (url_patterns != null && url_patterns.length > 0) {
+ this.urlMatchers = new StringMatcher[url_patterns.length];
+ for (int i = 0; i < url_patterns.length; i++) {
+ this.urlMatchers[i] = new StringMatcher(url_patterns[i]);
+ }
}
}
public String toString() {
- return number + ":" + url_pattern; //$NON-NLS-1$
+ return number + ":" + url_patterns; //$NON-NLS-1$
}
}