
org.sfm.reflect.meta.MapElementPropertyMeta Maven / Gradle / Ivy
package org.sfm.reflect.meta;
import org.sfm.reflect.Getter;
import org.sfm.reflect.ReflectionService;
import org.sfm.reflect.Setter;
import java.lang.reflect.Type;
import java.util.Map;
public class MapElementPropertyMeta, K, V> extends PropertyMeta {
private final ClassMeta valueMetaData;
private final K key;
public MapElementPropertyMeta(PropertyNameMatcher propertyNameMatcher, ReflectionService reflectService, ClassMeta valueMetaData, K key) {
super(propertyNameMatcher.toString(), reflectService);
this.valueMetaData = valueMetaData;
this.key = key;
}
@SuppressWarnings("unchecked")
@Override
protected Setter newSetter() {
return new MapSetter(key);
}
@SuppressWarnings("unchecked")
@Override
protected Getter newGetter() {
return new MapGetter(key);
}
@Override
public Type getPropertyType() {
return valueMetaData.getType();
}
@Override
public String getPath() {
return key + "." + getName();
}
public K getKey() {
return key;
}
private static class MapSetter, K, V> implements Setter {
private final K key;
private MapSetter(K key) {
this.key = key;
}
@Override
public void set(T target, V value) throws Exception {
target.put(key, value);
}
}
private static class MapGetter, K, V> implements Getter {
private final K key;
private MapGetter(K key) {
this.key = key;
}
@Override
public V get(T target) throws Exception {
return target.get(key);
}
}
@Override
public String toString() {
return "MapElementPropertyMeta{"
+"key=" + key +
'}';
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy