Skip to content

Commit 5dbe9d1

Browse files
Add a simple method to register custom primitives
1 parent 21c99a1 commit 5dbe9d1

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

core/src/main/java/com/envimate/mapmate/builder/MapMateBuilder.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import com.envimate.mapmate.deserialization.*;
2929
import com.envimate.mapmate.deserialization.methods.DeserializationCPMethod;
3030
import com.envimate.mapmate.deserialization.methods.DeserializationDTOMethod;
31+
import com.envimate.mapmate.deserialization.methods.StaticMethodCPMethod;
3132
import com.envimate.mapmate.deserialization.validation.*;
3233
import com.envimate.mapmate.injector.InjectorFactory;
3334
import com.envimate.mapmate.injector.InjectorLambda;
@@ -40,6 +41,7 @@
4041
import java.lang.reflect.Field;
4142
import java.lang.reflect.Method;
4243
import java.util.*;
44+
import java.util.function.Function;
4345
import java.util.stream.Collectors;
4446

4547
import static com.envimate.mapmate.builder.DefaultPackageScanner.defaultPackageScanner;
@@ -56,6 +58,7 @@
5658
import static com.envimate.mapmate.serialization.SerializableDataTransferObject.serializableDataTransferObject;
5759
import static com.envimate.mapmate.serialization.SerializableDefinitions.serializableDefinitions;
5860
import static com.envimate.mapmate.serialization.Serializer.theSerializer;
61+
import static com.envimate.mapmate.serialization.methods.ProvidedMethodSerializationCPMethod.providedMethodSerializationCPMethod;
5962
import static com.envimate.mapmate.validators.NotNullValidator.validateNotNull;
6063

6164
public final class MapMateBuilder {
@@ -199,6 +202,16 @@ public MapMateBuilder withCustomPrimitive(final CustomPrimitiveDefinition custom
199202
return this;
200203
}
201204

205+
public <T> MapMateBuilder withCustomPrimitive(final Class<T> type,
206+
final Function<T, String> serializationMethod,
207+
final Function<String, T> deserializationMethod) {
208+
return this.withCustomPrimitive(customPrimitiveDefinition(
209+
type,
210+
providedMethodSerializationCPMethod(type, serializationMethod),
211+
StaticMethodCPMethod.theStaticMethodCPMethod(deserializationMethod)
212+
));
213+
}
214+
202215
public MapMateBuilder withCustomPrimitive(final Class<?> type,
203216
final Method serializationMethod,
204217
final Method deserializationMethod) {

0 commit comments

Comments
 (0)