private function encode(EventAdapterInterface $ea, $object, $config)
 {
     $om = $ea->getObjectManager();
     $meta = $om->getClassMetadata(get_class($object));
     $uow = $om->getUnitOfWork();
     foreach ($config['encode'] as $field => $options) {
         $value = $meta->getReflectionProperty($field)->getValue($object);
         $method = $options['type'];
         $encoded = $method($options['secret'] . $value);
         $meta->getReflectionProperty($field)->setValue($object, $encoded);
     }
     // recalculate changeset
     $ea->recomputeSingleObjectChangeSet($uow, $meta, $object);
 }
 /**
  * {@inheritdoc}
  */
 protected function releaseTreeLocks(ObjectManager $om, AdapterInterface $ea)
 {
     $uow = $om->getUnitOfWork();
     foreach ($this->rootsOfTreesWhichNeedsLocking as $oid => $root) {
         $meta = $om->getClassMetadata(get_class($root));
         $config = $this->listener->getConfiguration($om, $meta->name);
         $lockTimeProp = $meta->getReflectionProperty($config['lock_time']);
         $lockTimeProp->setAccessible(true);
         $lockTimeValue = null;
         $lockTimeProp->setValue($root, $lockTimeValue);
         $changes = array($config['lock_time'] => array(null, null));
         $ea->recomputeSingleObjectChangeSet($uow, $meta, $root);
         unset($this->rootsOfTreesWhichNeedsLocking[$oid]);
     }
 }
 /**
  * @param AdapterInterface $ea
  * @param ObjectManager $om
  * @param UnitOfWork $uow
  * @param object $entity
  * @param string $method
  */
 protected function handle(AdapterInterface $ea, ObjectManager $om, UnitOfWork $uow, $entity, $method)
 {
     /**
      * @var \Doctrine\ORM\EntityManager $om
      */
     $meta = $om->getClassMetadata(get_class($entity));
     $config = $this->getConfiguration($om, $meta->name);
     if (isset($config[self::TRANSFORMABLE]) && $config[self::TRANSFORMABLE]) {
         foreach ($config[self::TRANSFORMABLE] as $column) {
             $this->handleField($entity, $method, $column, $meta);
         }
         $ea->recomputeSingleObjectChangeSet($uow, $meta, $entity);
     }
 }