2828import java .util .Collections ;
2929import java .util .HashSet ;
3030import java .util .Iterator ;
31- import java .util .LinkedHashMap ;
3231import java .util .List ;
3332import java .util .Map ;
3433import java .util .Objects ;
@@ -213,100 +212,95 @@ public Collection<Lifecycle> provides() {
213212 .filter (id -> !Lifecycle .CLEAN .equals (id )
214213 && !Lifecycle .DEFAULT .equals (id )
215214 && !Lifecycle .SITE .equals (id ))
216- .map (id -> wrap (all .get (id )))
215+ .map (id -> ( Lifecycle ) new WrappedLifecycle (all .get (id )))
217216 .toList ();
218217 } catch (ComponentLookupException e ) {
219218 throw new LookupException (e );
220219 }
221220 }
221+ }
222222
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+ }
229240
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+ }
298246
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+ }
304265 }
305266 }
306267
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 ();
310304 }
311305 }
312306
@@ -324,7 +318,7 @@ abstract static class BaseLifecycleProvider implements Provider<org.apache.maven
324318 public org .apache .maven .lifecycle .Lifecycle get () {
325319 try {
326320 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 ));
328322 } catch (ComponentLookupException e ) {
329323 throw new LookupException (e );
330324 }
0 commit comments