1
16 package org.modelmapper.internal.valueaccess;
17
18 import java.util.Collection;
19 import java.util.Map;
20
21 import org.modelmapper.spi.ValueReader;
22
23
28 public class MapValueReader implements ValueReader<Map<String, Object>> {
29 @Override
30 public Object get(Map<String, Object> source, String memberName) {
31 return source.get(memberName);
32 }
33
34 @SuppressWarnings("unchecked")
35 @Override
36 public Member<Map<String, Object>> getMember(Map<String, Object> source, String memberName) {
37 final Object value = get(source, memberName);
38 if (value instanceof Map)
39 return new Member<Map<String, Object>>(Map.class) {
40 @Override
41 public Map<String, Object> getOrigin() {
42 return (Map<String, Object>) value;
43 }
44
45 @Override
46 public Object get(Map<String, Object> source, String memberName) {
47 return MapValueReader.this.get(source, memberName);
48 }
49 };
50 Class<?> memberType = value != null ? value.getClass() : Object.class;
51 return new Member<Map<String, Object>>(memberType) {
52 @Override
53 public Map<String, Object> getOrigin() {
54 return null;
55 }
56
57 @Override
58 public Object get(Map<String, Object> source, String memberName) {
59 return MapValueReader.this.get(source, memberName);
60 }
61 };
62 }
63
64 @Override
65 public Collection<String> memberNames(Map<String, Object> source) {
66 return source.keySet();
67 }
68
69 }
70