tests fixed

This commit is contained in:
nik
2010-07-19 11:26:54 +04:00
parent e90c93b546
commit c54cafe975
2 changed files with 23 additions and 14 deletions
@@ -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,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);