package org.om.core.impl.persistence.delegate; import org.om.core.api.exception.ObjectMapperException; import org.om.core.api.mapping.CollectionMapping; import org.om.core.api.mapping.EntityMapping; import org.om.core.api.mapping.MappedField; import org.om.core.api.mapping.field.Mapping; import org.om.core.api.mapping.field.PropertyMapping; import org.om.core.api.persistence.PersistenceAdapter; import org.om.core.api.persistence.PersistenceContext; import org.om.core.api.persistence.request.PersistenceRequest; import org.om.core.api.persistence.result.CollectionResult; import org.om.core.api.persistence.result.MapResult; import org.om.core.api.persistence.result.PersistenceResult; import org.om.core.impl.persistence.result.ImmutablePersistenceResult; import org.om.core.impl.persistence.result.MissingPersistenceResult; import org.om.core.impl.persistence.result.NoValuePersistenceResult; /** * @author tome * @author Jakob Külzer */ public class TestingPersistenceAdapter implements PersistenceAdapter { private final EntityMapping entityMapping; private final TestingPersistenceContext persistenceContext; public TestingPersistenceAdapter(EntityMapping entityMapping, PersistenceContext persistenceContext) { this.entityMapping = entityMapping; this.persistenceContext = (TestingPersistenceContext) (persistenceContext == null ? new TestingPersistenceContext() : persistenceContext); } public EntityMapping getEntityMapping() { return entityMapping; } public TestingPersistenceAdapter addProperty(String propertyName, Object value) { persistenceContext.addProperty(propertyName, value); return this; } public PersistenceResult getProperty(PropertyMapping propertyMapping) { if (!persistenceContext.hasProperty(propertyMapping.getPropertyName())) { MappedField mappedField = entityMapping.getMappedFields().getFieldByMapping(propertyMapping); return MissingPersistenceResult.createMissing(mappedField); } return new ImmutablePersistenceResult(persistenceContext.getProperty(propertyMapping)); } public boolean canProvide(Mapping mapping) { return false; // persistenceContext.hasProperty(mapping.get()); } public void setProperty(PropertyMapping propertyMapping, Object object) throws ObjectMapperException { persistenceContext.setProperty(propertyMapping, object); } public void delete() throws ObjectMapperException { // do nothing } public CollectionResult getCollection(CollectionMapping collectionMapping) { // TODO Auto-generated method stub return null; } @Override public PersistenceResult getProperty(PersistenceRequest request) { if (!persistenceContext.hasProperty(request.getPath())) { return new NoValuePersistenceResult(); } return new ImmutablePersistenceResult(persistenceContext.getProperty(request.getPath())); } @Override public Object resolve(String id) { return id; } @Override public String getId() { return null; } @Override public MapResult getMapResult(CollectionMapping collectionMapping) { // TODO Auto-generated method stub return null; } }