@@ -149,7 +149,7 @@ public static <T> String settingValueToString(Settings.Setting<T> setting, T val
149
149
throw new IllegalStateException ("Missing " + setting .getValueClass () + " " + setting .getName ());
150
150
}
151
151
152
- return io .toString (new ParserContext ( setting ), value );
152
+ return io .toString (setting . getType ( ), value );
153
153
}
154
154
155
155
public static String settingValueToString (Settings .Setting setting ) throws IllegalArgumentException {
@@ -196,7 +196,7 @@ public static void parseAndApply(Settings settings, String settingName, String s
196
196
}
197
197
Class intendedType = setting .getValueClass ();
198
198
ISettingParser ioMethod = Parser .getParser (setting .getType ());
199
- Object parsed = ioMethod .parse (new ParserContext ( setting ), settingValue );
199
+ Object parsed = ioMethod .parse (setting . getType ( ), settingValue );
200
200
if (!intendedType .isInstance (parsed )) {
201
201
throw new IllegalStateException (ioMethod + " parser returned incorrect type, expected " + intendedType + " got " + parsed + " which is " + parsed .getClass ());
202
202
}
@@ -205,26 +205,13 @@ public static void parseAndApply(Settings settings, String settingName, String s
205
205
206
206
private interface ISettingParser <T > {
207
207
208
- T parse (ParserContext context , String raw );
208
+ T parse (Type type , String raw );
209
209
210
- String toString (ParserContext context , T value );
210
+ String toString (Type type , T value );
211
211
212
212
boolean accepts (Type type );
213
213
}
214
214
215
- private static class ParserContext {
216
-
217
- private final Settings .Setting <?> setting ;
218
-
219
- private ParserContext (Settings .Setting <?> setting ) {
220
- this .setting = setting ;
221
- }
222
-
223
- private Settings .Setting <?> getSetting () {
224
- return this .setting ;
225
- }
226
- }
227
-
228
215
private enum Parser implements ISettingParser {
229
216
230
217
DOUBLE (Double .class , Double ::parseDouble ),
@@ -256,21 +243,21 @@ private enum Parser implements ISettingParser {
256
243
),
257
244
LIST () {
258
245
@ Override
259
- public Object parse (ParserContext context , String raw ) {
260
- Type type = ((ParameterizedType ) context . getSetting (). getType () ).getActualTypeArguments ()[0 ];
261
- Parser parser = Parser .getParser (type );
246
+ public Object parse (Type type , String raw ) {
247
+ Type elementType = ((ParameterizedType ) type ).getActualTypeArguments ()[0 ];
248
+ Parser parser = Parser .getParser (elementType );
262
249
return Stream .of (raw .split ("," ))
263
- .map (s -> parser .parse (context , s ))
250
+ .map (s -> parser .parse (elementType , s ))
264
251
.collect (Collectors .toList ());
265
252
}
266
253
267
254
@ Override
268
- public String toString (ParserContext context , Object value ) {
269
- Type type = ((ParameterizedType ) context . getSetting (). getType () ).getActualTypeArguments ()[0 ];
270
- Parser parser = Parser .getParser (type );
255
+ public String toString (Type type , Object value ) {
256
+ Type elementType = ((ParameterizedType ) type ).getActualTypeArguments ()[0 ];
257
+ Parser parser = Parser .getParser (elementType );
271
258
272
259
return ((List <?>) value ).stream ()
273
- .map (o -> parser .toString (context , o ))
260
+ .map (o -> parser .toString (elementType , o ))
274
261
.collect (Collectors .joining ("," ));
275
262
}
276
263
@@ -281,26 +268,26 @@ public boolean accepts(Type type) {
281
268
},
282
269
MAPPING () {
283
270
@ Override
284
- public Object parse (ParserContext context , String raw ) {
285
- Type keyType = ((ParameterizedType ) context . getSetting (). getType () ).getActualTypeArguments ()[0 ];
286
- Type valueType = ((ParameterizedType ) context . getSetting (). getType () ).getActualTypeArguments ()[1 ];
271
+ public Object parse (Type type , String raw ) {
272
+ Type keyType = ((ParameterizedType ) type ).getActualTypeArguments ()[0 ];
273
+ Type valueType = ((ParameterizedType ) type ).getActualTypeArguments ()[1 ];
287
274
Parser keyParser = Parser .getParser (keyType );
288
275
Parser valueParser = Parser .getParser (valueType );
289
276
290
277
return Stream .of (raw .split (",(?=[^,]*->)" ))
291
278
.map (s -> s .split ("->" ))
292
- .collect (Collectors .toMap (s -> keyParser .parse (context , s [0 ]), s -> valueParser .parse (context , s [1 ])));
279
+ .collect (Collectors .toMap (s -> keyParser .parse (keyType , s [0 ]), s -> valueParser .parse (valueType , s [1 ])));
293
280
}
294
281
295
282
@ Override
296
- public String toString (ParserContext context , Object value ) {
297
- Type keyType = ((ParameterizedType ) context . getSetting (). getType () ).getActualTypeArguments ()[0 ];
298
- Type valueType = ((ParameterizedType ) context . getSetting (). getType () ).getActualTypeArguments ()[1 ];
283
+ public String toString (Type type , Object value ) {
284
+ Type keyType = ((ParameterizedType ) type ).getActualTypeArguments ()[0 ];
285
+ Type valueType = ((ParameterizedType ) type ).getActualTypeArguments ()[1 ];
299
286
Parser keyParser = Parser .getParser (keyType );
300
287
Parser valueParser = Parser .getParser (valueType );
301
288
302
289
return ((Map <?, ?>) value ).entrySet ().stream ()
303
- .map (o -> keyParser .toString (context , o .getKey ()) + "->" + valueParser .toString (context , o .getValue ()))
290
+ .map (o -> keyParser .toString (keyType , o .getKey ()) + "->" + valueParser .toString (valueType , o .getValue ()))
304
291
.collect (Collectors .joining ("," ));
305
292
}
306
293
@@ -331,14 +318,14 @@ <T> Parser(Class<T> cla$$, Function<String, T> parser, Function<T, String> toStr
331
318
}
332
319
333
320
@ Override
334
- public Object parse (ParserContext context , String raw ) {
321
+ public Object parse (Type type , String raw ) {
335
322
Object parsed = this .parser .apply (raw );
336
323
Objects .requireNonNull (parsed );
337
324
return parsed ;
338
325
}
339
326
340
327
@ Override
341
- public String toString (ParserContext context , Object value ) {
328
+ public String toString (Type type , Object value ) {
342
329
return this .toString .apply (value );
343
330
}
344
331
0 commit comments