in maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/main/java/org/apache/maven/scm/provider/svn/AbstractSvnScmProvider.java [183:248]
private ScmUrlParserResult parseScmUrl(String scmSpecificUrl) {
ScmUrlParserResult result = new ScmUrlParserResult();
// ----------------------------------------------------------------------
// Do some sanity checking of the SVN url
// ----------------------------------------------------------------------
if (scmSpecificUrl.startsWith("file")) {
if (!scmSpecificUrl.startsWith("file://")) {
result.messages.add("A svn 'file' url must be on the form 'file://[hostname]/'.");
return result;
}
} else if (scmSpecificUrl.startsWith("https")) {
if (!scmSpecificUrl.startsWith("https://")) {
result.messages.add("A svn 'http' url must be on the form 'https://'.");
return result;
}
} else if (scmSpecificUrl.startsWith("http")) {
if (!scmSpecificUrl.startsWith("http://")) {
result.messages.add("A svn 'http' url must be on the form 'http://'.");
return result;
}
}
// Support of tunnels: svn+xxx with xxx defined in subversion conf file
else if (scmSpecificUrl.startsWith("svn+")) {
if (scmSpecificUrl.indexOf("://") < 0) {
result.messages.add("A svn 'svn+xxx' url must be on the form 'svn+xxx://'.");
return result;
} else {
String tunnel = scmSpecificUrl.substring("svn+".length(), scmSpecificUrl.indexOf("://"));
// ssh is always an allowed tunnel
if (!"ssh".equals(tunnel)) {
SvnConfigFileReader reader = new SvnConfigFileReader();
if (SvnUtil.getSettings().getConfigDirectory() != null) {
reader.setConfigDirectory(new File(SvnUtil.getSettings().getConfigDirectory()));
}
if (StringUtils.isEmpty(reader.getProperty("tunnels", tunnel))) {
result.messages.add(
"The tunnel '" + tunnel + "' isn't defined in your subversion configuration file.");
return result;
}
}
}
} else if (scmSpecificUrl.startsWith("svn")) {
if (!scmSpecificUrl.startsWith("svn://")) {
result.messages.add("A svn 'svn' url must be on the form 'svn://'.");
return result;
}
} else {
result.messages.add(scmSpecificUrl + " url isn't a valid svn URL.");
return result;
}
result.repository = new SvnScmProviderRepository(scmSpecificUrl);
return result;
}