extend supported cons (IDEA-96625)

This commit is contained in:
anna
2012-12-06 21:16:19 +01:00
parent 9816fad534
commit 6979e2ea22
6 changed files with 27 additions and 20 deletions
@@ -198,9 +198,13 @@ public abstract class AbstractEclipseClasspathReader<T> {
addJUnitDefaultLib(rootModel, junitName, macroMap);
}
else if (path.equals(EclipseXml.GROOVY_DSL_CONTAINER)) {
eclipseModuleManager.setGroovyDslSupport();
eclipseModuleManager.addGroovySupport(EclipseXml.GROOVY_DSL_CONTAINER);
eclipseModuleManager.registerSrcPlace(EclipseXml.GROOVY_DSL_CONTAINER, idx);
}
else if (path.equals(EclipseXml.GROOVY_SUPPORT)) {
eclipseModuleManager.addGroovySupport(EclipseXml.GROOVY_SUPPORT);
eclipseModuleManager.registerSrcPlace(EclipseXml.GROOVY_SUPPORT, idx);
}
else {
eclipseModuleManager.registerUnknownCons(path);
addNamedLibrary(rootModel, new ArrayList<String>(), exported, path, true);
@@ -15,6 +15,7 @@
*/
package org.jetbrains.idea.eclipse;
import com.intellij.util.ArrayUtil;
import org.jetbrains.annotations.Nullable;
import java.util.Set;
@@ -29,9 +30,9 @@ public interface EclipseModuleManager {
@Nullable
String getInvalidJdk();
void setGroovyDslSupport();
void addGroovySupport(String name);
boolean isGroovyDslSupport();
String[] getGroovySupport();
void registerEclipseVariablePath(String path, String var);
@@ -86,11 +87,11 @@ public interface EclipseModuleManager {
}
@Override
public void setGroovyDslSupport() {}
public void addGroovySupport(String name) {}
@Override
public boolean isGroovyDslSupport() {
return false;
public String[] getGroovySupport() {
return ArrayUtil.EMPTY_STRING_ARRAY;
}
@Override
@@ -42,6 +42,7 @@ public interface EclipseXml {
@NonNls String USER_LIBRARY = "org.eclipse.jdt.USER_LIBRARY";
@NonNls String JUNIT_CONTAINER = "org.eclipse.jdt.junit.JUNIT_CONTAINER";
@NonNls String GROOVY_DSL_CONTAINER = "GROOVY_DSL_SUPPORT";
@NonNls String GROOVY_SUPPORT = "GROOVY_SUPPORT";
@NonNls String JUNIT3 = JUNIT_CONTAINER + "/" + "3.8.1";
@NonNls String JUNIT4 = JUNIT_CONTAINER + "/" + "4";
@NonNls String ECLIPSE_PLATFORM = "org.eclipse.pde.core.requiredPlugins";
@@ -23,15 +23,13 @@ import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleServiceManager;
import com.intellij.openapi.roots.impl.storage.ClasspathStorage;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.util.ArrayUtil;
import org.jdom.Element;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.idea.eclipse.EclipseModuleManager;
import org.jetbrains.jps.eclipse.model.JpsEclipseClasspathSerializer;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Set;
import java.util.*;
@State(
name = "EclipseModuleManager",
@@ -64,7 +62,8 @@ public class EclipseModuleManagerImpl implements EclipseModuleManager, Persisten
private int myExpectedModuleSourcePlace;
private Map<String, Integer> mySrcPlace = new LinkedHashMap<String, Integer>();
private String myInvalidJdk;
private boolean myGroovyDslSupport = false;
private Set<String> myGroovyDslSupport = new LinkedHashSet<String>();
public EclipseModuleManagerImpl(Module module) {
myModule = module;
@@ -81,13 +80,13 @@ public class EclipseModuleManagerImpl implements EclipseModuleManager, Persisten
}
@Override
public void setGroovyDslSupport() {
myGroovyDslSupport = true;
public void addGroovySupport(String name) {
myGroovyDslSupport.add(name);
}
@Override
public boolean isGroovyDslSupport() {
return myGroovyDslSupport;
public String[] getGroovySupport() {
return ArrayUtil.toStringArray(myGroovyDslSupport);
}
public static EclipseModuleManagerImpl getInstance(Module module) {
@@ -261,6 +260,7 @@ public class EclipseModuleManagerImpl implements EclipseModuleManager, Persisten
myEclipseVariablePaths.clear();
myUnknownCons.clear();
mySrcPlace.clear();
myGroovyDslSupport.clear();
}
@Override
@@ -98,10 +98,11 @@ public class EclipseClasspathReader extends AbstractEclipseClasspathReader<Modif
}
}
int idx = 0;
final EclipseModuleManagerImpl eclipseModuleManager = EclipseModuleManagerImpl.getInstance(model.getModule());
for (Object o : classpathElement.getChildren(EclipseXml.CLASSPATHENTRY_TAG)) {
try {
readClasspathEntry(model, unknownLibraries, unknownJdks, usedVariables, refsToModules, testPattern, (Element)o, idx++,
EclipseModuleManagerImpl.getInstance(model.getModule()),
eclipseModuleManager,
((BasePathMacroManager)PathMacroManager.getInstance(model.getModule())).getExpandMacroMap());
}
catch (ConversionException e) {
@@ -109,7 +110,7 @@ public class EclipseClasspathReader extends AbstractEclipseClasspathReader<Modif
}
}
if (!model.isSdkInherited() && model.getSdkName() == null) {
EclipseModuleManagerImpl.getInstance(model.getModule()).setForceConfigureJDK();
eclipseModuleManager.setForceConfigureJDK();
model.inheritSdk();
}
}
@@ -80,9 +80,9 @@ public class EclipseClasspathWriter {
outputPath = EPathUtil.collapse2EclipsePath(compilerOutputUrl, myModel);
}
}
if (eclipseModuleManager.isGroovyDslSupport()) {
final Integer place = eclipseModuleManager.getSrcPlace(EclipseXml.GROOVY_DSL_CONTAINER);
addOrderEntry(EclipseXml.CON_KIND, EclipseXml.GROOVY_DSL_CONTAINER, classpathElement, place != null ? place.intValue() : -1);
for (String support : eclipseModuleManager.getGroovySupport()) {
final Integer place = eclipseModuleManager.getSrcPlace(support);
addOrderEntry(EclipseXml.CON_KIND, support, classpathElement, place != null ? place.intValue() : -1);
}
final Element orderEntry = addOrderEntry(EclipseXml.OUTPUT_KIND, outputPath, classpathElement);
setAttributeIfAbsent(orderEntry, EclipseXml.PATH_ATTR, EclipseXml.BIN_DIR);