1
2
3
4 package org.apache.maven.api.settings;
5
6 import java.io.Serializable;
7 import java.util.Collections;
8 import java.util.HashMap;
9 import java.util.Map;
10 import org.apache.maven.api.annotations.Experimental;
11 import org.apache.maven.api.annotations.Generated;
12 import org.apache.maven.api.annotations.Immutable;
13 import org.apache.maven.api.annotations.Nonnull;
14 import org.apache.maven.api.annotations.NotThreadSafe;
15 import org.apache.maven.api.annotations.ThreadSafe;
16
17
18
19
20 @Experimental
21 @Generated @ThreadSafe @Immutable
22 public class RepositoryPolicy
23 implements Serializable
24 {
25
26
27
28
29 final boolean enabled;
30
31
32
33
34
35 final String updatePolicy;
36
37
38
39
40 final String checksumPolicy;
41
42
43
44
45
46 RepositoryPolicy(
47 boolean enabled,
48 String updatePolicy,
49 String checksumPolicy
50 )
51 {
52 this.enabled = enabled;
53 this.updatePolicy = updatePolicy;
54 this.checksumPolicy = checksumPolicy;
55 }
56
57
58
59
60
61
62
63 public boolean isEnabled()
64 {
65 return this.enabled;
66 }
67
68
69
70
71
72
73
74
75 public String getUpdatePolicy()
76 {
77 return this.updatePolicy;
78 }
79
80
81
82
83
84
85
86 public String getChecksumPolicy()
87 {
88 return this.checksumPolicy;
89 }
90
91
92
93
94
95
96 @Nonnull
97 public Builder with()
98 {
99 return newBuilder( this );
100 }
101
102
103
104
105
106
107 @Nonnull
108 public RepositoryPolicy withEnabled( boolean enabled )
109 {
110 return with().enabled( enabled ).build();
111 }
112
113
114
115
116
117
118 @Nonnull
119 public RepositoryPolicy withUpdatePolicy( String updatePolicy )
120 {
121 return with().updatePolicy( updatePolicy ).build();
122 }
123
124
125
126
127
128
129 @Nonnull
130 public RepositoryPolicy withChecksumPolicy( String checksumPolicy )
131 {
132 return with().checksumPolicy( checksumPolicy ).build();
133 }
134
135
136
137
138
139
140
141
142 @Nonnull
143 public static RepositoryPolicy newInstance()
144 {
145 return newInstance( true );
146 }
147
148
149
150
151
152
153
154
155 @Nonnull
156 public static RepositoryPolicy newInstance( boolean withDefaults )
157 {
158 return newBuilder( withDefaults ).build();
159 }
160
161
162
163
164
165
166
167
168 @Nonnull
169 public static Builder newBuilder()
170 {
171 return newBuilder( true );
172 }
173
174
175
176
177
178
179
180 @Nonnull
181 public static Builder newBuilder( boolean withDefaults )
182 {
183 return new Builder( withDefaults );
184 }
185
186
187
188
189
190
191
192
193 @Nonnull
194 public static Builder newBuilder( RepositoryPolicy from )
195 {
196 return newBuilder( from, false );
197 }
198
199
200
201
202
203
204
205
206 @Nonnull
207 public static Builder newBuilder( RepositoryPolicy from, boolean forceCopy )
208 {
209 return new Builder( from, forceCopy );
210 }
211
212
213
214
215
216
217 @NotThreadSafe
218 public static class Builder
219 {
220 RepositoryPolicy base;
221 Boolean enabled;
222 String updatePolicy;
223 String checksumPolicy;
224
225 Builder( boolean withDefaults )
226 {
227 if ( withDefaults )
228 {
229 this.enabled = true;
230 }
231 }
232
233 Builder( RepositoryPolicy base, boolean forceCopy )
234 {
235 if ( forceCopy )
236 {
237 this.enabled = base.enabled;
238 this.updatePolicy = base.updatePolicy;
239 this.checksumPolicy = base.checksumPolicy;
240 }
241 else
242 {
243 this.base = base;
244 }
245 }
246
247 @Nonnull
248 public Builder enabled( boolean enabled )
249 {
250 this.enabled = enabled;
251 return this;
252 }
253
254 @Nonnull
255 public Builder updatePolicy( String updatePolicy )
256 {
257 this.updatePolicy = updatePolicy;
258 return this;
259 }
260
261 @Nonnull
262 public Builder checksumPolicy( String checksumPolicy )
263 {
264 this.checksumPolicy = checksumPolicy;
265 return this;
266 }
267
268
269 @Nonnull
270 public RepositoryPolicy build()
271 {
272 if ( base != null
273 && ( enabled == null || enabled == base.enabled )
274 && ( updatePolicy == null || updatePolicy == base.updatePolicy )
275 && ( checksumPolicy == null || checksumPolicy == base.checksumPolicy )
276 )
277 {
278 return base;
279 }
280 return new RepositoryPolicy(
281 enabled != null ? enabled : ( base != null ? base.enabled : true ),
282 updatePolicy != null ? updatePolicy : ( base != null ? base.updatePolicy : null ),
283 checksumPolicy != null ? checksumPolicy : ( base != null ? base.checksumPolicy : null )
284 );
285 }
286 }
287
288 }