1 package org.eclipse.aether.internal.impl.collect;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.util.ArrayList;
23 import java.util.Collection;
24 import java.util.Collections;
25 import java.util.HashMap;
26 import java.util.Map;
27
28 import org.eclipse.aether.artifact.Artifact;
29 import org.eclipse.aether.collection.DependencyManagement;
30 import org.eclipse.aether.collection.DependencyManager;
31 import org.eclipse.aether.graph.DefaultDependencyNode;
32 import org.eclipse.aether.graph.Dependency;
33 import org.eclipse.aether.graph.DependencyNode;
34 import org.eclipse.aether.graph.Exclusion;
35 import org.eclipse.aether.util.graph.manager.DependencyManagerUtils;
36
37 class PremanagedDependency
38 {
39 final String premanagedVersion;
40
41 final String premanagedScope;
42
43 final Boolean premanagedOptional;
44
45
46
47
48 final Collection<Exclusion> premanagedExclusions;
49
50
51
52
53 final Map<String, String> premanagedProperties;
54
55 final int managedBits;
56
57 final Dependency managedDependency;
58
59 final boolean premanagedState;
60
61 @SuppressWarnings( "checkstyle:parameternumber" )
62 PremanagedDependency( String premanagedVersion, String premanagedScope, Boolean premanagedOptional,
63 Collection<Exclusion> premanagedExclusions, Map<String, String> premanagedProperties,
64 int managedBits, Dependency managedDependency, boolean premanagedState )
65 {
66 this.premanagedVersion = premanagedVersion;
67 this.premanagedScope = premanagedScope;
68 this.premanagedOptional = premanagedOptional;
69 this.premanagedExclusions =
70 premanagedExclusions != null
71 ? Collections.unmodifiableCollection( new ArrayList<>( premanagedExclusions ) )
72 : null;
73
74 this.premanagedProperties =
75 premanagedProperties != null
76 ? Collections.unmodifiableMap( new HashMap<>( premanagedProperties ) )
77 : null;
78
79 this.managedBits = managedBits;
80 this.managedDependency = managedDependency;
81 this.premanagedState = premanagedState;
82 }
83
84 static PremanagedDependency create( DependencyManager depManager, Dependency dependency,
85 boolean disableVersionManagement, boolean premanagedState )
86 {
87 DependencyManagement depMngt = depManager != null ? depManager.manageDependency( dependency ) : null;
88
89 int managedBits = 0;
90 String premanagedVersion = null;
91 String premanagedScope = null;
92 Boolean premanagedOptional = null;
93 Collection<Exclusion> premanagedExclusions = null;
94 Map<String, String> premanagedProperties = null;
95
96 if ( depMngt != null )
97 {
98 if ( depMngt.getVersion() != null && !disableVersionManagement )
99 {
100 Artifact artifact = dependency.getArtifact();
101 premanagedVersion = artifact.getVersion();
102 dependency = dependency.setArtifact( artifact.setVersion( depMngt.getVersion() ) );
103 managedBits |= DependencyNode.MANAGED_VERSION;
104 }
105 if ( depMngt.getProperties() != null )
106 {
107 Artifact artifact = dependency.getArtifact();
108 premanagedProperties = artifact.getProperties();
109 dependency = dependency.setArtifact( artifact.setProperties( depMngt.getProperties() ) );
110 managedBits |= DependencyNode.MANAGED_PROPERTIES;
111 }
112 if ( depMngt.getScope() != null )
113 {
114 premanagedScope = dependency.getScope();
115 dependency = dependency.setScope( depMngt.getScope() );
116 managedBits |= DependencyNode.MANAGED_SCOPE;
117 }
118 if ( depMngt.getOptional() != null )
119 {
120 premanagedOptional = dependency.isOptional();
121 dependency = dependency.setOptional( depMngt.getOptional() );
122 managedBits |= DependencyNode.MANAGED_OPTIONAL;
123 }
124 if ( depMngt.getExclusions() != null )
125 {
126 premanagedExclusions = dependency.getExclusions();
127 dependency = dependency.setExclusions( depMngt.getExclusions() );
128 managedBits |= DependencyNode.MANAGED_EXCLUSIONS;
129 }
130 }
131 return new PremanagedDependency( premanagedVersion, premanagedScope, premanagedOptional,
132 premanagedExclusions, premanagedProperties, managedBits, dependency,
133 premanagedState );
134
135 }
136
137 public void applyTo( DefaultDependencyNode child )
138 {
139 child.setManagedBits( managedBits );
140 if ( premanagedState )
141 {
142 child.setData( DependencyManagerUtils.NODE_DATA_PREMANAGED_VERSION, premanagedVersion );
143 child.setData( DependencyManagerUtils.NODE_DATA_PREMANAGED_SCOPE, premanagedScope );
144 child.setData( DependencyManagerUtils.NODE_DATA_PREMANAGED_OPTIONAL, premanagedOptional );
145 child.setData( DependencyManagerUtils.NODE_DATA_PREMANAGED_EXCLUSIONS, premanagedExclusions );
146 child.setData( DependencyManagerUtils.NODE_DATA_PREMANAGED_PROPERTIES, premanagedProperties );
147 }
148 }
149 }