/**
  * {@inheritdoc}
  */
 public function parse(Request $request)
 {
     $resource = $request->getResource();
     $classMetadata = $this->classMetadataFactory->getMetadataFor($resource->getEntityClass(), $resource->getNormalizationGroups(), $resource->getDenormalizationGroups(), $resource->getValidationGroups());
     $request->addHeader('Content-Type', 'application/json');
     $request->setDataMode(Request::DATA_MODE_RAW);
     $rawModeData = [];
     foreach ($classMetadata->getAttributes() as $attributeMetadata) {
         if (!$classMetadata->getReflectionClass()->hasProperty($attributeMetadata->getName())) {
             // Attribute is not a property: ignore it
             continue;
         }
         $groups = $this->reader->getPropertyAnnotation($classMetadata->getReflectionClass()->getProperty($attributeMetadata->getName()), 'Symfony\\Component\\Serializer\\Annotation\\Groups');
         if ($attributeMetadata->isIdentifier() || !$attributeMetadata->isReadable() || !count(array_intersect($groups ? $groups->getGroups() : [], $resource->getDenormalizationGroups() ?: []))) {
             continue;
         }
         $rawModeData[$attributeMetadata->getName()] = $this->guesser->guess($attributeMetadata);
     }
     $request->setRawModeData($rawModeData);
 }
 /**
  * {@inheritdoc}
  */
 public function parse(Request $request)
 {
     $shortName = Inflector::camelize($request->getResource()->getShortName());
     switch ($request->getMethod()) {
         case 'POST':
             $request->setName(sprintf('Create %s', $shortName));
             break;
         case 'PUT':
         case 'PATCH':
             $request->setName(sprintf('Update %s', $shortName));
             break;
         case 'DELETE':
             $request->setName(sprintf('Delete %s', $shortName));
             break;
         case 'GET':
             if (!preg_match(UriRequestParser::PATTERN, $request->getUrl())) {
                 $shortName = Inflector::pluralize($shortName) . ' list';
             }
             $request->setName(sprintf('Get %s', $shortName));
             break;
     }
 }