blob: c34f085c90ae41dbfcc1c044d25ee7e1681835b9 [file] [log] [blame]
/*
* Copyright 2000-2011 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jetbrains.idea.svn.auth;
import org.tmatesoft.svn.core.auth.*;
/**
* @author irengrig
* Date: 1/24/11
* Time: 6:14 PM
*/
public class ProxySvnAuthentication {
private ProxySvnAuthentication() {
}
public static SVNAuthentication proxy(final SVNAuthentication in, final boolean storeAuth, boolean forceSaving) {
if (forceSaving && storeAuth) {
return putPassedValueAsSave(in, forceSaving);
}
if (in.isStorageAllowed() == storeAuth || ( ! in.isStorageAllowed())) return in;
return putPassedValueAsSave(in, storeAuth);
}
private static SVNAuthentication putPassedValueAsSave(SVNAuthentication in, boolean storeAuth) {
final String userName = in.getUserName();
if (in instanceof SVNPasswordAuthentication) {
return new SVNPasswordAuthentication(userName, ((SVNPasswordAuthentication)in).getPassword(),
storeAuth, in.getURL(), in.isPartial());
} else if (in instanceof SVNSSHAuthentication) {
final SVNSSHAuthentication svnsshAuthentication = (SVNSSHAuthentication)in;
if (svnsshAuthentication.hasPrivateKey()) {
return new SVNSSHAuthentication(userName, svnsshAuthentication.getPrivateKeyFile(), svnsshAuthentication.getPassphrase(),
svnsshAuthentication.getPortNumber(), storeAuth, in.getURL(), in.isPartial());
} else {
return new SVNSSHAuthentication(userName, svnsshAuthentication.getPassword(), svnsshAuthentication.getPortNumber(),
storeAuth, in.getURL(), in.isPartial());
}
} else if (in instanceof SVNSSLAuthentication) {
final SVNSSLAuthentication svnsslAuthentication = (SVNSSLAuthentication)in;
if (SVNSSLAuthentication.MSCAPI.equals(svnsslAuthentication.getSSLKind())) {
return new SVNSSLAuthentication(SVNSSLAuthentication.MSCAPI, svnsslAuthentication.getAlias(), storeAuth, in.getURL(), in.isPartial());
} else {
return new SVNSSLAuthentication(svnsslAuthentication.getCertificateFile(), svnsslAuthentication.getPassword(),
storeAuth, svnsslAuthentication.getURL(), svnsslAuthentication.isPartial());
}
} else if (in instanceof SVNUserNameAuthentication) {
return new SVNUserNameAuthentication(in.getUserName(), storeAuth, in.getURL(), in.isPartial());
}
return in;
}
}