in wagon-providers/wagon-ftp/src/main/java/org/apache/maven/wagon/providers/ftp/FtpWagon.java [81:164]
protected void openConnectionInternal() throws ConnectionException, AuthenticationException {
AuthenticationInfo authInfo = getAuthenticationInfo();
if (authInfo == null) {
throw new NullPointerException("authenticationInfo cannot be null");
}
if (authInfo.getUserName() == null) {
authInfo.setUserName(System.getProperty("user.name"));
}
String username = authInfo.getUserName();
String password = authInfo.getPassword();
if (username == null) {
throw new AuthenticationException(
"Username not specified for repository " + getRepository().getId());
}
if (password == null) {
throw new AuthenticationException(
"Password not specified for repository " + getRepository().getId());
}
String host = getRepository().getHost();
ftp = createClient();
ftp.setDefaultTimeout(getTimeout());
ftp.setDataTimeout(getTimeout());
ftp.setControlEncoding(getControlEncoding());
ftp.addProtocolCommandListener(new PrintCommandListener(this));
try {
if (getRepository().getPort() != WagonConstants.UNKNOWN_PORT) {
ftp.connect(host, getRepository().getPort());
} else {
ftp.connect(host);
}
// After connection attempt, you should check the reply code to
// verify
// success.
int reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
throw new AuthenticationException("FTP server refused connection.");
}
} catch (IOException e) {
if (ftp.isConnected()) {
try {
fireSessionError(e);
ftp.disconnect();
} catch (IOException f) {
// do nothing
}
}
throw new AuthenticationException("Could not connect to server.", e);
}
try {
if (!ftp.login(username, password)) {
throw new AuthenticationException("Cannot login to remote system");
}
fireSessionDebug("Remote system is " + ftp.getSystemName());
// Set to binary mode.
ftp.setFileType(FTP.BINARY_FILE_TYPE);
ftp.setListHiddenFiles(true);
// Use passive mode as default because most of us are
// behind firewalls these days.
if (isPassiveMode()) {
ftp.enterLocalPassiveMode();
}
} catch (IOException e) {
throw new ConnectionException("Cannot login to remote system", e);
}
}