import java.net.MalformedURLException;
import java.net.URL;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
/**
* Class to represent any map source, whether an OsmMapSource
/** File extensions */
protected String[] _extensions = null;
+ /** Regular expression for catching server wildcards */
+ protected static final Pattern WILD_PATTERN = Pattern.compile("^(.*)\\[(.*)\\](.*)$");
+
/**
* @return the number of layers used in this source
String urlstr = inUrl;
// check prefix
try {
- new URL(urlstr);
+ new URL(urlstr.replace('[', 'w').replace(']', 'w'));
}
- catch (MalformedURLException e) {
+ catch (MalformedURLException e)
+ {
// fail if protocol specified
if (urlstr.indexOf("://") >= 0) {return null;}
// add the http protocol
}
// Validate current url, return null if not ok
try {
- URL url = new URL(urlstr);
+ URL url = new URL(urlstr.replace('[', 'w').replace(']', 'w'));
// url host must contain a dot
if (url.getHost().indexOf('.') < 0) {return null;}
}
int idx = url.indexOf("://");
if (idx >= 0) {url = url.substring(idx + 3);}
if (url.startsWith("www.")) {url = url.substring(4);}
+ // Strip out any "[.*]" as well
+ if (url.indexOf('[') >= 0)
+ {
+ Matcher matcher = WILD_PATTERN.matcher(url);
+ if (matcher.matches()) {
+ url = matcher.group(1) + matcher.group(3);
+ if (url.length() > 1 && url.charAt(0) == '.') {
+ url = url.substring(1);
+ }
+ }
+ }
return url;
}