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