/**
  * @param Request $request
  * @param array   $criteria
  * @return object
  * @throws NotFoundHttpException
  */
 public function findOr404(Request $request, array $criteria = array())
 {
     if ($request->get('slug')) {
         $default = array('slug' => $request->get('slug'));
     } elseif ($request->get('id')) {
         $default = array('id' => $request->get('id'));
     } else {
         $default = array();
     }
     $criteria = array_merge($default, $criteria);
     if (!($resource = $this->resourceResolver->getResource($this->getRepository(), 'findOneBy', array($this->config->getCriteria($criteria))))) {
         throw new NotFoundHttpException(sprintf('Requested %s does not exist with these criteria: %s.', $this->config->getResourceName(), json_encode($this->config->getCriteria($criteria))));
     }
     return $resource;
 }