Apache Commons Validator включает UrlValidator
класс в commons-validator-1.3.1.jar
. Следующий метод используется для проверки заданного локатора медиаресурсов (MRL) в VLCJ, который в основном является URL. Однако UrlValidator
не работает для файлового URL (со схемой file://
)
/**
* Get a media resource locator (MRL) with the following valid conditions:
* <br/>(1) a non-URI file link
* <br/>(2) a URI link with "file:" scheme
* <br/>(3) a URI link with non-"file:" scheme
* <br/>
* @param mrl media resource locator (MRL)
* @return valid MRL; otherwise return null
*/
private String validateMRL(final String mrl){
String media = null;
String newURI = mrl;
URI uri = new File(mrl.trim()).toURI();
try {
String f = new File(mrl).getAbsolutePath();
Outils.debugMessage("URI:" + f);
if (FilenameUtils.equalsNormalized(newURI, f)){
//this is a actual file link
newURI = uri.toURL().toString();
newURI = Outils.replaceAllString(newURI, "file:", "file://");
Outils.debugMessage("NEW URI: " + newURI);
media = newURI;
}
else if (!mrl.contains("file:")) {
//this is not a file link or "file:" link
if (mrl != null && mrl.length() > 0){
String[] schemes = {"http", "https", "rtsp", "rtp", "udp", "mms", "mmsh"};
UrlValidator urlValidator = new UrlValidator(schemes);
if (urlValidator.isValid(newURI))
media = mrl.trim();
}
}
else {
media = mrl;
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Outils.debugMessage("CURRENT: " + media);
return media;
}
Извините, что эта функция не выполняет разбор параметров (или я бы сказал "схемы"). Но это можно легко сделать с помощью replace()
или substring()