1 package org.eclipse.aether.util.graph.transformer;
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.RepositoryException;
23 import org.eclipse.aether.collection.DependencyGraphTransformationContext;
24 import org.eclipse.aether.collection.DependencyGraphTransformer;
25 import org.eclipse.aether.graph.Dependency;
26 import org.eclipse.aether.graph.DependencyNode;
27 import org.eclipse.aether.util.artifact.JavaScopes;
28
29 import static java.util.Objects.requireNonNull;
30
31
32
33
34
35
36
37
38 public final class JavaDependencyContextRefiner
39 implements DependencyGraphTransformer
40 {
41
42 public DependencyNode transformGraph( DependencyNode node, DependencyGraphTransformationContext context )
43 throws RepositoryException
44 {
45 requireNonNull( node, "node cannot be null" );
46 requireNonNull( context, "context cannot be null" );
47 String ctx = node.getRequestContext();
48
49 if ( "project".equals( ctx ) )
50 {
51 String scope = getClasspathScope( node );
52 if ( scope != null )
53 {
54 ctx += '/' + scope;
55 node.setRequestContext( ctx );
56 }
57 }
58
59 for ( DependencyNode child : node.getChildren() )
60 {
61 transformGraph( child, context );
62 }
63
64 return node;
65 }
66
67 private String getClasspathScope( DependencyNode node )
68 {
69 Dependency dependency = node.getDependency();
70 if ( dependency == null )
71 {
72 return null;
73 }
74
75 String scope = dependency.getScope();
76
77 if ( JavaScopes.COMPILE.equals( scope ) || JavaScopes.SYSTEM.equals( scope )
78 || JavaScopes.PROVIDED.equals( scope ) )
79 {
80 return JavaScopes.COMPILE;
81 }
82 else if ( JavaScopes.RUNTIME.equals( scope ) )
83 {
84 return JavaScopes.RUNTIME;
85 }
86 else if ( JavaScopes.TEST.equals( scope ) )
87 {
88 return JavaScopes.TEST;
89 }
90
91 return null;
92 }
93
94 }