package org.javers.core.metamodel.object; import org.javers.common.collections.EnumerableFunction; import org.javers.common.validation.Validate; import org.javers.core.metamodel.type.MapContentType; import org.javers.core.metamodel.type.MapEnumerationOwnerContext; /** * @author bartosz walacik */ public class DehydrateMapFunction implements EnumerableFunction { private final GlobalIdFactory globalIdFactory; private final MapContentType mapContentType; public DehydrateMapFunction(GlobalIdFactory globalIdFactory, MapContentType mapContentType) { Validate.argumentsAreNotNull(globalIdFactory, mapContentType); this.globalIdFactory = globalIdFactory; this.mapContentType = mapContentType; } @Override public Object apply(Object input, EnumerationAwareOwnerContext context) { MapEnumerationOwnerContext mapContext = (MapEnumerationOwnerContext)context; if (mapContext.isKey()){ return globalIdFactory.dehydrate(input, mapContentType.getKeyType(), context); } else { return globalIdFactory.dehydrate(input, mapContentType.getValueType(), context); } } }