diff --git a/java/execution/impl/src/com/intellij/execution/remote/RemoteConfiguration.java b/java/execution/impl/src/com/intellij/execution/remote/RemoteConfiguration.java index 7054fdb3b2eb..8460555c30bf 100644 --- a/java/execution/impl/src/com/intellij/execution/remote/RemoteConfiguration.java +++ b/java/execution/impl/src/com/intellij/execution/remote/RemoteConfiguration.java @@ -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 implements RunConfigurationWithSuppressedDefaultRunAction, RemoteRunProfile { - @Override public void writeExternal(final Element element) throws WriteExternalException { super.writeExternal(element); @@ -100,6 +99,4 @@ public class RemoteConfiguration extends ModuleBasedConfiguration getValidModules() { return getAllModules(); } - - } diff --git a/platform/lang-api/src/com/intellij/execution/configurations/ModuleBasedConfiguration.java b/platform/lang-api/src/com/intellij/execution/configurations/ModuleBasedConfiguration.java index 5ab405254a93..d7e5aa27bf00 100644 --- a/platform/lang-api/src/com/intellij/execution/configurations/ModuleBasedConfiguration.java +++ b/platform/lang-api/src/com/intellij/execution/configurations/ModuleBasedConfiguration.java @@ -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() { - @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)() -> 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 modules = new HashSet<>(); - for (Module classModule : classModules) { + if (originalModule == null) { + return; + } + + Set 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() { diff --git a/platform/lang-api/src/com/intellij/execution/configurations/RunConfigurationModule.java b/platform/lang-api/src/com/intellij/execution/configurations/RunConfigurationModule.java index de230e2e8e0d..100aa02ce077 100644 --- a/platform/lang-api/src/com/intellij/execution/configurations/RunConfigurationModule.java +++ b/platform/lang-api/src/com/intellij/execution/configurations/RunConfigurationModule.java @@ -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 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() { - @Nullable - @Override - public Module compute() { - return getModuleManager().findModuleByName(moduleName); - } - }); + return ApplicationManager.getApplication().runReadAction((Computable)() -> getModuleManager().findModuleByName(moduleName)); } public void setModule(final Module module) { diff --git a/platform/projectModel-api/src/com/intellij/openapi/module/ModuleUtilCore.java b/platform/projectModel-api/src/com/intellij/openapi/module/ModuleUtilCore.java index f5c18dcab0aa..d3a82734d399 100644 --- a/platform/projectModel-api/src/com/intellij/openapi/module/ModuleUtilCore.java +++ b/platform/projectModel-api/src/com/intellij/openapi/module/ModuleUtilCore.java @@ -157,8 +157,10 @@ public class ModuleUtilCore { * @param result resulted set */ public static void collectModulesDependsOn(@NotNull final Module module, @NotNull Set result) { - if (result.contains(module)) return; - result.add(module); + if (!result.add(module)) { + return; + } + final ModuleManager moduleManager = ModuleManager.getInstance(module.getProject()); final List 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;