/**
  * {@inheritdoc}
  */
 public function resolveComponentData(ResolveComponentModelIdentifier $resolve)
 {
     $model = $resolve->getModel();
     $identifier = $resolve->getIdentifier();
     $data = null;
     if (is_object($model)) {
         $data = $model;
         $modelClass = get_class($model);
         if (!method_exists($model, 'getId')) {
             throw new ResolveComponentDataException('Model must have a getId method');
         }
         $identifier = $model->getId();
         $model = $modelClass;
     }
     $model = ClassUtils::getRealClass($model);
     return new ResolvedComponentData($model, $identifier, $data);
 }
 /**
  * {@inheritdoc}
  */
 public function resolveComponentData(ResolveComponentModelIdentifier $resolve)
 {
     $model = $resolve->getModel();
     $identifier = $resolve->getIdentifier();
     $data = null;
     if (is_object($model)) {
         $data = $model;
         $modelClass = get_class($model);
         $metadata = $this->getClassMetadata($modelClass);
         // if object is linked to doctrine
         if (null !== $metadata) {
             $fields = $metadata->getIdentifier();
             if (!is_array($fields)) {
                 $fields = array($fields);
             }
             $many = count($fields) > 1;
             $identifier = array();
             foreach ($fields as $field) {
                 $getMethod = sprintf('get%s', ucfirst($field));
                 $value = (string) $model->{$getMethod}();
                 //Do not use it: https://github.com/stephpy/TimelineBundle/issues/59
                 //$value = (string) $metadata->reflFields[$field]->getValue($model);
                 if (empty($value)) {
                     throw new ResolveComponentDataException(sprintf('Field "%s" of model "%s" return an empty result, model has to be persisted.', $field, $modelClass));
                 }
                 $identifier[$field] = $value;
             }
             if (!$many) {
                 $identifier = current($identifier);
             }
             $model = $metadata->getName();
         } else {
             if (!method_exists($model, 'getId')) {
                 throw new ResolveComponentDataException('Model must have a getId method.');
             }
             $identifier = $model->getId();
             $model = $modelClass;
         }
     }
     return new ResolvedComponentData($model, $identifier, $data);
 }
 public function testIdentifierCanBeStringZero()
 {
     $this->when($object = new TestedModel('user', '0'))->string($object->getIdentifier())->isEqualTo('0');
 }