in org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportProtocol.java [163:214]
public boolean canHandle(URIish uri, Repository local, String remoteName) {
if (!getSchemes().isEmpty() && !getSchemes().contains(uri.getScheme()))
return false;
for (URIishField field : getRequiredFields()) {
switch (field) {
case USER:
if (uri.getUser() == null || uri.getUser().length() == 0)
return false;
break;
case PASS:
if (uri.getPass() == null || uri.getPass().length() == 0)
return false;
break;
case HOST:
if (uri.getHost() == null || uri.getHost().length() == 0)
return false;
break;
case PORT:
if (uri.getPort() <= 0)
return false;
break;
case PATH:
if (uri.getPath() == null || uri.getPath().length() == 0)
return false;
break;
default:
return false;
}
}
Set<URIishField> canHave = EnumSet.copyOf(getRequiredFields());
canHave.addAll(getOptionalFields());
if (uri.getUser() != null && !canHave.contains(URIishField.USER))
return false;
if (uri.getPass() != null && !canHave.contains(URIishField.PASS))
return false;
if (uri.getHost() != null && !canHave.contains(URIishField.HOST))
return false;
if (uri.getPort() > 0 && !canHave.contains(URIishField.PORT))
return false;
if (uri.getPath() != null && !canHave.contains(URIishField.PATH))
return false;
return true;
}