From fa3b8d14418c7ce5ab8a2fd738d6a2fa8fbef81d Mon Sep 17 00:00:00 2001 From: nik Date: Mon, 8 Apr 2013 15:49:32 +0400 Subject: [PATCH] extracted common code --- .../ant/artifacts/ArtifactsGenerator.java | 15 ++++----------- .../packaging/impl/artifacts/ArtifactUtil.java | 16 ++++++++++++++++ .../impl/compiler/ArtifactCompilerUtil.java | 17 +++++------------ 3 files changed, 25 insertions(+), 23 deletions(-) diff --git a/java/compiler/impl/src/com/intellij/compiler/ant/artifacts/ArtifactsGenerator.java b/java/compiler/impl/src/com/intellij/compiler/ant/artifacts/ArtifactsGenerator.java index 1d27d60e7ffd..7d8b50440159 100644 --- a/java/compiler/impl/src/com/intellij/compiler/ant/artifacts/ArtifactsGenerator.java +++ b/java/compiler/impl/src/com/intellij/compiler/ant/artifacts/ArtifactsGenerator.java @@ -25,14 +25,12 @@ import com.intellij.openapi.util.text.StringUtil; import com.intellij.packaging.artifacts.Artifact; import com.intellij.packaging.artifacts.ArtifactManager; import com.intellij.packaging.artifacts.ArtifactType; -import com.intellij.packaging.elements.ComplexPackagingElement; import com.intellij.packaging.elements.PackagingElement; import com.intellij.packaging.elements.PackagingElementResolvingContext; import com.intellij.packaging.impl.artifacts.ArtifactUtil; -import com.intellij.packaging.impl.artifacts.PackagingElementPath; -import com.intellij.packaging.impl.artifacts.PackagingElementProcessor; import com.intellij.packaging.impl.elements.ArtifactPackagingElement; import com.intellij.packaging.impl.elements.ModuleOutputPackagingElement; +import com.intellij.util.Processor; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; @@ -122,14 +120,9 @@ public class ArtifactsGenerator { private Target createArtifactTarget(Artifact artifact) { final StringBuilder depends = new StringBuilder(INIT_ARTIFACTS_TARGET); - ArtifactUtil.processPackagingElements(artifact, null, new PackagingElementProcessor>() { + ArtifactUtil.processRecursivelySkippingIncludedArtifacts(artifact, new Processor>() { @Override - public boolean shouldProcessSubstitution(ComplexPackagingElement element) { - return !(element instanceof ArtifactPackagingElement); - } - - @Override - public boolean process(@NotNull PackagingElement packagingElement, @NotNull PackagingElementPath path) { + public boolean process(@NotNull PackagingElement packagingElement) { if (packagingElement instanceof ArtifactPackagingElement) { final Artifact included = ((ArtifactPackagingElement)packagingElement).findArtifact(myResolvingContext); if (included != null) { @@ -146,7 +139,7 @@ public class ArtifactsGenerator { } return true; } - }, myResolvingContext, true); + }, myResolvingContext); final Pair xmlNs = getArtifactXmlNs(artifact.getArtifactType()); final Target artifactTarget = diff --git a/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/ArtifactUtil.java b/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/ArtifactUtil.java index 0a272e82b1ff..3b71293ec025 100644 --- a/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/ArtifactUtil.java +++ b/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/ArtifactUtil.java @@ -123,6 +123,22 @@ public class ArtifactUtil { return true; } + public static void processRecursivelySkippingIncludedArtifacts(Artifact artifact, + final Processor> processor, + PackagingElementResolvingContext context) { + processPackagingElements(artifact.getRootElement(), null, new PackagingElementProcessor>() { + @Override + public boolean process(@NotNull PackagingElement element, @NotNull PackagingElementPath path) { + return processor.process(element); + } + + @Override + public boolean shouldProcessSubstitution(ComplexPackagingElement element) { + return !(element instanceof ArtifactPackagingElement); + } + }, context, true, artifact.getArtifactType()); + } + private static > boolean processElementRecursively(@NotNull PackagingElement element, @Nullable PackagingElementType type, @NotNull PackagingElementProcessor processor, @NotNull PackagingElementResolvingContext resolvingContext, diff --git a/java/compiler/impl/src/com/intellij/packaging/impl/compiler/ArtifactCompilerUtil.java b/java/compiler/impl/src/com/intellij/packaging/impl/compiler/ArtifactCompilerUtil.java index 0de7e05ad7dc..a0ab466922df 100644 --- a/java/compiler/impl/src/com/intellij/packaging/impl/compiler/ArtifactCompilerUtil.java +++ b/java/compiler/impl/src/com/intellij/packaging/impl/compiler/ArtifactCompilerUtil.java @@ -33,14 +33,11 @@ import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.packaging.artifacts.Artifact; import com.intellij.packaging.artifacts.ArtifactManager; -import com.intellij.packaging.elements.ComplexPackagingElement; import com.intellij.packaging.elements.PackagingElement; import com.intellij.packaging.elements.PackagingElementResolvingContext; import com.intellij.packaging.impl.artifacts.ArtifactUtil; -import com.intellij.packaging.impl.artifacts.PackagingElementPath; -import com.intellij.packaging.impl.artifacts.PackagingElementProcessor; -import com.intellij.packaging.impl.elements.ArtifactPackagingElement; import com.intellij.packaging.impl.elements.FileOrDirectoryCopyPackagingElement; +import com.intellij.util.Processor; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.MultiMap; import gnu.trove.THashMap; @@ -104,14 +101,9 @@ public class ArtifactCompilerUtil { final Set roots = new HashSet(); final PackagingElementResolvingContext context = ArtifactManager.getInstance(project).getResolvingContext(); for (Artifact artifact : ArtifactManager.getInstance(project).getArtifacts()) { - ArtifactUtil.processPackagingElements(artifact, null, new PackagingElementProcessor>() { + Processor> processor = new Processor>() { @Override - public boolean shouldProcessSubstitution(ComplexPackagingElement element) { - return !(element instanceof ArtifactPackagingElement); - } - - @Override - public boolean process(@NotNull PackagingElement element, @NotNull PackagingElementPath path) { + public boolean process(@NotNull PackagingElement element) { if (element instanceof FileOrDirectoryCopyPackagingElement) { final VirtualFile file = ((FileOrDirectoryCopyPackagingElement)element).findFile(); if (file != null) { @@ -120,7 +112,8 @@ public class ArtifactCompilerUtil { } return true; } - }, context, true); + }; + ArtifactUtil.processRecursivelySkippingIncludedArtifacts(artifact, processor, context); } final Module[] modules = ModuleManager.getInstance(project).getModules();