/**
  * {@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());
     }
 }
Esempio n. 2
0
 /**
  * {@inheritdoc}
  */
 public function process(ContextInterface $context)
 {
     /** @var Context $context */
     $entityClass = $context->getClassName();
     if (!$this->doctrineHelper->isManageableEntityClass($entityClass)) {
         // only manageable entities are supported
         return;
     }
     $filters = $context->getFilters();
     if ($filters->has(self::FILTER_KEY)) {
         // filters have been already set
         return;
     }
     $fieldFilter = new FieldsFilter(DataType::STRING, self::FILTER_KEY_DESCRIPTION);
     $fieldFilter->setArrayAllowed(true);
     $filters->add(sprintf(self::FILTER_KEY_TEMPLATE, $this->entityClassTransformer->transform($entityClass)), $fieldFilter);
     $associations = $context->getMetadata()->getAssociations();
     if (!$associations) {
         // no associations - no sense to add associations fields filters
         return;
     }
     $associationKeys = array_keys($associations);
     foreach ($associationKeys as $association) {
         $filters->add(sprintf(self::FILTER_KEY_TEMPLATE, $association), $fieldFilter);
     }
 }