|
19 | 19 | import java.util.stream.IntStream; |
20 | 20 | import java.util.stream.Stream; |
21 | 21 |
|
22 | | -final class Serializers { |
| 22 | +import static de.exlll.configlib.Validator.*; |
| 23 | + |
| 24 | +/** |
| 25 | + * Class that contains static factory methods for the creation of {@code Serializer}s. |
| 26 | + */ |
| 27 | +public final class Serializers { |
23 | 28 | private Serializers() {} |
24 | 29 |
|
| 30 | + /** |
| 31 | + * Creates a new serializer that converts instances of the given configuration type |
| 32 | + * to {@code Map}s of valid target types. |
| 33 | + * <p> |
| 34 | + * The serializer returned by this method respects most configuration properties of |
| 35 | + * the given properties object. The following properties are ignored: |
| 36 | + * - All properties of subclasses of the configuration properties object |
| 37 | + * - Properties affecting environment variable resolution |
| 38 | + * |
| 39 | + * @param configurationType the type of configurations the newly created serializer |
| 40 | + * can convert |
| 41 | + * @param properties the configuration properties the serializer will use |
| 42 | + * @param <T> the configuration type |
| 43 | + * @return newly created serializer |
| 44 | + * @throws NullPointerException if any argument is null |
| 45 | + * @throws ConfigurationException if {@code type} is not a configuration type |
| 46 | + */ |
| 47 | + public static <T> Serializer<T, Map<?, ?>> newSerializerForType( |
| 48 | + Class<T> configurationType, |
| 49 | + ConfigurationProperties properties |
| 50 | + ) { |
| 51 | + requireNonNull(configurationType, "configuration type"); |
| 52 | + requireNonNull(properties, "configuration properties"); |
| 53 | + requireConfigurationType(configurationType); |
| 54 | + return TypeSerializer.newSerializerFor(configurationType, properties); |
| 55 | + } |
| 56 | + |
25 | 57 | static <S extends Serializer<?, ?>> S newCustomSerializer( |
26 | 58 | Class<S> serializerType, |
27 | 59 | SerializerContext context |
@@ -61,7 +93,7 @@ static final class NumberSerializer implements Serializer<Number, Number> { |
61 | 93 | private final Class<? extends Number> cls; |
62 | 94 |
|
63 | 95 | public NumberSerializer(Class<? extends Number> cls) { |
64 | | - this.cls = Validator.requireNonNull(cls, "number class"); |
| 96 | + this.cls = requireNonNull(cls, "number class"); |
65 | 97 | Validator.requirePrimitiveOrWrapperNumberType(cls); |
66 | 98 | } |
67 | 99 |
|
@@ -336,7 +368,7 @@ static final class EnumSerializer implements Serializer<Enum<?>, String> { |
336 | 368 | private final Class<? extends Enum<?>> cls; |
337 | 369 |
|
338 | 370 | public EnumSerializer(Class<? extends Enum<?>> cls) { |
339 | | - this.cls = Validator.requireNonNull(cls, "enum class"); |
| 371 | + this.cls = requireNonNull(cls, "enum class"); |
340 | 372 | } |
341 | 373 |
|
342 | 374 | @Override |
@@ -383,7 +415,7 @@ public CollectionSerializer( |
383 | 415 | Supplier<L> lSupplier, |
384 | 416 | Supplier<R> rSupplier |
385 | 417 | ) { |
386 | | - this.serializer = Validator.requireNonNull(serializer, "element serializer"); |
| 418 | + this.serializer = requireNonNull(serializer, "element serializer"); |
387 | 419 | this.outputNulls = outputNulls; |
388 | 420 | this.inputNulls = inputNulls; |
389 | 421 | this.lSupplier = lSupplier; |
@@ -441,8 +473,8 @@ public MapSerializer( |
441 | 473 | boolean outputNulls, |
442 | 474 | boolean inputNulls |
443 | 475 | ) { |
444 | | - this.keySerializer = Validator.requireNonNull(keySerializer, "key serializer"); |
445 | | - this.valSerializer = Validator.requireNonNull(valSerializer, "value serializer"); |
| 476 | + this.keySerializer = requireNonNull(keySerializer, "key serializer"); |
| 477 | + this.valSerializer = requireNonNull(valSerializer, "value serializer"); |
446 | 478 | this.outputNulls = outputNulls; |
447 | 479 | this.inputNulls = inputNulls; |
448 | 480 | } |
@@ -504,8 +536,8 @@ public ArraySerializer( |
504 | 536 | boolean outputNulls, |
505 | 537 | boolean inputNulls |
506 | 538 | ) { |
507 | | - this.componentType = Validator.requireNonNull(componentType, "component type"); |
508 | | - this.serializer = Validator.requireNonNull(serializer, "element serializer"); |
| 539 | + this.componentType = requireNonNull(componentType, "component type"); |
| 540 | + this.serializer = requireNonNull(serializer, "element serializer"); |
509 | 541 | this.outputNulls = outputNulls; |
510 | 542 | this.inputNulls = inputNulls; |
511 | 543 | } |
|
0 commit comments