diff --git a/java/compiler/impl/src/com/intellij/compiler/ant/GenerationOptionsImpl.java b/java/compiler/impl/src/com/intellij/compiler/ant/GenerationOptionsImpl.java index ada7b733dfb1..a72e6e086e70 100644 --- a/java/compiler/impl/src/com/intellij/compiler/ant/GenerationOptionsImpl.java +++ b/java/compiler/impl/src/com/intellij/compiler/ant/GenerationOptionsImpl.java @@ -33,6 +33,7 @@ import com.intellij.util.containers.ContainerUtil; import com.intellij.util.graph.CachingSemiGraph; import com.intellij.util.graph.Graph; import com.intellij.util.graph.GraphGenerator; +import com.intellij.util.graph.InboundSemiGraph; import java.io.File; import java.util.*; @@ -229,30 +230,29 @@ public class GenerationOptionsImpl extends GenerationOptions { reverseMap.put(moduleChunk, chunk); } - final Graph moduleChunkGraph = - GraphGenerator.create(CachingSemiGraph.create(new GraphGenerator.SemiGraph() { - public Collection getNodes() { - return map.values(); - } + final Graph moduleChunkGraph = GraphGenerator.generate(CachingSemiGraph.cache(new InboundSemiGraph() { + public Collection getNodes() { + return map.values(); + } - public Iterator getIn(ModuleChunk n) { - final Chunk chunk = reverseMap.get(n); - final Iterator> in = chunkGraph.getIn(chunk); - return new Iterator() { - public boolean hasNext() { - return in.hasNext(); - } + public Iterator getIn(ModuleChunk n) { + final Chunk chunk = reverseMap.get(n); + final Iterator> in = chunkGraph.getIn(chunk); + return new Iterator() { + public boolean hasNext() { + return in.hasNext(); + } - public ModuleChunk next() { - return map.get(in.next()); - } + public ModuleChunk next() { + return map.get(in.next()); + } - public void remove() { - throw new IncorrectOperationException("Method is not supported"); - } - }; - } - })); + public void remove() { + throw new IncorrectOperationException("Method is not supported"); + } + }; + } + })); final Collection nodes = moduleChunkGraph.getNodes(); final ModuleChunk[] moduleChunks = nodes.toArray(new ModuleChunk[nodes.size()]); for (ModuleChunk moduleChunk : moduleChunks) { diff --git a/java/compiler/openapi/src/com/intellij/compiler/ModuleCompilerUtil.java b/java/compiler/openapi/src/com/intellij/compiler/ModuleCompilerUtil.java index 43ec173ad34b..3e25ba278d01 100644 --- a/java/compiler/openapi/src/com/intellij/compiler/ModuleCompilerUtil.java +++ b/java/compiler/openapi/src/com/intellij/compiler/ModuleCompilerUtil.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2014 JetBrains s.r.o. + * Copyright 2000-2016 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. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.intellij.compiler; import com.intellij.openapi.application.Application; @@ -25,10 +24,8 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.*; import com.intellij.openapi.roots.ui.configuration.DefaultModulesProvider; import com.intellij.openapi.roots.ui.configuration.ModulesProvider; -import com.intellij.openapi.util.Condition; import com.intellij.openapi.util.Couple; import com.intellij.util.Chunk; -import com.intellij.util.Processor; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.graph.*; import org.jetbrains.annotations.NotNull; @@ -49,7 +46,7 @@ public final class ModuleCompilerUtil { } public static Graph createModuleGraph(final Module[] modules) { - return GraphGenerator.create(CachingSemiGraph.create(new GraphGenerator.SemiGraph() { + return GraphGenerator.generate(CachingSemiGraph.cache(new InboundSemiGraph() { public Collection getNodes() { return Arrays.asList(modules); } @@ -109,9 +106,8 @@ public final class ModuleCompilerUtil { } } - - public static GraphGenerator createGraphGenerator(final Map models) { - return GraphGenerator.create(CachingSemiGraph.create(new GraphGenerator.SemiGraph() { + public static Graph createGraphGenerator(final Map models) { + return GraphGenerator.generate(CachingSemiGraph.cache(new InboundSemiGraph() { public Collection getNodes() { return models.values(); } @@ -187,7 +183,7 @@ public final class ModuleCompilerUtil { } private static Graph createModuleSourceDependenciesGraph(final RootModelProvider provider) { - return GraphGenerator.create(new CachingSemiGraph<>(new GraphGenerator.SemiGraph() { + return GraphGenerator.generate(CachingSemiGraph.cache(new InboundSemiGraph() { @Override public Collection getNodes() { Module[] modules = provider.getModules(); diff --git a/java/idea-ui/src/com/intellij/ide/util/frameworkSupport/FrameworkSupportUtil.java b/java/idea-ui/src/com/intellij/ide/util/frameworkSupport/FrameworkSupportUtil.java index d6171c151c16..a1e0a7ce788a 100644 --- a/java/idea-ui/src/com/intellij/ide/util/frameworkSupport/FrameworkSupportUtil.java +++ b/java/idea-ui/src/com/intellij/ide/util/frameworkSupport/FrameworkSupportUtil.java @@ -1,6 +1,6 @@ /* - * Copyright 2000-2014 JetBrains s.r.o. + * Copyright 2000-2016 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. @@ -28,6 +28,7 @@ import com.intellij.openapi.util.Couple; import com.intellij.util.graph.CachingSemiGraph; import com.intellij.util.graph.DFSTBuilder; import com.intellij.util.graph.GraphGenerator; +import com.intellij.util.graph.InboundSemiGraph; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -96,7 +97,7 @@ public class FrameworkSupportUtil { public static Comparator getFrameworkSupportProvidersComparator(final List types) { DFSTBuilder - builder = new DFSTBuilder<>(GraphGenerator.create(CachingSemiGraph.create(new ProvidersGraph(types)))); + builder = new DFSTBuilder<>(GraphGenerator.generate(CachingSemiGraph.cache(new ProvidersGraph(types)))); if (!builder.isAcyclic()) { Couple pair = builder.getCircularDependency(); LOG.error("Circular dependency between types '" + pair.getFirst().getFrameworkType().getId() + "' and '" + pair.getSecond().getFrameworkType().getId() + "' was found."); @@ -122,7 +123,7 @@ public class FrameworkSupportUtil { return null; } - private static class ProvidersGraph implements GraphGenerator.SemiGraph { + private static class ProvidersGraph implements InboundSemiGraph { private final List myFrameworkSupportProviders; public ProvidersGraph(final List frameworkSupportProviders) { @@ -160,4 +161,4 @@ public class FrameworkSupportUtil { return dependencies.iterator(); } } -} +} \ No newline at end of file diff --git a/java/java-impl/src/com/intellij/cyclicDependencies/CyclicDependenciesBuilder.java b/java/java-impl/src/com/intellij/cyclicDependencies/CyclicDependenciesBuilder.java index 8baaaa7b3337..03261b465a42 100644 --- a/java/java-impl/src/com/intellij/cyclicDependencies/CyclicDependenciesBuilder.java +++ b/java/java-impl/src/com/intellij/cyclicDependencies/CyclicDependenciesBuilder.java @@ -26,10 +26,7 @@ import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.packageDependencies.DependenciesBuilder; import com.intellij.packageDependencies.ForwardDependenciesBuilder; import com.intellij.psi.*; -import com.intellij.util.graph.CachingSemiGraph; -import com.intellij.util.graph.Graph; -import com.intellij.util.graph.GraphAlgorithms; -import com.intellij.util.graph.GraphGenerator; +import com.intellij.util.graph.*; import java.util.*; @@ -241,9 +238,8 @@ public class CyclicDependenciesBuilder{ return myPackages; } - private Graph buildGraph() { - final Graph graph = GraphGenerator.create(CachingSemiGraph.create(new GraphGenerator.SemiGraph() { + return GraphGenerator.generate(CachingSemiGraph.cache(new InboundSemiGraph() { public Collection getNodes() { return getAllScopePackages().values(); } @@ -256,7 +252,6 @@ public class CyclicDependenciesBuilder{ return psiPackages.iterator(); } })); - return graph; } public Set getPackageHierarhy(String packageName) { @@ -283,5 +278,4 @@ public class CyclicDependenciesBuilder{ final PsiPackage psiPackage = getAllScopePackages().get(packName); return psiPackage; } - -} +} \ No newline at end of file diff --git a/java/java-impl/src/com/intellij/refactoring/typeMigration/TypeMigrationLabeler.java b/java/java-impl/src/com/intellij/refactoring/typeMigration/TypeMigrationLabeler.java index 140e87fd1be0..81c88f9d947b 100644 --- a/java/java-impl/src/com/intellij/refactoring/typeMigration/TypeMigrationLabeler.java +++ b/java/java-impl/src/com/intellij/refactoring/typeMigration/TypeMigrationLabeler.java @@ -49,6 +49,7 @@ import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.MultiMap; import com.intellij.util.graph.DFSTBuilder; import com.intellij.util.graph.GraphGenerator; +import com.intellij.util.graph.InboundSemiGraph; import gnu.trove.THashMap; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -204,8 +205,8 @@ public class TypeMigrationLabeler { } private TypeMigrationUsageInfo[] sortMigratedUsages(TypeMigrationUsageInfo[] infos) { - final DFSTBuilder builder = new DFSTBuilder<>(GraphGenerator.create( - new GraphGenerator.SemiGraph() { + final DFSTBuilder builder = new DFSTBuilder<>(GraphGenerator.generate( + new InboundSemiGraph() { @Override public Collection getNodes() { final Set infos = new HashSet<>(); diff --git a/jps/jps-builders/src/org/jetbrains/jps/incremental/artifacts/impl/ArtifactSorter.java b/jps/jps-builders/src/org/jetbrains/jps/incremental/artifacts/impl/ArtifactSorter.java index 7f49eb835201..06fecaddce0c 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/incremental/artifacts/impl/ArtifactSorter.java +++ b/jps/jps-builders/src/org/jetbrains/jps/incremental/artifacts/impl/ArtifactSorter.java @@ -18,9 +18,7 @@ package org.jetbrains.jps.incremental.artifacts.impl; import com.intellij.openapi.util.text.StringUtil; import com.intellij.util.Consumer; import com.intellij.util.Processor; -import com.intellij.util.graph.CachingSemiGraph; -import com.intellij.util.graph.DFSTBuilder; -import com.intellij.util.graph.GraphGenerator; +import com.intellij.util.graph.*; import org.jetbrains.annotations.NotNull; import org.jetbrains.jps.incremental.artifacts.JpsBuilderArtifactService; import org.jetbrains.jps.model.JpsModel; @@ -57,7 +55,7 @@ public class ArtifactSorter { } private List doGetSortedArtifacts() { - GraphGenerator graph = createArtifactsGraph(); + Graph graph = createArtifactsGraph(); DFSTBuilder builder = new DFSTBuilder(graph); List names = new ArrayList(); names.addAll(graph.getNodes()); @@ -67,7 +65,7 @@ public class ArtifactSorter { private Map computeArtifactToSelfIncludingNameMap() { final Map result = new HashMap(); - final GraphGenerator graph = createArtifactsGraph(); + final Graph graph = createArtifactsGraph(); for (JpsArtifact artifact : graph.getNodes()) { final Iterator in = graph.getIn(artifact); while (in.hasNext()) { @@ -134,8 +132,8 @@ public class ArtifactSorter { }); } - private GraphGenerator createArtifactsGraph() { - return GraphGenerator.create(CachingSemiGraph.create(new ArtifactsGraph(myModel))); + private Graph createArtifactsGraph() { + return GraphGenerator.generate(CachingSemiGraph.cache(new ArtifactsGraph(myModel))); } private static void processIncludedArtifacts(JpsArtifact artifact, final Consumer consumer) { @@ -154,7 +152,7 @@ public class ArtifactSorter { }); } - private static class ArtifactsGraph implements GraphGenerator.SemiGraph { + private static class ArtifactsGraph implements InboundSemiGraph { private final Set myArtifactNodes; public ArtifactsGraph(final JpsModel model) { @@ -181,5 +179,4 @@ public class ArtifactSorter { return included.iterator(); } } - -} +} \ No newline at end of file diff --git a/jps/jps-builders/src/org/jetbrains/jps/incremental/artifacts/impl/JarsBuilder.java b/jps/jps-builders/src/org/jetbrains/jps/incremental/artifacts/impl/JarsBuilder.java index c5ce16567be4..96a0da166c78 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/incremental/artifacts/impl/JarsBuilder.java +++ b/jps/jps-builders/src/org/jetbrains/jps/incremental/artifacts/impl/JarsBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2016 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. @@ -26,6 +26,7 @@ import com.intellij.util.ArrayUtil; import com.intellij.util.graph.CachingSemiGraph; import com.intellij.util.graph.DFSTBuilder; import com.intellij.util.graph.GraphGenerator; +import com.intellij.util.graph.InboundSemiGraph; import com.intellij.util.io.ZipUtil; import gnu.trove.THashSet; import org.jetbrains.annotations.NonNls; @@ -119,7 +120,7 @@ public class JarsBuilder { @Nullable private JarInfo[] sortJars() { - final DFSTBuilder builder = new DFSTBuilder(GraphGenerator.create(CachingSemiGraph.create(new JarsGraph()))); + final DFSTBuilder builder = new DFSTBuilder(GraphGenerator.generate(CachingSemiGraph.cache(new JarsGraph()))); if (!builder.isAcyclic()) { final Pair dependency = builder.getCircularDependency(); String message = "Cannot build: circular dependency found between '" + dependency.getFirst().getPresentableDestination() + @@ -383,7 +384,7 @@ public class JarsBuilder { output.closeEntry(); } - private class JarsGraph implements GraphGenerator.SemiGraph { + private class JarsGraph implements InboundSemiGraph { public Collection getNodes() { return myJarsToBuild; } @@ -397,4 +398,4 @@ public class JarsBuilder { return ins.iterator(); } } -} +} \ No newline at end of file diff --git a/platform/core-impl/src/com/intellij/ide/plugins/PluginManagerCore.java b/platform/core-impl/src/com/intellij/ide/plugins/PluginManagerCore.java index f22e6c939135..37321a30f824 100644 --- a/platform/core-impl/src/com/intellij/ide/plugins/PluginManagerCore.java +++ b/platform/core-impl/src/com/intellij/ide/plugins/PluginManagerCore.java @@ -36,10 +36,7 @@ import com.intellij.util.*; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.MultiMap; import com.intellij.util.execution.ParametersListUtil; -import com.intellij.util.graph.CachingSemiGraph; -import com.intellij.util.graph.DFSTBuilder; -import com.intellij.util.graph.Graph; -import com.intellij.util.graph.GraphGenerator; +import com.intellij.util.graph.*; import com.intellij.util.io.URLUtil; import com.intellij.util.lang.UrlClassLoader; import com.intellij.util.xmlb.JDOMXIncluder; @@ -622,7 +619,7 @@ public class PluginManagerCore { return o2.getIdString().compareTo(o1.getIdString()); } }); - return GraphGenerator.create(CachingSemiGraph.create(new GraphGenerator.SemiGraph() { + return GraphGenerator.generate(CachingSemiGraph.cache(new InboundSemiGraph() { @Override public Collection getNodes() { return ids; diff --git a/platform/extensions/src/com/intellij/openapi/extensions/LoadingOrder.java b/platform/extensions/src/com/intellij/openapi/extensions/LoadingOrder.java index 3af33eafd444..465fa6df289b 100644 --- a/platform/extensions/src/com/intellij/openapi/extensions/LoadingOrder.java +++ b/platform/extensions/src/com/intellij/openapi/extensions/LoadingOrder.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2014 JetBrains s.r.o. + * Copyright 2000-2016 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. @@ -21,6 +21,7 @@ import com.intellij.util.containers.ContainerUtil; import com.intellij.util.graph.CachingSemiGraph; import com.intellij.util.graph.DFSTBuilder; import com.intellij.util.graph.GraphGenerator; +import com.intellij.util.graph.InboundSemiGraph; import org.jdom.Element; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; @@ -136,7 +137,7 @@ public class LoadingOrder { if (!order.myBefore.isEmpty()) hasBefore.add(o); } - GraphGenerator.SemiGraph graph = new GraphGenerator.SemiGraph() { + InboundSemiGraph graph = new InboundSemiGraph() { @Override public Collection getNodes() { List list = ContainerUtil.newArrayList(orderable); @@ -183,7 +184,7 @@ public class LoadingOrder { } }; - DFSTBuilder builder = new DFSTBuilder(new GraphGenerator(new CachingSemiGraph(graph))); + DFSTBuilder builder = new DFSTBuilder(GraphGenerator.generate(CachingSemiGraph.cache(graph))); if (!builder.isAcyclic()) { Couple p = builder.getCircularDependency(); diff --git a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/AbstractIdeModifiableModelsProvider.java b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/AbstractIdeModifiableModelsProvider.java index a035e0db496e..45b171e20b67 100644 --- a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/AbstractIdeModifiableModelsProvider.java +++ b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/AbstractIdeModifiableModelsProvider.java @@ -47,6 +47,7 @@ import com.intellij.util.containers.ContainerUtil; import com.intellij.util.graph.CachingSemiGraph; import com.intellij.util.graph.Graph; import com.intellij.util.graph.GraphGenerator; +import com.intellij.util.graph.InboundSemiGraph; import gnu.trove.THashMap; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -251,15 +252,15 @@ public abstract class AbstractIdeModifiableModelsProvider extends IdeModelsProvi @Override public List getAllDependentModules(@NotNull Module module) { final ArrayList list = new ArrayList<>(); - final Graph graph = getModuleGraph(true); + final Graph graph = getModuleGraph(); for (Iterator i = graph.getOut(module); i.hasNext();) { list.add(i.next()); } return list; } - private Graph getModuleGraph(final boolean includeTests) { - return GraphGenerator.create(CachingSemiGraph.create(new GraphGenerator.SemiGraph() { + private Graph getModuleGraph() { + return GraphGenerator.generate(CachingSemiGraph.cache(new InboundSemiGraph() { @Override public Collection getNodes() { return ContainerUtil.list(getModules()); @@ -267,7 +268,7 @@ public abstract class AbstractIdeModifiableModelsProvider extends IdeModelsProvi @Override public Iterator getIn(Module m) { - Module[] dependentModules = getModifiableRootModel(m).getModuleDependencies(includeTests); + Module[] dependentModules = getModifiableRootModel(m).getModuleDependencies(true); return Arrays.asList(dependentModules).iterator(); } })); diff --git a/platform/platform-impl/src/com/intellij/util/graph/impl/GraphAlgorithmsImpl.java b/platform/platform-impl/src/com/intellij/util/graph/impl/GraphAlgorithmsImpl.java index f877fd2f579e..c87852d22ded 100644 --- a/platform/platform-impl/src/com/intellij/util/graph/impl/GraphAlgorithmsImpl.java +++ b/platform/platform-impl/src/com/intellij/util/graph/impl/GraphAlgorithmsImpl.java @@ -81,7 +81,7 @@ public class GraphAlgorithmsImpl extends GraphAlgorithms { } } - return GraphGenerator.create(CachingSemiGraph.create(new GraphGenerator.SemiGraph>() { + return GraphGenerator.generate(CachingSemiGraph.cache(new InboundSemiGraph>() { @Override public Collection> getNodes() { return chunks; diff --git a/platform/projectModel-impl/src/com/intellij/openapi/module/impl/ModuleManagerImpl.java b/platform/projectModel-impl/src/com/intellij/openapi/module/impl/ModuleManagerImpl.java index c2b0a09c6897..aec869826e71 100644 --- a/platform/projectModel-impl/src/com/intellij/openapi/module/impl/ModuleManagerImpl.java +++ b/platform/projectModel-impl/src/com/intellij/openapi/module/impl/ModuleManagerImpl.java @@ -44,10 +44,7 @@ import com.intellij.util.containers.HashMap; import com.intellij.util.containers.StringInterner; import com.intellij.util.containers.hash.HashSet; import com.intellij.util.containers.hash.LinkedHashMap; -import com.intellij.util.graph.CachingSemiGraph; -import com.intellij.util.graph.DFSTBuilder; -import com.intellij.util.graph.Graph; -import com.intellij.util.graph.GraphGenerator; +import com.intellij.util.graph.*; import com.intellij.util.io.URLUtil; import com.intellij.util.messages.MessageBus; import gnu.trove.THashMap; @@ -782,7 +779,7 @@ public abstract class ModuleManagerImpl extends ModuleManager implements Project } private Graph moduleGraph(final boolean includeTests) { - return GraphGenerator.create(CachingSemiGraph.create(new GraphGenerator.SemiGraph() { + return GraphGenerator.generate(CachingSemiGraph.cache(new InboundSemiGraph() { @Override public Collection getNodes() { return myModules.values(); diff --git a/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ModifiableModelCommitter.java b/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ModifiableModelCommitter.java index 78dcd8c36433..fccc6d2bbfbf 100644 --- a/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ModifiableModelCommitter.java +++ b/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ModifiableModelCommitter.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2016 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. @@ -26,6 +26,7 @@ import com.intellij.util.containers.ContainerUtil; import com.intellij.util.graph.CachingSemiGraph; import com.intellij.util.graph.DFSTBuilder; import com.intellij.util.graph.GraphGenerator; +import com.intellij.util.graph.InboundSemiGraph; import org.jetbrains.annotations.NotNull; import java.util.*; @@ -89,7 +90,7 @@ public class ModifiableModelCommitter { } final Collection allRootModels = nameToModel.values(); - GraphGenerator.SemiGraph graph = new GraphGenerator.SemiGraph() { + InboundSemiGraph graph = new InboundSemiGraph() { @Override public Collection getNodes() { return allRootModels; @@ -126,6 +127,6 @@ public class ModifiableModelCommitter { return result.iterator(); } }; - return new DFSTBuilder<>(new GraphGenerator<>(new CachingSemiGraph<>(graph))); + return new DFSTBuilder<>(GraphGenerator.generate(CachingSemiGraph.cache(graph))); } } diff --git a/platform/util/src/com/intellij/util/graph/CachingSemiGraph.java b/platform/util/src/com/intellij/util/graph/CachingSemiGraph.java index a52f36094dda..30d78eddfe0d 100644 --- a/platform/util/src/com/intellij/util/graph/CachingSemiGraph.java +++ b/platform/util/src/com/intellij/util/graph/CachingSemiGraph.java @@ -51,10 +51,12 @@ public class CachingSemiGraph implements GraphGenerator.SemiGraph { } // + /** @deprecated use {@link #cache(InboundSemiGraph)} (to be removed in IDEA 2018) */ public static CachingSemiGraph create(GraphGenerator.SemiGraph original) { return new CachingSemiGraph((InboundSemiGraph)original); } + /** @deprecated use {@link #cache(InboundSemiGraph)} (to be removed in IDEA 2018) */ public CachingSemiGraph(GraphGenerator.SemiGraph original) { this((InboundSemiGraph)original); } diff --git a/platform/util/src/com/intellij/util/graph/GraphGenerator.java b/platform/util/src/com/intellij/util/graph/GraphGenerator.java index 73a50dd29b96..a7315975ebc9 100644 --- a/platform/util/src/com/intellij/util/graph/GraphGenerator.java +++ b/platform/util/src/com/intellij/util/graph/GraphGenerator.java @@ -75,10 +75,12 @@ public class GraphGenerator implements Graph { Iterator getIn(Node n); } + /** @deprecated use {@link #generate(InboundSemiGraph)} (to be removed in IDEA 2018) */ public GraphGenerator(SemiGraph graph) { this((InboundSemiGraph)graph); } + /** @deprecated use {@link #generate(InboundSemiGraph)} (to be removed in IDEA 2018) */ public static GraphGenerator create(SemiGraph graph) { return new GraphGenerator((InboundSemiGraph)graph); } diff --git a/platform/util/testSrc/com/intellij/util/graph/DFSTBuilderTest.java b/platform/util/testSrc/com/intellij/util/graph/DFSTBuilderTest.java index fc367d2cfdd3..eded63a17c45 100644 --- a/platform/util/testSrc/com/intellij/util/graph/DFSTBuilderTest.java +++ b/platform/util/testSrc/com/intellij/util/graph/DFSTBuilderTest.java @@ -24,7 +24,7 @@ import java.util.*; import static org.junit.Assert.*; /** - * @author dsl + * @author dsl */ public class DFSTBuilderTest { @Test @@ -44,7 +44,7 @@ public class DFSTBuilderTest { map.put(nE, new TestNode[]{nC}); map.put(nF, new TestNode[]{nB}); - GraphGenerator graph = graphByNodes(allNodes, map); + Graph graph = graphByNodes(allNodes, map); DFSTBuilder builder = new DFSTBuilder<>(graph); if (!builder.isAcyclic()) { fail("Acyclic graph expected"); @@ -60,8 +60,8 @@ public class DFSTBuilderTest { assertTrue(comparator.compare(nB, nF) < 0); } - private static GraphGenerator graphByNodes(TestNode[] allNodes, Map mapIn) { - return new GraphGenerator<>(new GraphGenerator.SemiGraph() { + private static Graph graphByNodes(TestNode[] allNodes, Map mapIn) { + return GraphGenerator.generate(new InboundSemiGraph() { @Override public Collection getNodes() { return Arrays.asList(allNodes); @@ -90,9 +90,9 @@ public class DFSTBuilderTest { } private static void checkCircularDependencyDetected(TestNode[] allNodes, Map map) { - GraphGenerator graph = graphByNodes(allNodes, map); + Graph graph = graphByNodes(allNodes, map); DFSTBuilder builder = new DFSTBuilder<>(graph); - assertTrue (builder.getCircularDependency() != null); + assertTrue(builder.getCircularDependency() != null); } @Test @@ -131,7 +131,7 @@ public class DFSTBuilderTest { map.put(nB, new TestNode[]{nA}); map.put(nC, new TestNode[]{nB}); map.put(nD, new TestNode[]{nB}); - GraphGenerator graph = graphByNodes(allNodes, map); + Graph graph = graphByNodes(allNodes, map); DFSTBuilder builder = new DFSTBuilder<>(graph); assertFalse(builder.isAcyclic()); Comparator comparator = builder.comparator(); @@ -151,7 +151,7 @@ public class DFSTBuilderTest { } } map.put(allNodes[0], new TestNode[]{allNodes[allNodes.length - 1]}); - GraphGenerator graph = graphByNodes(allNodes, map); + Graph graph = graphByNodes(allNodes, map); DFSTBuilder builder = new DFSTBuilder<>(graph); assertFalse(builder.isAcyclic()); } @@ -167,13 +167,13 @@ public class DFSTBuilderTest { TestNode[] allNodes = {main, dep, d, d2, resMain, resDep}; Map mapIn = new HashMap<>(); mapIn.put(main, new TestNode[]{d, resMain}); - mapIn.put(dep, new TestNode[]{main,resDep}); + mapIn.put(dep, new TestNode[]{main, resDep}); mapIn.put(d, new TestNode[]{d2}); mapIn.put(d2, new TestNode[]{dep, d}); - GraphGenerator graph = graphByNodes(allNodes, mapIn); + Graph graph = graphByNodes(allNodes, mapIn); DFSTBuilder builder = new DFSTBuilder<>(graph); - assertTrue (!builder.isAcyclic()); + assertTrue(!builder.isAcyclic()); Comparator comparator = builder.comparator(); assertTrue(comparator.compare(resMain, main) < 0); assertTrue(comparator.compare(resMain, d) < 0); @@ -188,20 +188,20 @@ public class DFSTBuilderTest { TestNode a = new TestNode("a"); TestNode b = new TestNode("b"); TestNode c = new TestNode("c"); - for (int oIndex = 0; oIndex<4; oIndex++) { + for (int oIndex = 0; oIndex < 4; oIndex++) { List list = new ArrayList<>(Arrays.asList(a, b, c)); list.add(oIndex, o); TestNode[] allNodes = list.toArray(new TestNode[list.size()]); Map mapIn = new HashMap<>(); - mapIn.put(o, new TestNode[]{a,b,c}); + mapIn.put(o, new TestNode[]{a, b, c}); DFSTBuilder builder = new DFSTBuilder<>(graphByNodes(allNodes, mapIn)); - assertTrue (builder.isAcyclic()); + assertTrue(builder.isAcyclic()); Comparator comparator = builder.comparator(); TestNode[] sorted = allNodes.clone(); Arrays.sort(sorted, comparator); - assertEquals("All nodes: "+list, Arrays.asList(c,b,a,o), Arrays.asList(sorted)); + assertEquals("All nodes: " + list, Arrays.asList(c, b, a, o), Arrays.asList(sorted)); } } @@ -212,28 +212,28 @@ public class DFSTBuilderTest { TestNode a = new TestNode("a"); TestNode b = new TestNode("b"); TestNode c = new TestNode("c"); - for (int oIndex = 0; oIndex<4; oIndex++) { + for (int oIndex = 0; oIndex < 4; oIndex++) { List list = new ArrayList<>(Arrays.asList(a, b, c)); list.add(oIndex, o1); list.add(oIndex, o2); TestNode[] allNodes = list.toArray(new TestNode[list.size()]); Map mapIn = new HashMap<>(); - mapIn.put(o1, new TestNode[]{a,b,c,o2}); + mapIn.put(o1, new TestNode[]{a, b, c, o2}); mapIn.put(o2, new TestNode[]{o1}); DFSTBuilder builder = new DFSTBuilder<>(graphByNodes(allNodes, mapIn)); assertFalse(builder.isAcyclic()); Comparator comparator = builder.comparator(); - assertTrue("All nodes: "+list,comparator.compare(b, a) < 0); //reversed loading order - assertTrue("All nodes: "+list,comparator.compare(c, a) < 0); //reversed loading order - assertTrue("All nodes: "+list,comparator.compare(c, b) < 0); //reversed loading order - assertTrue("All nodes: "+list,comparator.compare(a, o1) < 0); - assertTrue("All nodes: "+list,comparator.compare(a, o2) < 0); - assertTrue("All nodes: "+list,comparator.compare(b, o1) < 0); - assertTrue("All nodes: "+list,comparator.compare(b, o2) < 0); - assertTrue("All nodes: "+list,comparator.compare(c, o1) < 0); - assertTrue("All nodes: "+list,comparator.compare(c, o2) < 0); + assertTrue("All nodes: " + list, comparator.compare(b, a) < 0); //reversed loading order + assertTrue("All nodes: " + list, comparator.compare(c, a) < 0); //reversed loading order + assertTrue("All nodes: " + list, comparator.compare(c, b) < 0); //reversed loading order + assertTrue("All nodes: " + list, comparator.compare(a, o1) < 0); + assertTrue("All nodes: " + list, comparator.compare(a, o2) < 0); + assertTrue("All nodes: " + list, comparator.compare(b, o1) < 0); + assertTrue("All nodes: " + list, comparator.compare(b, o2) < 0); + assertTrue("All nodes: " + list, comparator.compare(c, o1) < 0); + assertTrue("All nodes: " + list, comparator.compare(c, o2) < 0); } } } \ No newline at end of file diff --git a/platform/util/testSrc/com/intellij/util/graph/GraphGeneratorTest.java b/platform/util/testSrc/com/intellij/util/graph/GraphGeneratorTest.java index d041524e6014..14e54c2bf339 100644 --- a/platform/util/testSrc/com/intellij/util/graph/GraphGeneratorTest.java +++ b/platform/util/testSrc/com/intellij/util/graph/GraphGeneratorTest.java @@ -29,7 +29,7 @@ public class GraphGeneratorTest { @Test public void testEmptyGraph() { TestNode node = new TestNode("A"); - GraphGenerator graphGenerator = new GraphGenerator<>(new GraphGenerator.SemiGraph() { + Graph graph = GraphGenerator.generate(new InboundSemiGraph() { @Override public Collection getNodes() { return Collections.singletonList(node); @@ -41,7 +41,7 @@ public class GraphGeneratorTest { } }); - assertFalse(graphGenerator.getOut(node).hasNext()); + assertFalse(graph.getOut(node).hasNext()); } @Test @@ -52,7 +52,7 @@ public class GraphGeneratorTest { TestNode[] inA = {nodeB}; TestNode[] inB = {nodeA}; - GraphGenerator graph = new GraphGenerator<>(new GraphGenerator.SemiGraph() { + Graph graph = GraphGenerator.generate(new InboundSemiGraph() { @Override public Collection getNodes() { return Arrays.asList(nodes); diff --git a/platform/vcs-impl/src/com/intellij/impl/ConversionServiceImpl.java b/platform/vcs-impl/src/com/intellij/impl/ConversionServiceImpl.java index dda507752c75..a972f83e6bb0 100644 --- a/platform/vcs-impl/src/com/intellij/impl/ConversionServiceImpl.java +++ b/platform/vcs-impl/src/com/intellij/impl/ConversionServiceImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2016 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. @@ -32,9 +32,7 @@ import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.io.FileUtil; import com.intellij.util.PathUtil; import com.intellij.util.SystemProperties; -import com.intellij.util.graph.CachingSemiGraph; -import com.intellij.util.graph.DFSTBuilder; -import com.intellij.util.graph.GraphGenerator; +import com.intellij.util.graph.*; import com.intellij.util.xmlb.XmlSerializer; import com.intellij.util.xmlb.annotations.AbstractCollection; import com.intellij.util.xmlb.annotations.MapAnnotation; @@ -242,8 +240,8 @@ public class ConversionServiceImpl extends ConversionService { runners.add(new ConversionRunner(provider, context)); } } - final CachingSemiGraph graph = CachingSemiGraph.create(new ConverterProvidersGraph(providers)); - final DFSTBuilder builder = new DFSTBuilder<>(GraphGenerator.create(graph)); + final Graph graph = GraphGenerator.generate(CachingSemiGraph.cache(new ConverterProvidersGraph(providers))); + final DFSTBuilder builder = new DFSTBuilder<>(graph); if (!builder.isAcyclic()) { final Pair pair = builder.getCircularDependency(); LOG.error("cyclic dependencies between converters: " + pair.getFirst().getId() + " and " + pair.getSecond().getId()); @@ -384,7 +382,7 @@ public class ConversionServiceImpl extends ConversionService { public Map myProjectFilesTimestamps = new HashMap<>(); } - private static class ConverterProvidersGraph implements GraphGenerator.SemiGraph { + private static class ConverterProvidersGraph implements InboundSemiGraph { private final ConverterProvider[] myProviders; public ConverterProvidersGraph(ConverterProvider[] providers) { diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/TailRecursionInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/TailRecursionInspection.java index 44f49d583426..423176aaea01 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/TailRecursionInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/TailRecursionInspection.java @@ -21,10 +21,7 @@ import com.intellij.psi.*; import com.intellij.psi.codeStyle.CodeStyleManager; import com.intellij.psi.codeStyle.JavaCodeStyleManager; import com.intellij.psi.util.PsiTreeUtil; -import com.intellij.util.graph.CachingSemiGraph; -import com.intellij.util.graph.DFSTBuilder; -import com.intellij.util.graph.Graph; -import com.intellij.util.graph.GraphGenerator; +import com.intellij.util.graph.*; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; @@ -320,8 +317,7 @@ public class TailRecursionInspection extends BaseInspection { } private static Graph buildGraph(PsiParameter[] parameters, PsiExpression[] arguments) { - final GraphGenerator.SemiGraph graph = new GraphGenerator.SemiGraph() { - + final InboundSemiGraph graph = new InboundSemiGraph() { @Override public Collection getNodes() { final List result = new ArrayList<>(); @@ -344,7 +340,7 @@ public class TailRecursionInspection extends BaseInspection { return result.iterator(); } }; - return GraphGenerator.create(CachingSemiGraph.create(graph)); + return GraphGenerator.generate(CachingSemiGraph.cache(graph)); } private static boolean isImplicitCallOnThis(PsiElement element, PsiMethod containingMethod) { diff --git a/plugins/properties/src/com/intellij/lang/properties/editor/ResourceBundlePropertiesUpdateManager.java b/plugins/properties/src/com/intellij/lang/properties/editor/ResourceBundlePropertiesUpdateManager.java index 2d34a3de9342..546de727e953 100644 --- a/plugins/properties/src/com/intellij/lang/properties/editor/ResourceBundlePropertiesUpdateManager.java +++ b/plugins/properties/src/com/intellij/lang/properties/editor/ResourceBundlePropertiesUpdateManager.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2016 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. @@ -31,9 +31,7 @@ import com.intellij.psi.PsiElement; import com.intellij.psi.PsiWhiteSpace; import com.intellij.psi.codeStyle.CodeStyleManager; import com.intellij.util.IncorrectOperationException; -import com.intellij.util.graph.CachingSemiGraph; -import com.intellij.util.graph.DFSTBuilder; -import com.intellij.util.graph.GraphGenerator; +import com.intellij.util.graph.*; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -169,7 +167,7 @@ public class ResourceBundlePropertiesUpdateManager { @Nullable private static Pair, Boolean> keysOrder(final ResourceBundle resourceBundle) { final boolean[] isAlphaSorted = new boolean[]{true}; - final GraphGenerator generator = GraphGenerator.create(CachingSemiGraph.create(new GraphGenerator.SemiGraph() { + final Graph generator = GraphGenerator.generate(CachingSemiGraph.cache(new InboundSemiGraph() { @Override public Collection getNodes() { final Set nodes = new LinkedHashSet<>();