mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
eclipse: extend nature importer to provide specific cons
This commit is contained in:
@@ -68,6 +68,8 @@ public abstract class AbstractEclipseClasspathReader<T> {
|
||||
String srcUrl, ExpandMacroToPathMap macroMap);
|
||||
protected abstract String expandEclipsePath2Url(T rootModel, String path);
|
||||
|
||||
protected abstract Set<String> getDefinedCons();
|
||||
|
||||
protected abstract int rearrange(T rootModel);
|
||||
|
||||
protected void readClasspathEntry(T rootModel,
|
||||
@@ -197,18 +199,15 @@ public abstract class AbstractEclipseClasspathReader<T> {
|
||||
else if (path.startsWith(EclipseXml.JUNIT_CONTAINER)) {
|
||||
final String junitName = IdeaXml.JUNIT + getPresentableName(path);
|
||||
addJUnitDefaultLib(rootModel, junitName, macroMap);
|
||||
}
|
||||
else if (path.equals(EclipseXml.GROOVY_DSL_CONTAINER)) {
|
||||
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);
|
||||
} else {
|
||||
final Set<String> registeredCons = getDefinedCons();
|
||||
if (registeredCons.contains(path)) {
|
||||
eclipseModuleManager.registerCon(path);
|
||||
eclipseModuleManager.registerSrcPlace(path, idx);
|
||||
} else {
|
||||
eclipseModuleManager.registerUnknownCons(path);
|
||||
addNamedLibrary(rootModel, new ArrayList<String>(), exported, path, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -30,9 +30,9 @@ public interface EclipseModuleManager {
|
||||
@Nullable
|
||||
String getInvalidJdk();
|
||||
|
||||
void addGroovySupport(String name);
|
||||
void registerCon(String name);
|
||||
|
||||
String[] getGroovySupport();
|
||||
String[] getUsedCons();
|
||||
|
||||
void registerEclipseVariablePath(String path, String var);
|
||||
|
||||
@@ -87,10 +87,10 @@ public interface EclipseModuleManager {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addGroovySupport(String name) {}
|
||||
public void registerCon(String name) {}
|
||||
|
||||
@Override
|
||||
public String[] getGroovySupport() {
|
||||
public String[] getUsedCons() {
|
||||
return ArrayUtil.EMPTY_STRING_ARRAY;
|
||||
}
|
||||
|
||||
|
||||
+5
@@ -200,6 +200,11 @@ class JpsEclipseClasspathReader extends AbstractEclipseClasspathReader<JpsModule
|
||||
return prepareValidUrlInsideJar(url);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Set<String> getDefinedCons() {
|
||||
return Collections.emptySet();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected int rearrange(JpsModule rootModel) {
|
||||
|
||||
@@ -63,7 +63,7 @@ public class EclipseModuleManagerImpl implements EclipseModuleManager, Persisten
|
||||
private Map<String, Integer> mySrcPlace = new LinkedHashMap<String, Integer>();
|
||||
private String myInvalidJdk;
|
||||
|
||||
private Set<String> myGroovyDslSupport = new LinkedHashSet<String>();
|
||||
private Set<String> myKnownCons = new LinkedHashSet<String>();
|
||||
|
||||
public EclipseModuleManagerImpl(Module module) {
|
||||
myModule = module;
|
||||
@@ -80,13 +80,13 @@ public class EclipseModuleManagerImpl implements EclipseModuleManager, Persisten
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addGroovySupport(String name) {
|
||||
myGroovyDslSupport.add(name);
|
||||
public void registerCon(String name) {
|
||||
myKnownCons.add(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] getGroovySupport() {
|
||||
return ArrayUtil.toStringArray(myGroovyDslSupport);
|
||||
public String[] getUsedCons() {
|
||||
return ArrayUtil.toStringArray(myKnownCons);
|
||||
}
|
||||
|
||||
public static EclipseModuleManagerImpl getInstance(Module module) {
|
||||
@@ -260,7 +260,7 @@ public class EclipseModuleManagerImpl implements EclipseModuleManager, Persisten
|
||||
myEclipseVariablePaths.clear();
|
||||
myUnknownCons.clear();
|
||||
mySrcPlace.clear();
|
||||
myGroovyDslSupport.clear();
|
||||
myKnownCons.clear();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -41,6 +41,7 @@ import org.jdom.Element;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.idea.eclipse.*;
|
||||
import org.jetbrains.idea.eclipse.config.EclipseModuleManagerImpl;
|
||||
import org.jetbrains.idea.eclipse.importWizard.EclipseNatureImporter;
|
||||
import org.jetbrains.idea.eclipse.util.ErrorLog;
|
||||
|
||||
import java.io.IOException;
|
||||
@@ -127,6 +128,11 @@ public class EclipseClasspathReader extends AbstractEclipseClasspathReader<Modif
|
||||
return EPathUtil.expandEclipsePath2Url(path, rootModel, myCurrentRoots);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Set<String> getDefinedCons() {
|
||||
return EclipseNatureImporter.getAllDefinedCons();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void addModuleLibrary(ModifiableRootModel rootModel,
|
||||
Element element,
|
||||
|
||||
+1
-1
@@ -80,7 +80,7 @@ public class EclipseClasspathWriter {
|
||||
outputPath = EPathUtil.collapse2EclipsePath(compilerOutputUrl, myModel);
|
||||
}
|
||||
}
|
||||
for (String support : eclipseModuleManager.getGroovySupport()) {
|
||||
for (String support : eclipseModuleManager.getUsedCons()) {
|
||||
final Integer place = eclipseModuleManager.getSrcPlace(support);
|
||||
addOrderEntry(EclipseXml.CON_KIND, support, classpathElement, place != null ? place.intValue() : -1);
|
||||
}
|
||||
|
||||
+31
@@ -1,11 +1,30 @@
|
||||
/*
|
||||
* Copyright 2000-2013 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.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.jetbrains.idea.eclipse.importWizard;
|
||||
|
||||
import com.intellij.openapi.extensions.ExtensionPointName;
|
||||
import com.intellij.openapi.extensions.Extensions;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.util.containers.HashSet;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.idea.eclipse.EclipseXml;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* @author Eugene.Kudelevsky
|
||||
@@ -16,6 +35,18 @@ public abstract class EclipseNatureImporter {
|
||||
|
||||
@NotNull
|
||||
public abstract String getNatureName();
|
||||
public abstract Set<String> getProvidedCons();
|
||||
|
||||
public abstract void doImport(@NotNull Project project, @NotNull List<Module> modules);
|
||||
|
||||
public static Set<String> getAllDefinedCons() {
|
||||
final Set<String> allCons = new HashSet<String>();
|
||||
allCons.add(EclipseXml.GROOVY_SUPPORT);
|
||||
allCons.add(EclipseXml.GROOVY_DSL_CONTAINER);
|
||||
|
||||
for (EclipseNatureImporter provider : Extensions.getExtensions(EP_NAME)) {
|
||||
allCons.addAll(provider.getProvidedCons());
|
||||
}
|
||||
return allCons;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user