24
24
import java .util .Collection ;
25
25
import java .util .List ;
26
26
import java .util .Map ;
27
+ import java .util .Optional ;
27
28
import java .util .Properties ;
28
29
29
30
import javax .annotation .Nullable ;
@@ -54,6 +55,7 @@ public abstract class EquoBasedStepBuilder {
54
55
private final ImmutableMap .Builder <String , String > stepProperties ;
55
56
private String formatterVersion ;
56
57
private Iterable <File > settingsFiles = new ArrayList <>();
58
+ private List <String > settingProperties = new ArrayList <>();
57
59
private Map <String , String > p2Mirrors = Map .of ();
58
60
private File cacheDirectory ;
59
61
@@ -80,6 +82,10 @@ public void setPreferences(Iterable<File> settingsFiles) {
80
82
this .settingsFiles = settingsFiles ;
81
83
}
82
84
85
+ public void setPropertyPreferences (List <String > propertyPreferences ) {
86
+ this .settingProperties = propertyPreferences ;
87
+ }
88
+
83
89
public void setP2Mirrors (Map <String , String > p2Mirrors ) {
84
90
this .p2Mirrors = Map .copyOf (p2Mirrors );
85
91
}
@@ -113,7 +119,7 @@ protected void addPlatformRepo(P2Model model, String version) {
113
119
114
120
/** Returns the FormatterStep (whose state will be calculated lazily). */
115
121
public FormatterStep build () {
116
- var roundtrippableState = new EquoStep (formatterVersion , FileSignature .promise (settingsFiles ), JarState .promise (() -> {
122
+ var roundtrippableState = new EquoStep (formatterVersion , settingProperties , FileSignature .promise (settingsFiles ), JarState .promise (() -> {
117
123
P2QueryResult query ;
118
124
try {
119
125
if (null != cacheDirectory ) {
@@ -167,21 +173,24 @@ static class EquoStep implements Serializable {
167
173
private final FileSignature .Promised settingsPromise ;
168
174
private final JarState .Promised jarPromise ;
169
175
private final ImmutableMap <String , String > stepProperties ;
176
+ private List <String > settingProperties ;
170
177
171
178
EquoStep (
172
179
String semanticVersion ,
180
+ List <String > settingProperties ,
173
181
FileSignature .Promised settingsPromise ,
174
182
JarState .Promised jarPromise ,
175
183
ImmutableMap <String , String > stepProperties ) {
176
184
177
185
this .semanticVersion = semanticVersion ;
186
+ this .settingProperties = Optional .ofNullable (settingProperties ).orElse (new ArrayList <>());
178
187
this .settingsPromise = settingsPromise ;
179
188
this .jarPromise = jarPromise ;
180
189
this .stepProperties = stepProperties ;
181
190
}
182
191
183
192
private State state () {
184
- return new State (semanticVersion , jarPromise .get (), settingsPromise .get (), stepProperties );
193
+ return new State (semanticVersion , jarPromise .get (), settingProperties , settingsPromise .get (), stepProperties );
185
194
}
186
195
}
187
196
@@ -195,10 +204,12 @@ public static class State implements Serializable {
195
204
final JarState jarState ;
196
205
final FileSignature settingsFiles ;
197
206
final ImmutableMap <String , String > stepProperties ;
207
+ private List <String > settingProperties ;
198
208
199
- public State (String semanticVersion , JarState jarState , FileSignature settingsFiles , ImmutableMap <String , String > stepProperties ) {
209
+ public State (String semanticVersion , JarState jarState , List < String > settingProperties , FileSignature settingsFiles , ImmutableMap <String , String > stepProperties ) {
200
210
this .semanticVersion = semanticVersion ;
201
211
this .jarState = jarState ;
212
+ this .settingProperties = Optional .ofNullable (settingProperties ).orElse (new ArrayList <>());
202
213
this .settingsFiles = settingsFiles ;
203
214
this .stepProperties = stepProperties ;
204
215
}
@@ -212,7 +223,9 @@ public String getSemanticVersion() {
212
223
}
213
224
214
225
public Properties getPreferences () {
215
- return FormatterProperties .from (settingsFiles .files ()).getProperties ();
226
+ FormatterProperties fromFiles = FormatterProperties .from (settingsFiles .files ());
227
+ FormatterProperties fromPropertiesContent = FormatterProperties .fromPropertiesContent (settingProperties );
228
+ return FormatterProperties .merge (fromFiles .getProperties (), fromPropertiesContent .getProperties ()).getProperties ();
216
229
}
217
230
218
231
public ImmutableMap <String , String > getStepProperties () {
0 commit comments