1 package org
.jetbrains
.idea
.maven
.importing
;
3 import com
.intellij
.openapi
.roots
.ui
.configuration
.artifacts
.ManifestFilesInfo
;
4 import com
.intellij
.openapi
.util
.Pair
;
5 import com
.intellij
.packaging
.artifacts
.Artifact
;
6 import com
.intellij
.packaging
.artifacts
.ModifiableArtifactModel
;
7 import com
.intellij
.packaging
.elements
.CompositePackagingElement
;
8 import com
.intellij
.packaging
.elements
.PackagingElement
;
9 import com
.intellij
.packaging
.elements
.PackagingElementResolvingContext
;
10 import com
.intellij
.packaging
.impl
.artifacts
.ArtifactUtil
;
11 import com
.intellij
.packaging
.impl
.artifacts
.PackagingElementProcessor
;
12 import com
.intellij
.packaging
.impl
.elements
.ArtifactElementType
;
13 import com
.intellij
.packaging
.impl
.elements
.ArtifactPackagingElement
;
14 import com
.intellij
.packaging
.ui
.ManifestFileConfiguration
;
15 import org
.jetbrains
.annotations
.NotNull
;
17 import java
.util
.ArrayList
;
18 import java
.util
.HashMap
;
19 import java
.util
.List
;
25 public class ArtifactExternalDependenciesImporter
{
26 private ManifestFilesInfo myManifestFiles
= new ManifestFilesInfo();
27 private Map
<Artifact
, List
<PackagingElement
<?
>>> myExternalDependencies
= new HashMap
<Artifact
, List
<PackagingElement
<?
>>>();
29 public ManifestFileConfiguration
getManifestFile(@NotNull Artifact artifact
,
30 @NotNull PackagingElementResolvingContext context
) {
31 return myManifestFiles
.getManifestFile(artifact
.getRootElement(), artifact
.getArtifactType(), context
);
34 public List
<PackagingElement
<?
>> getExternalDependenciesList(@NotNull Artifact artifact
) {
35 List
<PackagingElement
<?
>> elements
= myExternalDependencies
.get(artifact
);
36 if (elements
== null) {
37 elements
= new ArrayList
<PackagingElement
<?
>>();
38 myExternalDependencies
.put(artifact
, elements
);
43 public void applyChanges(ModifiableArtifactModel artifactModel
, final PackagingElementResolvingContext context
) {
44 myManifestFiles
.saveManifestFiles();
45 final List
<Pair
<?
extends CompositePackagingElement
<?
>, List
<PackagingElement
<?
>>>> elementsToInclude
= new ArrayList
<Pair
<?
extends CompositePackagingElement
<?
>, List
<PackagingElement
<?
>>>>();
46 for (Artifact artifact
: artifactModel
.getArtifacts()) {
47 ArtifactUtil
.processPackagingElements(artifact
, ArtifactElementType
.ARTIFACT_ELEMENT_TYPE
, new PackagingElementProcessor
<ArtifactPackagingElement
>() {
49 public boolean process(@NotNull List
<CompositePackagingElement
<?
>> parents
,
50 @NotNull ArtifactPackagingElement artifactPackagingElement
) {
51 final Artifact included
= artifactPackagingElement
.findArtifact(context
);
52 if (!parents
.isEmpty() && included
!= null) {
53 final CompositePackagingElement
<?
> parent
= parents
.get(0);
54 final List
<PackagingElement
<?
>> elements
= myExternalDependencies
.get(included
);
55 if (elements
!= null) {
56 elementsToInclude
.add(Pair
.create(parent
, elements
));
64 for (Pair
<?
extends CompositePackagingElement
<?
>, List
<PackagingElement
<?
>>> pair
: elementsToInclude
) {
65 pair
.getFirst().addOrFindChildren(pair
.getSecond());