<?php

namespace Hydrators;

use Doctrine\ODM\MongoDB\DocumentManager;
use Doctrine\ODM\MongoDB\Mapping\ClassMetadata;
use Doctrine\ODM\MongoDB\Hydrator\HydratorInterface;
use Doctrine\ODM\MongoDB\Query\Query;
use Doctrine\ODM\MongoDB\UnitOfWork;

/**
 * THIS CLASS WAS GENERATED BY THE DOCTRINE ODM. DO NOT EDIT THIS FILE.
 */
class FOSOAuthServerBundleDocumentClientHydrator implements HydratorInterface
{
    private $dm;
    private $unitOfWork;
    private $class;

    public function __construct(DocumentManager $dm, UnitOfWork $uow, ClassMetadata $class)
    {
        $this->dm = $dm;
        $this->unitOfWork = $uow;
        $this->class = $class;
    }

    public function hydrate($document, $data, array $hints = array())
    {
        $hydratedData = array();

        /** @Field(type="string") */
        if (isset($data['randomId']) || (! empty($this->class->fieldMappings['randomId']['nullable']) && array_key_exists('randomId', $data))) {
            $value = $data['randomId'];
            if ($value !== null) {
                $typeIdentifier = $this->class->fieldMappings['randomId']['type'];
                $return = (string) $value;
            } else {
                $return = null;
            }
            $this->class->reflFields['randomId']->setValue($document, $return);
            $hydratedData['randomId'] = $return;
        }

        /** @Field(type="collection") */
        if (isset($data['redirectUris']) || (! empty($this->class->fieldMappings['redirectUris']['nullable']) && array_key_exists('redirectUris', $data))) {
            $value = $data['redirectUris'];
            if ($value !== null) {
                $typeIdentifier = $this->class->fieldMappings['redirectUris']['type'];
                $return = $value;
            } else {
                $return = null;
            }
            $this->class->reflFields['redirectUris']->setValue($document, $return);
            $hydratedData['redirectUris'] = $return;
        }

        /** @Field(type="string") */
        if (isset($data['secret']) || (! empty($this->class->fieldMappings['secret']['nullable']) && array_key_exists('secret', $data))) {
            $value = $data['secret'];
            if ($value !== null) {
                $typeIdentifier = $this->class->fieldMappings['secret']['type'];
                $return = (string) $value;
            } else {
                $return = null;
            }
            $this->class->reflFields['secret']->setValue($document, $return);
            $hydratedData['secret'] = $return;
        }

        /** @Field(type="collection") */
        if (isset($data['allowedGrantTypes']) || (! empty($this->class->fieldMappings['allowedGrantTypes']['nullable']) && array_key_exists('allowedGrantTypes', $data))) {
            $value = $data['allowedGrantTypes'];
            if ($value !== null) {
                $typeIdentifier = $this->class->fieldMappings['allowedGrantTypes']['type'];
                $return = $value;
            } else {
                $return = null;
            }
            $this->class->reflFields['allowedGrantTypes']->setValue($document, $return);
            $hydratedData['allowedGrantTypes'] = $return;
        }
        return $hydratedData;
    }
}