dataObjectProcessor = $dataObjectProcessor; $this->dataObjectHelper = $dataObjectHelper; $this->typeResolver = $typeResolver; $this->mapperPool = $mapperPool; } /** * {@inheritdoc} */ public function extract($entity) { $entityType = $this->typeResolver->resolve($entity); $data = $this->dataObjectProcessor->buildOutputDataArray($entity, $entityType); $mapper = $this->mapperPool->getMapper($entityType); return $mapper->entityToDatabase($entityType, $data); } /** * {@inheritdoc} */ public function hydrate($entity, array $data) { $entityType = $this->typeResolver->resolve($entity); $mapper = $this->mapperPool->getMapper($entityType); $data = $mapper->databaseToEntity( $entityType, array_merge($this->extract($entity), $data) ); $this->dataObjectHelper->populateWithArray($entity, $data, $entityType); return $entity; } }