1
16 package org.modelmapper.internal.converter;
17
18 import org.modelmapper.internal.util.MappingContextHelper;
19 import org.modelmapper.spi.ConditionalConverter;
20 import org.modelmapper.spi.MappingContext;
21
22 import java.util.Optional;
23
24
29 class ToOptionalConverter implements ConditionalConverter<Object, Optional<Object>> {
30 @Override
31 public MatchResult match(Class<?> sourceType, Class<?> destinationType) {
32 return (!Optional.class.equals(sourceType) && Optional.class.equals(destinationType))
33 ? MatchResult.FULL
34 : MatchResult.NONE;
35 }
36
37 @Override
38 public Optional<Object> convert(MappingContext<Object, Optional<Object>> mappingContext) {
39 if (mappingContext.getSource() == null) {
40 return Optional.empty();
41 }
42
43 MappingContext<?, ?> propertyContext = mappingContext.create(
44 mappingContext.getSource(), MappingContextHelper.resolveDestinationGenericType(mappingContext));
45 Object destination = mappingContext.getMappingEngine().map(propertyContext);
46 return Optional.ofNullable(destination);
47 }
48 }
49