1 package org.apache.maven.lifecycle.internal;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.maven.project.MavenProject;
23
24 import java.util.Arrays;
25 import java.util.Collection;
26 import java.util.Collections;
27 import java.util.TreeSet;
28
29
30
31
32
33
34
35
36
37
38
39
40 public class DependencyContext
41 {
42
43 private static final Collection<?> UNRESOLVED = Arrays.asList();
44
45 private final MavenProject project;
46
47 private final Collection<String> scopesToCollectForCurrentProject;
48
49 private final Collection<String> scopesToResolveForCurrentProject;
50
51 private final Collection<String> scopesToCollectForAggregatedProjects;
52
53 private final Collection<String> scopesToResolveForAggregatedProjects;
54
55 private volatile Collection<?> lastDependencyArtifacts = UNRESOLVED;
56
57 private volatile int lastDependencyArtifactCount = -1;
58
59 public DependencyContext( MavenProject project, Collection<String> scopesToCollect,
60 Collection<String> scopesToResolve )
61 {
62 this.project = project;
63 scopesToCollectForCurrentProject = scopesToCollect;
64 scopesToResolveForCurrentProject = scopesToResolve;
65 scopesToCollectForAggregatedProjects = Collections.synchronizedSet( new TreeSet<String>() );
66 scopesToResolveForAggregatedProjects = Collections.synchronizedSet( new TreeSet<String>() );
67 }
68
69 public MavenProject getProject()
70 {
71 return project;
72 }
73
74 public Collection<String> getScopesToCollectForCurrentProject()
75 {
76 return scopesToCollectForCurrentProject;
77 }
78
79 public Collection<String> getScopesToResolveForCurrentProject()
80 {
81 return scopesToResolveForCurrentProject;
82 }
83
84 public Collection<String> getScopesToCollectForAggregatedProjects()
85 {
86 return scopesToCollectForAggregatedProjects;
87 }
88
89 public Collection<String> getScopesToResolveForAggregatedProjects()
90 {
91 return scopesToResolveForAggregatedProjects;
92 }
93
94 public boolean isResolutionRequiredForCurrentProject()
95 {
96 return lastDependencyArtifacts != project.getDependencyArtifacts() || ( lastDependencyArtifacts != null
97 && lastDependencyArtifactCount != lastDependencyArtifacts.size() );
98 }
99
100 public boolean isResolutionRequiredForAggregatedProjects( Collection<String> scopesToCollect,
101 Collection<String> scopesToResolve )
102 {
103 boolean required =
104 scopesToCollectForAggregatedProjects.addAll( scopesToCollect )
105 || scopesToResolveForAggregatedProjects.addAll( scopesToResolve );
106 return required;
107 }
108
109 public void synchronizeWithProjectState()
110 {
111 lastDependencyArtifacts = project.getDependencyArtifacts();
112 lastDependencyArtifactCount = ( lastDependencyArtifacts != null ) ? lastDependencyArtifacts.size() : 0;
113 }
114
115 }