mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Maven: reinit embedder on settings changes, e.g. offline mode settings (IDEA-17589)
This commit is contained in:
Binary file not shown.
@@ -255,11 +255,11 @@ public class MavenFacadeManager extends RemoteObjectWrapper<MavenFacade> {
|
||||
}
|
||||
|
||||
public MavenEmbedderWrapper createEmbedder(final Project project) {
|
||||
final MavenFacadeSettings settings = convertSettings(MavenProjectsManager.getInstance(project).getGeneralSettings());
|
||||
return new MavenEmbedderWrapper(this) {
|
||||
@NotNull
|
||||
@Override
|
||||
protected MavenFacadeEmbedder create() throws RemoteException {
|
||||
final MavenFacadeSettings settings = convertSettings(MavenProjectsManager.getInstance(project).getGeneralSettings());
|
||||
return MavenFacadeManager.this.getOrCreateWrappee().createEmbedder(settings);
|
||||
}
|
||||
};
|
||||
|
||||
+4
@@ -133,6 +133,8 @@ public abstract class MavenGeneralConfigurable implements SearchableConfigurable
|
||||
}
|
||||
|
||||
private void setData(MavenGeneralSettings data) {
|
||||
data.beginUpdate();
|
||||
|
||||
data.setWorkOffline(checkboxWorkOffline.isSelected());
|
||||
mavenPathsForm.setData(data);
|
||||
|
||||
@@ -145,6 +147,8 @@ public abstract class MavenGeneralConfigurable implements SearchableConfigurable
|
||||
data.setFailureBehavior((MavenExecutionOptions.FailureMode)ComboBoxUtil.getSelectedValue(failPolicyComboModel));
|
||||
data.setPluginUpdatePolicy((MavenExecutionOptions.PluginUpdatePolicy)ComboBoxUtil.getSelectedValue(pluginUpdatePolicyComboModel));
|
||||
data.setSnapshotUpdatePolicy((MavenExecutionOptions.SnapshotUpdatePolicy)ComboBoxUtil.getSelectedValue(snapshotUpdatePolicyComboModel));
|
||||
|
||||
data.endUpdate();
|
||||
}
|
||||
|
||||
private void getData(MavenGeneralSettings data) {
|
||||
|
||||
+54
-35
@@ -32,35 +32,54 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
@SuppressWarnings({"UnusedDeclaration"})
|
||||
public class MavenGeneralSettings implements Cloneable {
|
||||
private boolean workOffline = false;
|
||||
private String mavenHome = "";
|
||||
private String mavenSettingsFile = "";
|
||||
private String overridenLocalRepository = "";
|
||||
private String overriddenLocalRepository = "";
|
||||
private boolean printErrorStackTraces = false;
|
||||
private boolean usePluginRegistry = false;
|
||||
private boolean nonRecursive = false;
|
||||
|
||||
private MavenExecutionOptions.LoggingLevel outputLevel = MavenExecutionOptions.LoggingLevel.INFO;
|
||||
private MavenExecutionOptions.ChecksumPolicy checksumPolicy = MavenExecutionOptions.ChecksumPolicy.FAIL;
|
||||
private MavenExecutionOptions.FailureMode failureBehavior = MavenExecutionOptions.FailureMode.FAST;
|
||||
private MavenExecutionOptions.SnapshotUpdatePolicy snapshotUpdatePolicy = MavenExecutionOptions.SnapshotUpdatePolicy.ALWAYS_UPDATE;
|
||||
private MavenExecutionOptions.PluginUpdatePolicy pluginUpdatePolicy = MavenExecutionOptions.PluginUpdatePolicy.DO_NOT_UPDATE;
|
||||
|
||||
private volatile File myEffectiveLocalRepositoryCache;
|
||||
private volatile Set<String> myDefaultPluginsCache;
|
||||
private File myEffectiveLocalRepositoryCache;
|
||||
private Set<String> myDefaultPluginsCache;
|
||||
|
||||
private int myBulkUpdateLevel = 0;
|
||||
private List<Listener> myListeners = ContainerUtil.createEmptyCOWList();
|
||||
|
||||
public
|
||||
public void beginUpdate() {
|
||||
myBulkUpdateLevel++;
|
||||
}
|
||||
|
||||
public void endUpdate() {
|
||||
if (--myBulkUpdateLevel == 0) {
|
||||
changed();
|
||||
}
|
||||
}
|
||||
|
||||
public void changed() {
|
||||
if (myBulkUpdateLevel > 0) return;
|
||||
|
||||
myEffectiveLocalRepositoryCache = null;
|
||||
myDefaultPluginsCache = null;
|
||||
fireChanged();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
MavenExecutionOptions.PluginUpdatePolicy getPluginUpdatePolicy() {
|
||||
public MavenExecutionOptions.PluginUpdatePolicy getPluginUpdatePolicy() {
|
||||
return pluginUpdatePolicy;
|
||||
}
|
||||
|
||||
public void setPluginUpdatePolicy(MavenExecutionOptions.PluginUpdatePolicy value) {
|
||||
if (value == null) return; // null may come from deserializator
|
||||
this.pluginUpdatePolicy = value;
|
||||
changed();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -71,6 +90,7 @@ public class MavenGeneralSettings implements Cloneable {
|
||||
public void setChecksumPolicy(MavenExecutionOptions.ChecksumPolicy value) {
|
||||
if (value == null) return; // null may come from deserializator
|
||||
this.checksumPolicy = value;
|
||||
changed();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -81,6 +101,7 @@ public class MavenGeneralSettings implements Cloneable {
|
||||
public void setFailureBehavior(MavenExecutionOptions.FailureMode value) {
|
||||
if (value == null) return; // null may come from deserializator
|
||||
this.failureBehavior = value;
|
||||
changed();
|
||||
}
|
||||
|
||||
public
|
||||
@@ -92,6 +113,7 @@ public class MavenGeneralSettings implements Cloneable {
|
||||
public void setOutputLevel(MavenExecutionOptions.LoggingLevel value) {
|
||||
if (value == null) return; // null may come from deserializator
|
||||
this.outputLevel = value;
|
||||
changed();
|
||||
}
|
||||
|
||||
public
|
||||
@@ -103,6 +125,7 @@ public class MavenGeneralSettings implements Cloneable {
|
||||
public void setSnapshotUpdatePolicy(MavenExecutionOptions.SnapshotUpdatePolicy value) {
|
||||
if (value == null) return; // null may come from deserializator
|
||||
this.snapshotUpdatePolicy = value;
|
||||
changed();
|
||||
}
|
||||
|
||||
public boolean isWorkOffline() {
|
||||
@@ -111,29 +134,30 @@ public class MavenGeneralSettings implements Cloneable {
|
||||
|
||||
public void setWorkOffline(boolean workOffline) {
|
||||
this.workOffline = workOffline;
|
||||
changed();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public String getOverridenLocalRepository() {
|
||||
return overridenLocalRepository;
|
||||
public String getOverriddenLocalRepository() {
|
||||
return overriddenLocalRepository;
|
||||
}
|
||||
|
||||
public File getEffectiveLocalRepository() {
|
||||
File result = myEffectiveLocalRepositoryCache;
|
||||
if (result != null) return result;
|
||||
|
||||
result = MavenUtil.resolveLocalRepository(overridenLocalRepository, mavenHome, mavenSettingsFile);
|
||||
result = MavenUtil.resolveLocalRepository(overriddenLocalRepository, mavenHome, mavenSettingsFile);
|
||||
myEffectiveLocalRepositoryCache = result;
|
||||
return result;
|
||||
}
|
||||
|
||||
public void setOverridenLocalRepository(final @Nullable String overridenLocalRepository) {
|
||||
if (overridenLocalRepository != null) {
|
||||
if (!Comparing.equal(this.overridenLocalRepository, overridenLocalRepository)) {
|
||||
this.overridenLocalRepository = overridenLocalRepository;
|
||||
public void setOverriddenLocalRepository(final @Nullable String overridenLocalRepository) {
|
||||
if (overridenLocalRepository == null) return;
|
||||
|
||||
localRepositoryChanged();
|
||||
}
|
||||
if (!Comparing.equal(this.overriddenLocalRepository, overridenLocalRepository)) {
|
||||
this.overriddenLocalRepository = overridenLocalRepository;
|
||||
|
||||
changed();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -147,7 +171,7 @@ public class MavenGeneralSettings implements Cloneable {
|
||||
this.mavenHome = mavenHome;
|
||||
|
||||
myDefaultPluginsCache = null;
|
||||
pathsChanged();
|
||||
changed();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -162,23 +186,14 @@ public class MavenGeneralSettings implements Cloneable {
|
||||
}
|
||||
|
||||
public void setMavenSettingsFile(@Nullable String mavenSettingsFile) {
|
||||
if (mavenSettingsFile != null) {
|
||||
if (!Comparing.equal(this.mavenSettingsFile, mavenSettingsFile)) {
|
||||
this.mavenSettingsFile = mavenSettingsFile;
|
||||
pathsChanged();
|
||||
}
|
||||
if (mavenSettingsFile == null) return;
|
||||
|
||||
if (!Comparing.equal(this.mavenSettingsFile, mavenSettingsFile)) {
|
||||
this.mavenSettingsFile = mavenSettingsFile;
|
||||
changed();
|
||||
}
|
||||
}
|
||||
|
||||
public void localRepositoryChanged() {
|
||||
pathsChanged();
|
||||
}
|
||||
|
||||
private void pathsChanged() {
|
||||
myEffectiveLocalRepositoryCache = null;
|
||||
fidePathsChanged();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public File getEffectiveUserSettingsIoFile() {
|
||||
return MavenUtil.resolveUserSettingsFile(getMavenSettingsFile());
|
||||
@@ -242,6 +257,7 @@ public class MavenGeneralSettings implements Cloneable {
|
||||
|
||||
public void setPrintErrorStackTraces(boolean value) {
|
||||
printErrorStackTraces = value;
|
||||
changed();
|
||||
}
|
||||
|
||||
public boolean isUsePluginRegistry() {
|
||||
@@ -250,6 +266,7 @@ public class MavenGeneralSettings implements Cloneable {
|
||||
|
||||
public void setUsePluginRegistry(final boolean usePluginRegistry) {
|
||||
this.usePluginRegistry = usePluginRegistry;
|
||||
changed();
|
||||
}
|
||||
|
||||
public boolean isNonRecursive() {
|
||||
@@ -258,6 +275,7 @@ public class MavenGeneralSettings implements Cloneable {
|
||||
|
||||
public void setNonRecursive(final boolean nonRecursive) {
|
||||
this.nonRecursive = nonRecursive;
|
||||
changed();
|
||||
}
|
||||
|
||||
public boolean equals(final Object o) {
|
||||
@@ -275,7 +293,7 @@ public class MavenGeneralSettings implements Cloneable {
|
||||
if (workOffline != that.workOffline) return false;
|
||||
if (!checksumPolicy.equals(that.checksumPolicy)) return false;
|
||||
if (!failureBehavior.equals(that.failureBehavior)) return false;
|
||||
if (!overridenLocalRepository.equals(that.overridenLocalRepository)) return false;
|
||||
if (!overriddenLocalRepository.equals(that.overriddenLocalRepository)) return false;
|
||||
if (!mavenHome.equals(that.mavenHome)) return false;
|
||||
if (!mavenSettingsFile.equals(that.mavenSettingsFile)) return false;
|
||||
|
||||
@@ -287,7 +305,7 @@ public class MavenGeneralSettings implements Cloneable {
|
||||
result = (workOffline ? 1 : 0);
|
||||
result = 31 * result + mavenHome.hashCode();
|
||||
result = 31 * result + mavenSettingsFile.hashCode();
|
||||
result = 31 * result + overridenLocalRepository.hashCode();
|
||||
result = 31 * result + overriddenLocalRepository.hashCode();
|
||||
result = 31 * result + (printErrorStackTraces ? 1 : 0);
|
||||
result = 31 * result + (usePluginRegistry ? 1 : 0);
|
||||
result = 31 * result + (nonRecursive ? 1 : 0);
|
||||
@@ -304,6 +322,7 @@ public class MavenGeneralSettings implements Cloneable {
|
||||
try {
|
||||
MavenGeneralSettings result = (MavenGeneralSettings)super.clone();
|
||||
result.myListeners = ContainerUtil.createEmptyCOWList();
|
||||
result.myBulkUpdateLevel = 0;
|
||||
return result;
|
||||
}
|
||||
catch (CloneNotSupportedException e) {
|
||||
@@ -319,13 +338,13 @@ public class MavenGeneralSettings implements Cloneable {
|
||||
myListeners.remove(l);
|
||||
}
|
||||
|
||||
private void fidePathsChanged() {
|
||||
private void fireChanged() {
|
||||
for (Listener each : myListeners) {
|
||||
each.pathsChanged();
|
||||
each.changed();
|
||||
}
|
||||
}
|
||||
|
||||
public interface Listener {
|
||||
void pathsChanged();
|
||||
void changed();
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -142,7 +142,7 @@ public class MavenProjectsManagerWatcher {
|
||||
EditorFactory.getInstance().getEventMulticaster().addDocumentListener(myDocumentListener, myBusConnection);
|
||||
|
||||
final MavenGeneralSettings.Listener mySettingsPathsChangesListener = new MavenGeneralSettings.Listener() {
|
||||
public void pathsChanged() {
|
||||
public void changed() {
|
||||
updateSettingsFilePointers();
|
||||
onSettingsChange();
|
||||
}
|
||||
@@ -256,7 +256,7 @@ public class MavenProjectsManagerWatcher {
|
||||
}
|
||||
|
||||
private void onSettingsXmlChange() {
|
||||
myGeneralSettings.localRepositoryChanged();
|
||||
myGeneralSettings.changed();
|
||||
// onSettingsChange() will be called indirectly by pathsChanged listener on GeneralSettings object
|
||||
}
|
||||
|
||||
|
||||
@@ -251,7 +251,7 @@ public abstract class MavenTestCase extends UsefulTestCase {
|
||||
}
|
||||
|
||||
protected void setRepositoryPath(String path) {
|
||||
getMavenGeneralSettings().setOverridenLocalRepository(path);
|
||||
getMavenGeneralSettings().setOverriddenLocalRepository(path);
|
||||
}
|
||||
|
||||
protected String getProjectPath() {
|
||||
|
||||
+2
-1
@@ -50,7 +50,8 @@ public class MavenIndicesTestFixture {
|
||||
addToRepository(each);
|
||||
}
|
||||
|
||||
MavenProjectsManager.getInstance(myProject).getGeneralSettings().setOverridenLocalRepository(myRepositoryHelper.getTestDataPath(myLocalRepoDir));
|
||||
MavenProjectsManager.getInstance(myProject).getGeneralSettings().setOverriddenLocalRepository(
|
||||
myRepositoryHelper.getTestDataPath(myLocalRepoDir));
|
||||
|
||||
getIndicesManager().setTestIndexDir(new File(myDir, "MavenIndices"));
|
||||
myIndicesManager = MavenProjectIndicesManager.getInstance(myProject);
|
||||
|
||||
@@ -26,7 +26,7 @@ public class MavenSettingsTest extends MavenTestCase {
|
||||
MavenGeneralSettings s = new MavenGeneralSettings();
|
||||
s.addListener(new MavenGeneralSettings.Listener() {
|
||||
@Override
|
||||
public void pathsChanged() {
|
||||
public void changed() {
|
||||
log[0] += "changed ";
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user