diff --git a/java/idea-ui/src/com/intellij/ide/impl/NewProjectUtil.java b/java/idea-ui/src/com/intellij/ide/impl/NewProjectUtil.java index f725208093ba..41ce665cc145 100644 --- a/java/idea-ui/src/com/intellij/ide/impl/NewProjectUtil.java +++ b/java/idea-ui/src/com/intellij/ide/impl/NewProjectUtil.java @@ -192,15 +192,16 @@ public class NewProjectUtil { } public static void applyJdkToProject(@NotNull Project project, @NotNull Sdk jdk) { - JavaSdkVersion version = JavaSdk.getInstance().getVersion(jdk); - if (version == null) return; - ProjectRootManagerEx rootManager = ProjectRootManagerEx.getInstanceEx(project); rootManager.setProjectSdk(jdk); - LanguageLevel level = version.getMaxLanguageLevel(); - LanguageLevelProjectExtension ext = LanguageLevelProjectExtension.getInstance(project); - if (level.compareTo(ext.getLanguageLevel()) < 0) { - ext.setLanguageLevel(level); + + JavaSdkVersion version = JavaSdk.getInstance().getVersion(jdk); + if (version != null) { + LanguageLevel level = version.getMaxLanguageLevel(); + LanguageLevelProjectExtension ext = LanguageLevelProjectExtension.getInstance(project); + if (level.compareTo(ext.getLanguageLevel()) < 0) { + ext.setLanguageLevel(level); + } } } diff --git a/java/idea-ui/src/com/intellij/ide/util/projectWizard/importSources/impl/ProjectFromSourcesBuilderImpl.java b/java/idea-ui/src/com/intellij/ide/util/projectWizard/importSources/impl/ProjectFromSourcesBuilderImpl.java index d7f56497e4f6..1ed00b0c054a 100644 --- a/java/idea-ui/src/com/intellij/ide/util/projectWizard/importSources/impl/ProjectFromSourcesBuilderImpl.java +++ b/java/idea-ui/src/com/intellij/ide/util/projectWizard/importSources/impl/ProjectFromSourcesBuilderImpl.java @@ -35,7 +35,6 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.module.*; import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.project.Project; -import com.intellij.openapi.projectRoots.JavaSdk; import com.intellij.openapi.projectRoots.Sdk; import com.intellij.openapi.roots.*; import com.intellij.openapi.roots.libraries.Library; @@ -55,6 +54,7 @@ import com.intellij.util.containers.MultiMap; import org.jdom.Element; import org.jdom.JDOMException; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.io.File; import java.io.IOException; @@ -357,20 +357,31 @@ public class ProjectFromSourcesBuilderImpl extends ProjectBuilder implements Pro for (ProjectDescriptor projectDescriptor : getSelectedDescriptors()) { for (ModuleDescriptor moduleDescriptor : projectDescriptor.getModules()) { try { - final File file = new File(moduleDescriptor.computeModuleFilePath()); - if (file.exists()) { - final Element rootElement = JDOMUtil.loadDocument(file).getRootElement(); - final String type = rootElement.getAttributeValue("type"); - if (type != null) { - final ModuleType moduleType = ModuleTypeManager.getInstance().findByID(type); - if (moduleType != null && !moduleType.createModuleBuilder().isSuitableSdk(sdk)) return false; - } - } + final ModuleType moduleType = getModuleType(moduleDescriptor); + if (moduleType != null && !moduleType.createModuleBuilder().isSuitableSdk(sdk)) return false; } catch (Exception ignore) { } } } - return sdk.getSdkType() == JavaSdk.getInstance(); + return true; + } + + @Nullable + private static ModuleType getModuleType(ModuleDescriptor moduleDescriptor) throws InvalidDataException, JDOMException, IOException { + if (moduleDescriptor.isReuseExistingElement()) { + final File file = new File(moduleDescriptor.computeModuleFilePath()); + if (file.exists()) { + final Element rootElement = JDOMUtil.loadDocument(file).getRootElement(); + final String type = rootElement.getAttributeValue("type"); + if (type != null) { + return ModuleTypeManager.getInstance().findByID(type); + } + } + return null; + } + else { + return moduleDescriptor.getModuleType(); + } } }