mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
eclipse jps: real levels first, then update elements after .classpath is already read (IDEA-94073)
(cherry picked from commit baeb96e7afad5aee2a0f2196b91ad9c101f9d017)
This commit is contained in:
+20
-3
@@ -34,8 +34,17 @@ public abstract class AbstractIdeaSpecificSettings<T, C, SdkType> {
|
||||
readLanguageLevel(root, model);
|
||||
|
||||
setupCompilerOutputs(root, model);
|
||||
|
||||
updateEntries(root, model);
|
||||
final List entriesElements = root.getChildren(IdeaXml.CONTENT_ENTRY_TAG);
|
||||
if (!entriesElements.isEmpty()) {
|
||||
for (Object o : entriesElements) {
|
||||
readContentEntry((Element)o, createContentEntry(model, ((Element)o).getAttributeValue(IdeaXml.URL_ATTR)), model);
|
||||
}
|
||||
} else {
|
||||
final C[] entries = getEntries(model);//todo
|
||||
if (entries.length > 0) {
|
||||
readContentEntry(root, entries[0], model);
|
||||
}
|
||||
}
|
||||
|
||||
setupJdk(root, model, projectSdkType);
|
||||
setupLibraryRoots(root, model);
|
||||
@@ -43,7 +52,15 @@ public abstract class AbstractIdeaSpecificSettings<T, C, SdkType> {
|
||||
readLibraryLevels(root, levels);
|
||||
}
|
||||
|
||||
public void updateEntries(Element root, T model) {
|
||||
public void initLevels(final Element root, T model, Map<String, String> levels) throws InvalidDataException {
|
||||
expandElement(root, model);
|
||||
readLanguageLevel(root, model);
|
||||
readLibraryLevels(root, levels);
|
||||
}
|
||||
|
||||
public void updateEntries(Element root, T model, @Nullable SdkType projectSdkType) {
|
||||
setupJdk(root, model, projectSdkType);
|
||||
setupCompilerOutputs(root, model);
|
||||
final List entriesElements = root.getChildren(IdeaXml.CONTENT_ENTRY_TAG);
|
||||
if (!entriesElements.isEmpty()) {
|
||||
for (Object o : entriesElements) {
|
||||
|
||||
+2
-2
@@ -54,7 +54,7 @@ public class JpsEclipseClasspathSerializer extends JpsModuleClasspathSerializer
|
||||
final Document emlDocument = JDOMUtil.loadDocument(emlFile);
|
||||
root = emlDocument.getRootElement();
|
||||
settings = new JpsIdeaSpecificSettings(expander);
|
||||
settings.readIDEASpecific(root, module, projectSdkType, levels);
|
||||
settings.initLevels(root, module, levels);
|
||||
} else {
|
||||
settings = null;
|
||||
root = null;
|
||||
@@ -64,7 +64,7 @@ public class JpsEclipseClasspathSerializer extends JpsModuleClasspathSerializer
|
||||
final JpsEclipseClasspathReader reader = new JpsEclipseClasspathReader(classpathDir, paths, new HashSet<String>(), levels);
|
||||
reader.readClasspath(module, null, document.getRootElement(), expander);//todo
|
||||
if (settings != null) {
|
||||
settings.updateEntries(root, module);
|
||||
settings.updateEntries(root, module, projectSdkType);
|
||||
}
|
||||
}
|
||||
catch (Exception e) {
|
||||
|
||||
Reference in New Issue
Block a user