3232import java .util .List ;
3333import java .util .Map ;
3434import java .util .Objects ;
35+ import java .util .Set ;
3536import java .util .concurrent .atomic .AtomicBoolean ;
37+ import java .util .stream .Collectors ;
3638
3739import org .apache .maven .api .model .Model ;
3840import org .apache .maven .api .services .Interpolator ;
@@ -58,7 +60,7 @@ enum ModelInfo {
5860 RootDirectory
5961 }
6062
61- class Record {
63+ static class Record {
6264 private final Map <String , Boolean > usedActiveProfiles = new HashMap <>();
6365 private final Map <String , Boolean > usedInactiveProfiles = new HashMap <>();
6466 private final Map <String , String > usedSystemProperties = new HashMap <>();
@@ -67,6 +69,36 @@ class Record {
6769 private final Map <ModelInfo , String > usedModelInfos = new HashMap <>();
6870 private final Map <ExistRequest , Boolean > usedExists = new HashMap <>();
6971
72+ @ Override
73+ public boolean equals (Object o ) {
74+ if (o instanceof Record record ) {
75+ return Objects .equals (values (usedActiveProfiles ), values (record .usedActiveProfiles ))
76+ && Objects .equals (values (usedInactiveProfiles ), values (record .usedInactiveProfiles ))
77+ && Objects .equals (usedSystemProperties , record .usedSystemProperties )
78+ && Objects .equals (usedUserProperties , record .usedUserProperties )
79+ && Objects .equals (usedModelProperties , record .usedModelProperties )
80+ && Objects .equals (usedModelInfos , record .usedModelInfos )
81+ && Objects .equals (usedExists , record .usedExists );
82+ }
83+ return false ;
84+ }
85+
86+ private static Set <String > values (Map <String , Boolean > map ) {
87+ return map .entrySet ().stream ().filter (e -> e .getValue ()).map (e -> e .getKey ()).collect (Collectors .toSet ());
88+ }
89+
90+ @ Override
91+ public int hashCode () {
92+ return Objects .hash (
93+ usedActiveProfiles ,
94+ usedInactiveProfiles ,
95+ usedSystemProperties ,
96+ usedUserProperties ,
97+ usedModelProperties ,
98+ usedModelInfos ,
99+ usedExists );
100+ }
101+
70102 boolean matches (DefaultProfileActivationContext context ) {
71103 for (Map .Entry <String , Boolean > e : usedActiveProfiles .entrySet ()) {
72104 if (!Objects .equals (e .getValue (), context .activeProfileIds .contains (e .getKey ()))) {
@@ -107,7 +139,8 @@ boolean matches(DefaultProfileActivationContext context) {
107139 }
108140 for (Map .Entry <ExistRequest , Boolean > e : usedExists .entrySet ()) {
109141 if (!Objects .equals (
110- e .getValue (), doExists (e .getKey ().path (), e .getKey ().enableGlob ()))) {
142+ e .getValue (),
143+ context .doExists (e .getKey ().path (), e .getKey ().enableGlob ()))) {
111144 return false ;
112145 }
113146 }
0 commit comments