1 package org.apache.maven.shared.dependency.graph.internal;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.util.List;
23
24 import org.apache.maven.artifact.Artifact;
25 import org.apache.maven.shared.dependency.graph.DependencyNode;
26 import org.apache.maven.shared.dependency.graph.traversal.DependencyNodeVisitor;
27
28
29
30
31 public class DefaultDependencyNode implements DependencyNode
32 {
33 private final Artifact artifact;
34
35 private final DependencyNode parent;
36
37 private final String premanagedVersion;
38
39 private final String premanagedScope;
40
41 private final String versionConstraint;
42
43 private List<DependencyNode> children;
44
45
46
47
48
49
50
51
52
53
54 public DefaultDependencyNode( DependencyNode parent, Artifact artifact, String premanagedVersion,
55 String premanagedScope, String versionConstraint )
56 {
57 this.parent = parent;
58 this.artifact = artifact;
59 this.premanagedVersion = premanagedVersion;
60 this.premanagedScope = premanagedScope;
61 this.versionConstraint = versionConstraint;
62 }
63
64
65
66
67
68
69
70
71 public boolean accept( DependencyNodeVisitor visitor )
72 {
73 if ( visitor.visit( this ) )
74 {
75 for ( DependencyNode child : getChildren() )
76 {
77 if ( !child.accept( visitor ) )
78 {
79 break;
80 }
81 }
82 }
83
84 return visitor.endVisit( this );
85 }
86
87
88
89
90 public Artifact getArtifact()
91 {
92 return artifact;
93 }
94
95
96
97
98
99 public void setChildren( List<DependencyNode> children )
100 {
101 this.children = children;
102 }
103
104
105
106
107 public List<DependencyNode> getChildren()
108 {
109 return children;
110 }
111
112
113
114
115 public DependencyNode getParent()
116 {
117 return parent;
118 }
119
120 public String getPremanagedVersion()
121 {
122 return premanagedVersion;
123 }
124
125 public String getPremanagedScope()
126 {
127 return premanagedScope;
128 }
129
130 public String getVersionConstraint()
131 {
132 return versionConstraint;
133 }
134
135
136
137
138 public String toNodeString()
139 {
140 StringBuffer buffer = new StringBuffer();
141
142 buffer.append( artifact );
143
144 ItemAppender appender = new ItemAppender( buffer, " (", "; ", ")" );
145
146 if ( getPremanagedVersion() != null )
147 {
148 appender.append( "version managed from ", getPremanagedVersion() );
149 }
150
151 if ( getPremanagedScope() != null )
152 {
153 appender.append( "scope managed from ", getPremanagedScope() );
154 }
155
156 if ( getVersionConstraint() != null )
157 {
158 appender.append( "version selected from constraint ", getVersionConstraint() );
159 }
160
161 appender.flush();
162
163 return buffer.toString();
164 }
165
166
167
168
169 private static class ItemAppender
170 {
171 private StringBuffer buffer;
172
173 private String startToken;
174
175 private String separatorToken;
176
177 private String endToken;
178
179 private boolean appended;
180
181 public ItemAppender( StringBuffer buffer, String startToken, String separatorToken, String endToken )
182 {
183 this.buffer = buffer;
184 this.startToken = startToken;
185 this.separatorToken = separatorToken;
186 this.endToken = endToken;
187
188 appended = false;
189 }
190
191 public ItemAppender append( String item1, String item2 )
192 {
193 appendToken();
194
195 buffer.append( item1 ).append( item2 );
196
197 return this;
198 }
199
200 public void flush()
201 {
202 if ( appended )
203 {
204 buffer.append( endToken );
205
206 appended = false;
207 }
208 }
209
210 private void appendToken()
211 {
212 buffer.append( appended ? separatorToken : startToken );
213
214 appended = true;
215 }
216 }
217 }