IDEA-96272 Subversion: credentials (not saved) are not preserved within same session if subversion settings are changed (corrected) [^kirill.l]

(cherry-picked from 8a8490d)
This commit is contained in:
irengrig
2012-12-13 15:09:39 +04:00
parent 440bf27a96
commit d4d7f1e870
4 changed files with 28 additions and 18 deletions
@@ -347,7 +347,7 @@ public class SvnAuthenticationNotifier extends GenericNotifierImpl<SvnAuthentica
new Consumer<String>() {
@Override
public void consume(String s) {
configuration.setConfigurationDirectory(s);
configuration.setConfigurationDirParameters(false, s);
}
}, project, null);
}
@@ -277,13 +277,8 @@ public class SvnConfigurable implements Configurable {
public void apply() throws ConfigurationException {
SvnConfiguration configuration = SvnConfiguration.getInstance(myProject);
final String newConfigurationDirectory = myConfigurationDirectoryText.getText();
if (! Comparing.equal(configuration.getConfigurationDirectory(), newConfigurationDirectory)) {
configuration.setConfigurationDirectory(newConfigurationDirectory);
}
if (configuration.isUseDefaultConfiguation() != myUseDefaultCheckBox.isSelected()) {
configuration.setUseDefaultConfiguation(myUseDefaultCheckBox.isSelected());
}
configuration.setConfigurationDirParameters(myUseDefaultCheckBox.isSelected(), myConfigurationDirectoryText.getText());
configuration.setIsUseDefaultProxy(myUseCommonProxy.isSelected());
final SvnVcs vcs17 = SvnVcs.getInstance(myProject);
if ((! configuration.DETECT_NESTED_COPIES) && (configuration.DETECT_NESTED_COPIES != myDetectNestedWorkingCopiesCheckBox.isSelected())) {
@@ -22,10 +22,7 @@ import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.progress.ProgressIndicator;
import com.intellij.openapi.progress.ProgressManager;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.DefaultJDOMExternalizer;
import com.intellij.openapi.util.InvalidDataException;
import com.intellij.openapi.util.Ref;
import com.intellij.openapi.util.WriteExternalException;
import com.intellij.openapi.util.*;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.vcs.changes.VcsAnnotationRefresher;
import org.jdom.Attribute;
@@ -206,12 +203,31 @@ public class SvnConfiguration implements PersistentStateComponent<Element> {
return myIsUseDefaultConfiguration;
}
public void setConfigurationDirectory(String path) {
public void setConfigurationDirParameters(final boolean newUseDefault, final String newConfigurationDirectory) {
final String defaultPath = IdeaSubversionConfigurationDirectory.getPath();
final String oldEffectivePath = isUseDefaultConfiguation() ? defaultPath : getConfigurationDirectory();
final String newEffectivePath = newUseDefault ? defaultPath : newConfigurationDirectory;
boolean directoryChanged = !Comparing.equal(getConfigurationDirectory(), newConfigurationDirectory);
if (directoryChanged) {
setConfigurationDirectory(newConfigurationDirectory);
}
boolean usageChanged = isUseDefaultConfiguation() != newUseDefault;
if (usageChanged) {
setUseDefaultConfiguation(newUseDefault);
}
if (directoryChanged || usageChanged) {
if (! Comparing.equal(oldEffectivePath, newEffectivePath)) {
clear();
}
}
}
private void setConfigurationDirectory(String path) {
myConfigurationDirectory = path;
File dir = path == null ? new File(IdeaSubversionConfigurationDirectory.getPath()) : new File(path);
SVNConfigFile.createDefaultConfiguration(dir);
clear();
}
public void clear() {
@@ -223,9 +239,8 @@ public class SvnConfiguration implements PersistentStateComponent<Element> {
RUNTIME_AUTH_CACHE.clear();
}
public void setUseDefaultConfiguation(boolean useDefault) {
private void setUseDefaultConfiguation(boolean useDefault) {
myIsUseDefaultConfiguration = useDefault;
clear();
}
public ISVNOptions getOptions(Project project) {
@@ -70,7 +70,7 @@ public class SvnAuthenticationTest extends PlatformTestCase {
myConfiguration = SvnConfiguration.getInstance(myProject);
final String configPath = myProject.getBaseDir().getPath() + File.separator + "Subversion";
myConfiguration.setConfigurationDirectory(configPath);
myConfiguration.setConfigurationDirParameters(false, configPath);
final File configFile = new File(configPath);
myFilesToDelete.add(configFile);