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