<?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 FOSOAuthServerBundleDocumentRefreshTokenHydrator 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['token']) || (! empty($this->class->fieldMappings['token']['nullable']) && array_key_exists('token', $data))) {
            $value = $data['token'];
            if ($value !== null) {
                $typeIdentifier = $this->class->fieldMappings['token']['type'];
                $return = (string) $value;
            } else {
                $return = null;
            }
            $this->class->reflFields['token']->setValue($document, $return);
            $hydratedData['token'] = $return;
        }

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

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