1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.aether.util.graph.transformer;
20
21 import org.eclipse.aether.RepositoryException;
22 import org.eclipse.aether.util.artifact.JavaScopes;
23 import org.eclipse.aether.util.graph.transformer.ConflictResolver.ScopeContext;
24 import org.eclipse.aether.util.graph.transformer.ConflictResolver.ScopeDeriver;
25
26
27
28
29 public final class JavaScopeDeriver extends ScopeDeriver {
30
31
32
33
34 public JavaScopeDeriver() {}
35
36 @Override
37 public void deriveScope(ScopeContext context) throws RepositoryException {
38 context.setDerivedScope(getDerivedScope(context.getParentScope(), context.getChildScope()));
39 }
40
41 private String getDerivedScope(String parentScope, String childScope) {
42 String derivedScope;
43
44 if (JavaScopes.SYSTEM.equals(childScope) || JavaScopes.TEST.equals(childScope)) {
45 derivedScope = childScope;
46 } else if (parentScope == null || parentScope.isEmpty() || JavaScopes.COMPILE.equals(parentScope)) {
47 derivedScope = childScope;
48 } else if (JavaScopes.TEST.equals(parentScope) || JavaScopes.RUNTIME.equals(parentScope)) {
49 derivedScope = parentScope;
50 } else if (JavaScopes.SYSTEM.equals(parentScope) || JavaScopes.PROVIDED.equals(parentScope)) {
51 derivedScope = JavaScopes.PROVIDED;
52 } else {
53 derivedScope = JavaScopes.RUNTIME;
54 }
55
56 return derivedScope;
57 }
58 }