package net.varkhan.base.functor.mapper;
import net.varkhan.base.functor.Mapper;
import java.util.HashMap;
import java.util.Map;
/**
* <b></b>.
* <p/>
*
* @author varkhan
* @date 4/7/12
* @time 6:00 PM
*/
public class MapMapper<K,R,A,C> implements Mapper<Map<K,R>,A,C> {
protected final Map<K,Mapper<R,A,C>> maps;
public MapMapper(Map<K,Mapper<R,A,C>> maps) {
this.maps = new HashMap<K,Mapper<R,A,C>>(maps);
}
@SuppressWarnings({ "unchecked" })
public Map<K,R> invoke(A arg, C ctx) {
Map<K,R> res = new HashMap<K,R>(maps.size());
for(Map.Entry<K,Mapper<R,A,C>> m: maps.entrySet()) res.put(m.getKey(),m.getValue().invoke(arg, ctx));
return res;
}
}