mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-18 09:34:34 +07:00
tests fixed
This commit is contained in:
+19
-13
@@ -285,7 +285,7 @@ public class AddSupportForFrameworksPanel implements Disposable {
|
||||
String underlyingFrameworkId = provider.getUnderlyingFrameworkId();
|
||||
FrameworkSupportNode parentNode = null;
|
||||
if (underlyingFrameworkId != null) {
|
||||
FrameworkSupportProvider parentProvider = findProvider(underlyingFrameworkId);
|
||||
FrameworkSupportProvider parentProvider = findProvider(underlyingFrameworkId, myProviders);
|
||||
if (parentProvider == null) {
|
||||
LOG.info("Cannot find id = " + underlyingFrameworkId);
|
||||
return null;
|
||||
@@ -300,8 +300,8 @@ public class AddSupportForFrameworksPanel implements Disposable {
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private FrameworkSupportProvider findProvider(@NotNull String id) {
|
||||
for (FrameworkSupportProvider provider : myProviders) {
|
||||
private static FrameworkSupportProvider findProvider(@NotNull String id, final List<FrameworkSupportProvider> providers) {
|
||||
for (FrameworkSupportProvider provider : providers) {
|
||||
if (id.equals(provider.getId())) {
|
||||
return provider;
|
||||
}
|
||||
@@ -362,13 +362,7 @@ public class AddSupportForFrameworksPanel implements Disposable {
|
||||
}
|
||||
|
||||
private void sortFrameworks(final List<FrameworkSupportNode> nodes) {
|
||||
DFSTBuilder<FrameworkSupportProvider> builder = new DFSTBuilder<FrameworkSupportProvider>(GraphGenerator.create(CachingSemiGraph.create(new ProvidersGraph(myProviders))));
|
||||
if (!builder.isAcyclic()) {
|
||||
Pair<FrameworkSupportProvider,FrameworkSupportProvider> pair = builder.getCircularDependency();
|
||||
LOG.error("Circular dependency between providers '" + pair.getFirst().getId() + "' and '" + pair.getSecond().getId() + "' was found.");
|
||||
}
|
||||
|
||||
final Comparator<FrameworkSupportProvider> comparator = builder.comparator();
|
||||
final Comparator<FrameworkSupportProvider> comparator = getFrameworkSupportProvidersComparator(myProviders);
|
||||
Collections.sort(nodes, new Comparator<FrameworkSupportNode>() {
|
||||
public int compare(final FrameworkSupportNode o1, final FrameworkSupportNode o2) {
|
||||
return comparator.compare(o1.getProvider(), o2.getProvider());
|
||||
@@ -376,7 +370,19 @@ public class AddSupportForFrameworksPanel implements Disposable {
|
||||
});
|
||||
}
|
||||
|
||||
private class ProvidersGraph implements GraphGenerator.SemiGraph<FrameworkSupportProvider> {
|
||||
public static Comparator<FrameworkSupportProvider> getFrameworkSupportProvidersComparator(final List<FrameworkSupportProvider> providers) {
|
||||
DFSTBuilder<FrameworkSupportProvider>
|
||||
builder = new DFSTBuilder<FrameworkSupportProvider>(GraphGenerator.create(CachingSemiGraph.create(
|
||||
new ProvidersGraph(providers))));
|
||||
if (!builder.isAcyclic()) {
|
||||
Pair<FrameworkSupportProvider,FrameworkSupportProvider> pair = builder.getCircularDependency();
|
||||
LOG.error("Circular dependency between providers '" + pair.getFirst().getId() + "' and '" + pair.getSecond().getId() + "' was found.");
|
||||
}
|
||||
|
||||
return builder.comparator();
|
||||
}
|
||||
|
||||
private static class ProvidersGraph implements GraphGenerator.SemiGraph<FrameworkSupportProvider> {
|
||||
private final List<FrameworkSupportProvider> myFrameworkSupportProviders;
|
||||
|
||||
public ProvidersGraph(final List<FrameworkSupportProvider> frameworkSupportProviders) {
|
||||
@@ -392,13 +398,13 @@ public class AddSupportForFrameworksPanel implements Disposable {
|
||||
List<FrameworkSupportProvider> dependencies = new ArrayList<FrameworkSupportProvider>();
|
||||
String underlyingId = provider.getUnderlyingFrameworkId();
|
||||
if (underlyingId != null) {
|
||||
FrameworkSupportProvider underlyingProvider = findProvider(underlyingId);
|
||||
FrameworkSupportProvider underlyingProvider = findProvider(underlyingId, myFrameworkSupportProviders);
|
||||
if (underlyingProvider != null) {
|
||||
dependencies.add(underlyingProvider);
|
||||
}
|
||||
}
|
||||
for (String id : ids) {
|
||||
FrameworkSupportProvider dependency = findProvider(id);
|
||||
FrameworkSupportProvider dependency = findProvider(id, myFrameworkSupportProviders);
|
||||
if (dependency != null) {
|
||||
dependencies.add(dependency);
|
||||
}
|
||||
|
||||
+4
-1
@@ -4,6 +4,7 @@ import com.intellij.facet.Facet;
|
||||
import com.intellij.facet.FacetManager;
|
||||
import com.intellij.facet.FacetTypeId;
|
||||
import com.intellij.facet.ui.FacetBasedFrameworkSupportProvider;
|
||||
import com.intellij.ide.util.newProjectWizard.AddSupportForFrameworksPanel;
|
||||
import com.intellij.ide.util.newProjectWizard.FrameworkSupportNode;
|
||||
import com.intellij.ide.util.newProjectWizard.impl.FrameworkSupportCommunicator;
|
||||
import com.intellij.ide.util.newProjectWizard.impl.FrameworkSupportModelImpl;
|
||||
@@ -31,7 +32,9 @@ public abstract class FrameworkSupportProviderTestCase extends IdeaTestCase {
|
||||
super.setUp();
|
||||
myFrameworkSupportModel = new FrameworkSupportModelImpl(getProject(), null);
|
||||
myNodes = new HashMap<FrameworkSupportProvider, FrameworkSupportNode>();
|
||||
for (FrameworkSupportProvider provider : FrameworkSupportProvider.EXTENSION_POINT.getExtensions()) {
|
||||
final FrameworkSupportProvider[] providers = FrameworkSupportProvider.EXTENSION_POINT.getExtensions().clone();
|
||||
Arrays.sort(providers, AddSupportForFrameworksPanel.getFrameworkSupportProvidersComparator(new ArrayList<FrameworkSupportProvider>(Arrays.asList(providers))));
|
||||
for (FrameworkSupportProvider provider : providers) {
|
||||
final FrameworkSupportNode node = new FrameworkSupportNode(provider, null, myFrameworkSupportModel, null, getTestRootDisposable());
|
||||
myNodes.put(provider, node);
|
||||
myFrameworkSupportModel.registerComponent(provider, node);
|
||||
|
||||
Reference in New Issue
Block a user