001 002package com.commercetools.api.models; 003 004import java.util.Map; 005import java.util.Optional; 006import java.util.function.Function; 007 008import javax.annotation.Nullable; 009 010/** 011 * accessor interface for map objects like attributes or custom fields 012 * @param <T> the type of the map value 013 */ 014public class MapAccessor<T> { 015 private final Map<String, T> map; 016 017 public MapAccessor(Map<String, T> map) { 018 this.map = map; 019 } 020 021 @Nullable 022 public <U> U get(final String key, Function<T, U> mapFn) { 023 return Optional.ofNullable(map.get(key)).map(mapFn).orElse(null); 024 } 025 026 @Nullable 027 public T get(final String key) { 028 return map.get(key); 029 } 030}