This commit is contained in:
Vladimir Krivosheev
2016-11-15 11:45:40 +01:00
parent 0271938840
commit ceb292fc88
4 changed files with 31 additions and 39 deletions
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2014 JetBrains s.r.o.
* Copyright 2000-2016 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.
@@ -43,7 +43,6 @@ import java.util.Collection;
public class RemoteConfiguration extends ModuleBasedConfiguration<JavaRunConfigurationModule>
implements RunConfigurationWithSuppressedDefaultRunAction, RemoteRunProfile {
@Override
public void writeExternal(final Element element) throws WriteExternalException {
super.writeExternal(element);
@@ -100,6 +99,4 @@ public class RemoteConfiguration extends ModuleBasedConfiguration<JavaRunConfigu
public Collection<Module> getValidModules() {
return getAllModules();
}
}
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2009 JetBrains s.r.o.
* Copyright 2000-2016 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.
@@ -25,13 +25,13 @@ import com.intellij.openapi.util.Computable;
import com.intellij.openapi.util.InvalidDataException;
import com.intellij.openapi.util.WriteExternalException;
import com.intellij.util.xmlb.annotations.Property;
import gnu.trove.THashSet;
import org.jdom.Element;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
/**
@@ -68,11 +68,11 @@ public abstract class ModuleBasedConfiguration<ConfigurationModule extends RunCo
myModule.setModule(module);
}
protected void readModule(final Element element) throws InvalidDataException {
protected void readModule(final Element element) {
myModule.readExternal(element);
}
protected void writeModule(final Element element) throws WriteExternalException {
protected void writeModule(final Element element) {
myModule.writeExternal(element);
}
@@ -99,12 +99,13 @@ public abstract class ModuleBasedConfiguration<ConfigurationModule extends RunCo
RunConfiguration configuration = getFactory().createTemplateConfiguration(getProject());
configuration.setName(getName());
configuration.readExternal(element);
return (ModuleBasedConfiguration)configuration;
} catch (InvalidDataException e) {
}
catch (InvalidDataException e) {
LOG.error(e);
return null;
} catch (WriteExternalException e) {
}
catch (WriteExternalException e) {
LOG.error(e);
return null;
}
@@ -113,24 +114,22 @@ public abstract class ModuleBasedConfiguration<ConfigurationModule extends RunCo
@Override
@NotNull
public Module[] getModules() {
return ApplicationManager.getApplication().runReadAction(new Computable<Module[]>() {
@Override
@SuppressWarnings({"ConstantConditions"})
public Module[] compute() {
final Module module = getConfigurationModule().getModule();
return module == null ? Module.EMPTY_ARRAY : new Module[] {module};
}
});
Module module = ApplicationManager.getApplication().runReadAction((Computable<Module>)() -> getConfigurationModule().getModule());
return module == null ? Module.EMPTY_ARRAY : new Module[] {module};
}
public void restoreOriginalModule(final Module originalModule) {
if (originalModule == null) return;
final Module[] classModules = getModules();
final Set<Module> modules = new HashSet<>();
for (Module classModule : classModules) {
if (originalModule == null) {
return;
}
Set<Module> modules = new THashSet<>();
for (Module classModule : getModules()) {
ModuleUtilCore.collectModulesDependsOn(classModule, modules);
}
if (modules.contains(originalModule)) setModule(originalModule);
if (modules.contains(originalModule)) {
setModule(originalModule);
}
}
public void onNewConfigurationCreated() {
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2009 JetBrains s.r.o.
* Copyright 2000-2016 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.
@@ -55,7 +55,6 @@ public class RunConfigurationModule implements JDOMExternalizable {
}
@Override
@SuppressWarnings({"unchecked"})
public void readExternal(@NotNull Element element) {
List<Element> modules = element.getChildren(ELEMENT);
if (!modules.isEmpty()) {
@@ -97,7 +96,8 @@ public class RunConfigurationModule implements JDOMExternalizable {
@Nullable
@Transient
public Module getModule() {
if (myModuleName != null) { //caching
//caching
if (myModuleName != null) {
myModule = findModule(myModuleName);
}
if (myModule != null && myModule.isDisposed()) {
@@ -107,18 +107,11 @@ public class RunConfigurationModule implements JDOMExternalizable {
}
@Nullable
public Module findModule(final String moduleName) {
public Module findModule(@NotNull String moduleName) {
if (myProject.isDisposed()) {
return null;
}
return ApplicationManager.getApplication().runReadAction(new Computable<Module>() {
@Nullable
@Override
public Module compute() {
return getModuleManager().findModuleByName(moduleName);
}
});
return ApplicationManager.getApplication().runReadAction((Computable<Module>)() -> getModuleManager().findModuleByName(moduleName));
}
public void setModule(final Module module) {
@@ -157,8 +157,10 @@ public class ModuleUtilCore {
* @param result resulted set
*/
public static void collectModulesDependsOn(@NotNull final Module module, @NotNull Set<Module> result) {
if (result.contains(module)) return;
result.add(module);
if (!result.add(module)) {
return;
}
final ModuleManager moduleManager = ModuleManager.getInstance(module.getProject());
final List<Module> dependentModules = moduleManager.getModuleDependentModules(module);
for (final Module dependentModule : dependentModules) {
@@ -169,7 +171,8 @@ public class ModuleUtilCore {
if (orderEntry.getModule() == module) {
if (orderEntry.isExported()) {
collectModulesDependsOn(dependentModule, result);
} else {
}
else {
result.add(dependentModule);
}
break;