Ejemplo n.º 1
0
 /**
  * {@inheritdoc}
  */
 public function process(ContextInterface $context)
 {
     /** @var GetListContext $context */
     $documentBuilder = $this->documentBuilderFactory->createDocumentBuilder();
     try {
         if ($context->hasErrors()) {
             $documentBuilder->setErrorCollection($context->getErrors());
             // remove errors from the Context to avoid processing them by other processors
             $context->resetErrors();
         } elseif ($context->hasResult()) {
             $result = $context->getResult();
             if (empty($result)) {
                 $documentBuilder->setDataCollection($result);
             } else {
                 $documentBuilder->setDataCollection($result, $context->getMetadata());
             }
         }
         $context->setResult($documentBuilder->getDocument());
     } catch (\Exception $e) {
         $context->setResponseStatusCode(Response::HTTP_INTERNAL_SERVER_ERROR);
         $error = new Error();
         $error->setInnerException($e);
         $documentBuilder = $this->documentBuilderFactory->createDocumentBuilder();
         $documentBuilder->setErrorObject($error);
         $context->setResult($documentBuilder->getDocument());
     }
 }
 /**
  * {@inheritdoc}
  */
 public function process(ContextInterface $context)
 {
     /** @var GetContext $context */
     if ($context->hasResult()) {
         // data already retrieved
         return;
     }
     $query = $context->getQuery();
     if (!$query instanceof QueryBuilder) {
         // unsupported query
         return;
     }
     $config = $context->getConfig();
     if (null === $config) {
         // an entity configuration does not exist
         return;
     }
     $result = $this->entitySerializer->serialize($query, $config);
     if (empty($result)) {
         $result = null;
     } elseif (count($result) === 1) {
         $result = reset($result);
     } else {
         throw new \RuntimeException('The result must have one or zero items.');
     }
     $context->setResult($result);
     // data returned by the EntitySerializer are already normalized
     $context->skipGroup('normalize_data');
 }
Ejemplo n.º 3
0
 /**
  * {@inheritdoc}
  */
 public function process(ContextInterface $context)
 {
     /** @var MetadataContext $context */
     if ($context->hasResult()) {
         // metadata is already loaded
         return;
     }
     $entityClass = $context->getClassName();
     if (!$this->doctrineHelper->isManageableEntityClass($entityClass)) {
         // only manageable entities are supported
         return;
     }
     // filter excluded fields on this stage though there is another processor doing the same
     // it is done due to performance reasons
     $allowedFields = $this->getAllowedFields($context->getConfig());
     $classMetadata = $this->doctrineHelper->getEntityMetadataForClass($entityClass);
     $entityMetadata = $this->entityMetadataFactory->createEntityMetadata($classMetadata);
     $fields = $classMetadata->getFieldNames();
     foreach ($fields as $fieldName) {
         if (!isset($allowedFields[$fieldName])) {
             continue;
         }
         $entityMetadata->addField($this->entityMetadataFactory->createFieldMetadata($classMetadata, $fieldName));
     }
     $associations = $classMetadata->getAssociationNames();
     foreach ($associations as $associationName) {
         if (!isset($allowedFields[$associationName])) {
             continue;
         }
         $entityMetadata->addAssociation($this->entityMetadataFactory->createAssociationMetadata($classMetadata, $associationName));
     }
     $context->setResult($entityMetadata);
 }
Ejemplo n.º 4
0
 /**
  * {@inheritdoc}
  */
 public function process(ContextInterface $context)
 {
     if (!$context->hasResult()) {
         throw new NotFoundHttpException('Unsupported request.');
     } elseif (null === $context->getResult()) {
         throw new NotFoundHttpException('An entity with the requested identifier does not exist.');
     }
 }
Ejemplo n.º 5
0
 /**
  * {@inheritdoc}
  */
 public function process(ContextInterface $context)
 {
     if ($context->hasResult()) {
         // a definition is already built
         return;
     }
     $context->setResult(ConfigUtil::getInitialConfig());
 }
Ejemplo n.º 6
0
 /**
  * {@inheritdoc}
  */
 public function process(ContextInterface $context)
 {
     if (!$context->hasResult()) {
         // no result
         return;
     }
     $data = $context->getResult();
     if ($data instanceof Proxy && !$data->__isInitialized()) {
         $data->__load();
     }
 }
Ejemplo n.º 7
0
 /**
  * {@inheritdoc}
  */
 public function process(ContextInterface $context)
 {
     /** @var MetadataContext $context */
     if ($context->hasResult()) {
         // config is already set
         return;
     }
     $config = $this->configBag->getMetadata($context->getClassName(), $context->getVersion());
     if (!empty($config)) {
         $context->setResult($config);
     }
 }
Ejemplo n.º 8
0
 /**
  * {@inheritdoc}
  */
 public function process(ContextInterface $context)
 {
     /** @var ConfigContext $context */
     if ($context->hasResult()) {
         // config is already set
         return;
     }
     $config = $this->loadConfig($context->getClassName(), $context->getVersion());
     if (null !== $config) {
         $context->setResult($config);
     }
 }
Ejemplo n.º 9
0
 /**
  * {@inheritdoc}
  */
 public function process(ContextInterface $context)
 {
     if (!$context->hasResult()) {
         // no result
         return;
     }
     $data = $context->getResult();
     foreach ($data as $value) {
         if ($value instanceof Proxy && !$value->__isInitialized()) {
             $value->__load();
         }
     }
 }
Ejemplo n.º 10
0
 /**
  * {@inheritdoc}
  */
 public function process(ContextInterface $context)
 {
     /** @var GetListContext $context */
     if ($context->hasResult()) {
         // result data are already retrieved
         return;
     }
     $query = $context->getQuery();
     if ($query instanceof QueryBuilder) {
         $context->setResult($query->getQuery()->getResult());
     } elseif ($query instanceof Query) {
         $context->setResult($query->getResult());
     }
 }
 /**
  * {@inheritdoc}
  */
 public function process(ContextInterface $context)
 {
     /** @var MetadataContext $context */
     if (!$context->hasResult()) {
         // metadata is not loaded
         return;
     }
     $config = $context->getConfig();
     if (empty($config)) {
         // a configuration does not exist
         return;
     }
     $this->loadMetadataForRelatedEntities($context->getResult(), $config, $context);
 }
Ejemplo n.º 12
0
 /**
  * {@inheritdoc}
  */
 public function process(ContextInterface $context)
 {
     /** @var GetListContext $context */
     if (!$context->hasResult()) {
         $query = $context->getQuery();
         if (null === $query) {
             throw new NotFoundHttpException('Unsupported request.');
         } else {
             throw new NotFoundHttpException(sprintf('Unsupported query type: %s.', is_object($query) ? get_class($query) : gettype($query)));
         }
     } elseif (!is_array($context->getResult())) {
         throw new NotFoundHttpException('Getting a list of entities failed.');
     }
 }
Ejemplo n.º 13
0
 /**
  * {@inheritdoc}
  */
 public function process(ContextInterface $context)
 {
     /** @var GetContext $context */
     if (!$context->hasResult()) {
         // no result
         return;
     }
     $data = $context->getResult();
     if (empty($data)) {
         // nothing to do because of empty result
         return;
     }
     $config = $context->getConfig();
     $context->setResult($this->objectNormalizer->normalizeObject($data, $config));
 }
Ejemplo n.º 14
0
 /**
  * {@inheritdoc}
  */
 public function process(ContextInterface $context)
 {
     /** @var MetadataContext $context */
     if (!$context->hasResult()) {
         // metadata is not loaded
         return;
     }
     $config = $context->getConfig();
     if (empty($config)) {
         // a configuration does not exist
         return;
     }
     /** @var EntityMetadata $entityMetadata */
     $entityMetadata = $context->getResult();
     $this->normalizeMetadata($entityMetadata, $config);
 }
Ejemplo n.º 15
0
 /**
  * {@inheritdoc}
  */
 public function process(ContextInterface $context)
 {
     /** @var GetListContext $context */
     if (!$context->hasResult()) {
         // no result
         return;
     }
     $data = $context->getResult();
     if (empty($data)) {
         // nothing to do because of empty result
         return;
     }
     $config = $context->getConfig();
     $normalizedData = [];
     foreach ($data as $key => $value) {
         $normalizedData[$key] = $this->objectNormalizer->normalizeObject($value, $config);
     }
     $context->setResult($normalizedData);
 }
Ejemplo n.º 16
0
 /**
  * {@inheritdoc}
  */
 public function process(ContextInterface $context)
 {
     /** @var GetListContext $context */
     if ($context->hasResult()) {
         // result data are already retrieved
         return;
     }
     $query = $context->getQuery();
     if (!$query instanceof SearchQuery) {
         // unsupported query
         return;
     }
     $searchResult = $this->searchIndex->query($query);
     $context->setResult($searchResult->toArray());
     // set callback to be used to calculate total count
     $context->setTotalCountCallback(function () use($searchResult) {
         return $searchResult->getRecordsCount();
     });
 }
Ejemplo n.º 17
0
 /**
  * {@inheritdoc}
  */
 public function process(ContextInterface $context)
 {
     /** @var GetListContext $context */
     if ($context->hasResult()) {
         // data already retrieved
         return;
     }
     $query = $context->getQuery();
     if (!$query instanceof QueryBuilder) {
         // unsupported query
         return;
     }
     $config = $context->getConfig();
     if (null === $config) {
         // an entity configuration does not exist
         return;
     }
     $context->setResult($this->entitySerializer->serialize($query, $config));
     // data returned by the EntitySerializer are already normalized
     $context->skipGroup('normalize_data');
 }
Ejemplo n.º 18
0
 /**
  * {@inheritdoc}
  */
 public function process(ContextInterface $context)
 {
     /** @var NormalizeValueContext $context */
     if (!$context->hasRequirement()) {
         $context->setRequirement(self::REQUIREMENT);
     }
     if ($context->hasResult()) {
         $value = $context->getResult();
         if (null !== $value && is_string($value)) {
             $orderBy = [];
             $items = explode(RestRequest::ARRAY_DELIMITER, $value);
             foreach ($items as $item) {
                 $item = trim($item);
                 if (0 === strpos($item, '-')) {
                     $orderBy[substr($item, 1)] = Criteria::DESC;
                 } else {
                     $orderBy[$item] = Criteria::ASC;
                 }
             }
             $context->setResult($orderBy);
         }
     }
 }
Ejemplo n.º 19
0
 /**
  * {@inheritdoc}
  */
 public function process(ContextInterface $context)
 {
     /** @var MetadataContext $context */
     if ($context->hasResult()) {
         // metadata is already loaded
         return;
     }
     $entityClass = $context->getClassName();
     if (!$this->doctrineHelper->isManageableEntityClass($entityClass)) {
         // only manageable entities are supported
         return;
     }
     $classMetadata = $this->doctrineHelper->getEntityMetadataForClass($entityClass);
     $entityMetadata = $this->entityMetadataFactory->createEntityMetadata($classMetadata);
     $fields = $classMetadata->getFieldNames();
     foreach ($fields as $fieldName) {
         $entityMetadata->addField($this->entityMetadataFactory->createFieldMetadata($classMetadata, $fieldName));
     }
     $associations = $classMetadata->getAssociationNames();
     foreach ($associations as $associationName) {
         $entityMetadata->addAssociation($this->entityMetadataFactory->createAssociationMetadata($classMetadata, $associationName));
     }
     $context->setResult($entityMetadata);
 }