eclipse: load specific jdk for external build (IDEA-94868)

(cherry picked from commit 3f08c4e8b2181384cbc5f5ace2c637d23f42992a)
This commit is contained in:
anna
2012-11-23 21:13:42 +01:00
parent 5abb53e257
commit 1ecf71f23e
2 changed files with 30 additions and 12 deletions
@@ -22,10 +22,8 @@ import com.intellij.util.ArrayUtil;
import org.jdom.Element;
import org.jetbrains.idea.eclipse.IdeaXml;
import org.jetbrains.idea.eclipse.conversion.AbstractIdeaSpecificSettings;
import org.jetbrains.jps.model.java.JavaSourceRootType;
import org.jetbrains.jps.model.java.JpsJavaExtensionService;
import org.jetbrains.jps.model.java.JpsJavaModuleExtension;
import org.jetbrains.jps.model.java.JpsJavaSdkType;
import org.jetbrains.jps.model.java.*;
import org.jetbrains.jps.model.library.sdk.JpsSdkType;
import org.jetbrains.jps.model.module.JpsDependenciesList;
import org.jetbrains.jps.model.module.JpsModule;
import org.jetbrains.jps.model.module.JpsModuleSourceRoot;
@@ -63,14 +61,26 @@ class JpsIdeaSpecificSettings extends AbstractIdeaSpecificSettings<JpsModule, St
@Override
protected void setupJdk(Element root, JpsModule model) {
final String inheritJdk = root.getAttributeValue("inheritJdk");
final JpsDependenciesList dependenciesList = model.getDependenciesList();
if (inheritJdk != null && Boolean.parseBoolean(inheritJdk)) {
final JpsDependenciesList dependenciesList = model.getDependenciesList();
dependenciesList.addSdkDependency(JpsJavaSdkType.INSTANCE);
}
else {
final String jdkName = root.getAttributeValue("jdk");
if (jdkName != null) {
JpsSdkTableSerializer.setSdkReference(model.getSdkReferencesTable(), jdkName, JpsJavaSdkType.INSTANCE);
String jdkType = root.getAttributeValue("jdk_type");
JpsSdkType<?> sdkType = null;
if (jdkType != null) {
sdkType = JpsSdkTableSerializer.getSdkType(jdkType);
}
if (sdkType == null) {
sdkType = JpsJavaSdkType.INSTANCE;
}
dependenciesList.addSdkDependency(sdkType);
JpsSdkTableSerializer.setSdkReference(model.getSdkReferencesTable(), jdkName, sdkType);
if (sdkType instanceof JpsJavaSdkTypeWrapper) {
dependenciesList.addSdkDependency(JpsJavaSdkType.INSTANCE);
}
}
}
}
@@ -27,6 +27,7 @@ import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleManager;
import com.intellij.openapi.module.ModuleUtil;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.projectRoots.JavaSdk;
import com.intellij.openapi.projectRoots.ProjectJdkTable;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.roots.*;
@@ -308,13 +309,20 @@ public class IdeaSpecificSettings extends AbstractIdeaSpecificSettings<Modifiabl
isModified = true;
}
}
if (entry instanceof JdkOrderEntry && EclipseModuleManagerImpl.getInstance(entry.getOwnerModule()).getInvalidJdk() != null) {
if (entry instanceof InheritedJdkOrderEntry) {
root.setAttribute(INHERIT_JDK, "true");
} else {
root.setAttribute("jdk", ((JdkOrderEntry)entry).getJdkName());
if (entry instanceof JdkOrderEntry) {
final Sdk jdk = ((JdkOrderEntry)entry).getJdk();
if (EclipseModuleManagerImpl.getInstance(entry.getOwnerModule()).getInvalidJdk() != null ||
(jdk != null && !(jdk.getSdkType() instanceof JavaSdk))) {
if (entry instanceof InheritedJdkOrderEntry) {
root.setAttribute(INHERIT_JDK, "true");
} else {
root.setAttribute("jdk", ((JdkOrderEntry)entry).getJdkName());
if (jdk != null) {
root.setAttribute("jdk_type", jdk.getSdkType().getName());
}
}
isModified = true;
}
isModified = true;
}
if (!(entry instanceof LibraryOrderEntry)) continue;