package org.om.core.impl.persistence.interceptor.handler.map; import java.util.Collections; import org.om.core.api.annotation.MissingStrategy; import org.om.core.api.exception.MissingException; import org.om.core.api.mapping.CollectionMapping; import org.om.core.api.mapping.MappedField; import org.om.core.api.persistence.PersistenceAdapter; import org.om.core.api.persistence.interceptor.handler.ItemHandler; import org.om.core.api.persistence.result.MapResult; public class PrimitiveMapHandler implements ItemHandler { @Override public Object retrieve(MappedField mappedField, PersistenceAdapter adapter) { final CollectionMapping mapping = (CollectionMapping) mappedField.getMapping(); final MapResult mapResult = adapter.getMapResult(mapping); if (!mapResult.hasResult()) { // TODO: I've copied this code over from AbstractCollectionHandler. // This needs to be refactored. if (mappedField.getMissingStrategy() == MissingStrategy.ThrowException) { // TODO: Add proper exception logic throw new MissingException("TODO: throw proper exception. "); } else { // TODO: In case of read/write we need to return a proxy. return Collections.EMPTY_MAP; } } return new PrimitiveValueMapWrapper(mapResult.getValue()); } }