28
28
import java .util .Collections ;
29
29
import java .util .HashSet ;
30
30
import java .util .Iterator ;
31
- import java .util .LinkedHashMap ;
32
31
import java .util .List ;
33
32
import java .util .Map ;
34
33
import java .util .Objects ;
@@ -213,100 +212,95 @@ public Collection<Lifecycle> provides() {
213
212
.filter (id -> !Lifecycle .CLEAN .equals (id )
214
213
&& !Lifecycle .DEFAULT .equals (id )
215
214
&& !Lifecycle .SITE .equals (id ))
216
- .map (id -> wrap (all .get (id )))
215
+ .map (id -> ( Lifecycle ) new WrappedLifecycle (all .get (id )))
217
216
.toList ();
218
217
} catch (ComponentLookupException e ) {
219
218
throw new LookupException (e );
220
219
}
221
220
}
221
+ }
222
222
223
- private Lifecycle wrap (org .apache .maven .lifecycle .Lifecycle lifecycle ) {
224
- return new Lifecycle () {
225
- @ Override
226
- public String id () {
227
- return lifecycle .getId ();
228
- }
223
+ /**
224
+ * Record implementation of Lifecycle.Phase for wrapped phases.
225
+ *
226
+ * @param name The name of the phase
227
+ * @param prev The name of the previous phase (may be null)
228
+ * @param lifecycle The original Maven 3 lifecycle
229
+ */
230
+ record WrappedPhase (String name , String prev , org .apache .maven .lifecycle .Lifecycle lifecycle )
231
+ implements Lifecycle .Phase {
232
+ /**
233
+ * Compact constructor with null validation.
234
+ */
235
+ WrappedPhase {
236
+ Objects .requireNonNull (name , "name cannot be null" );
237
+ Objects .requireNonNull (lifecycle , "lifecycle cannot be null" );
238
+ // prev can be null for the first phase
239
+ }
229
240
230
- @ Override
231
- public Collection <Phase > phases () {
232
- List <String > names = lifecycle .getPhases ();
233
- List <Phase > phases = new ArrayList <>();
234
- for (int i = 0 ; i < names .size (); i ++) {
235
- String name = names .get (i );
236
- String prev = i > 0 ? names .get (i - 1 ) : null ;
237
- phases .add (new Phase () {
238
- @ Override
239
- public String name () {
240
- return name ;
241
- }
242
-
243
- @ Override
244
- public List <Phase > phases () {
245
- return List .of ();
246
- }
247
-
248
- @ Override
249
- public Stream <Phase > allPhases () {
250
- return Stream .concat (
251
- Stream .of (this ), phases ().stream ().flatMap (Lifecycle .Phase ::allPhases ));
252
- }
253
-
254
- @ Override
255
- public List <Plugin > plugins () {
256
- Map <String , LifecyclePhase > lfPhases = lifecycle .getDefaultLifecyclePhases ();
257
- LifecyclePhase phase = lfPhases != null ? lfPhases .get (name ) : null ;
258
- if (phase != null ) {
259
- Map <String , Plugin > plugins = new LinkedHashMap <>();
260
- DefaultPackagingRegistry .parseLifecyclePhaseDefinitions (plugins , name , phase );
261
- return plugins .values ().stream ().toList ();
262
- }
263
- return List .of ();
264
- }
265
-
266
- @ Override
267
- public Collection <Link > links () {
268
- if (prev == null ) {
269
- return List .of ();
270
- } else {
271
- return List .of (new Link () {
272
- @ Override
273
- public Kind kind () {
274
- return Kind .AFTER ;
275
- }
276
-
277
- @ Override
278
- public Pointer pointer () {
279
- return new Pointer () {
280
- @ Override
281
- public String phase () {
282
- return prev ;
283
- }
284
-
285
- @ Override
286
- public Type type () {
287
- return Type .PROJECT ;
288
- }
289
- };
290
- }
291
- });
292
- }
293
- }
294
- });
295
- }
296
- return phases ;
297
- }
241
+ @ Override
242
+ @ Nonnull
243
+ public List <Lifecycle .Phase > phases () {
244
+ return List .of ();
245
+ }
298
246
299
- @ Override
300
- public Collection <Alias > aliases () {
301
- return Collections .emptyList ();
302
- }
303
- };
247
+ @ Override
248
+ @ Nonnull
249
+ public List <Plugin > plugins () {
250
+ Map <String , LifecyclePhase > lfPhases = lifecycle .getDefaultLifecyclePhases ();
251
+ return lfPhases != null
252
+ ? List .copyOf (DefaultPackagingRegistry .parseLifecyclePhaseDefinitions (lfPhases ))
253
+ : List .of ();
254
+ }
255
+
256
+ @ Override
257
+ @ Nonnull
258
+ public Collection <Lifecycle .Link > links () {
259
+ if (prev == null ) {
260
+ return List .of ();
261
+ } else {
262
+ return List .of (new Lifecycles .DefaultLink (
263
+ Lifecycle .Link .Kind .AFTER , new Lifecycles .DefaultPhasePointer (prev )));
264
+ }
304
265
}
305
266
}
306
267
307
- static class WrappedLifecycle extends org .apache .maven .lifecycle .Lifecycle {
308
- WrappedLifecycle (LifecycleRegistry registry , Lifecycle lifecycle ) {
309
- super (registry , lifecycle );
268
+ /**
269
+ * Record implementation of Lifecycle for wrapped lifecycles.
270
+ *
271
+ * @param lifecycle The original Maven 3 lifecycle
272
+ */
273
+ record WrappedLifecycle (org .apache .maven .lifecycle .Lifecycle lifecycle ) implements Lifecycle {
274
+ /**
275
+ * Compact constructor with null validation.
276
+ */
277
+ WrappedLifecycle {
278
+ Objects .requireNonNull (lifecycle , "lifecycle cannot be null" );
279
+ }
280
+
281
+ @ Override
282
+ @ Nonnull
283
+ public String id () {
284
+ return lifecycle .getId ();
285
+ }
286
+
287
+ @ Override
288
+ @ Nonnull
289
+ public Collection <Phase > phases () {
290
+ List <String > names = lifecycle .getPhases ();
291
+ List <Phase > phases = new ArrayList <>();
292
+ for (int i = 0 ; i < names .size (); i ++) {
293
+ String name = names .get (i );
294
+ String prev = i > 0 ? names .get (i - 1 ) : null ;
295
+ phases .add (new WrappedPhase (name , prev , lifecycle ));
296
+ }
297
+ return phases ;
298
+ }
299
+
300
+ @ Override
301
+ @ Nonnull
302
+ public Collection <Alias > aliases () {
303
+ return List .of ();
310
304
}
311
305
}
312
306
@@ -324,7 +318,7 @@ abstract static class BaseLifecycleProvider implements Provider<org.apache.maven
324
318
public org .apache .maven .lifecycle .Lifecycle get () {
325
319
try {
326
320
LifecycleRegistry registry = lookup .lookup (LifecycleRegistry .class );
327
- return new WrappedLifecycle (registry , registry .require (name ));
321
+ return new org . apache . maven . lifecycle . Lifecycle (registry , registry .require (name ));
328
322
} catch (ComponentLookupException e ) {
329
323
throw new LookupException (e );
330
324
}
0 commit comments