/** * Identify whether a PHPCR property is autocreated or not. * * @param ClassMetadata $class * @param string $fieldName * * @return boolean */ private function isAutocreatedProperty(ClassMetadata $class, $fieldName) { $field = $class->getField($fieldName); if ('jcr:uuid' === $field['property']) { // jackrabbit at least does not identify this as auto created // it is strictly speaking no property return true; } $ntm = $this->session->getWorkspace()->getNodeTypeManager(); $nodeType = $ntm->getNodeType($class->getNodeType()); $propertyDefinitions = $nodeType->getPropertyDefinitions(); foreach ($class->getMixins() as $mixinTypeName) { $nodeType = $ntm->getNodeType($mixinTypeName); $propertyDefinitions = array_merge($propertyDefinitions, $nodeType->getPropertyDefinitions()); } foreach ($propertyDefinitions as $property) { if ($class->mappings[$fieldName]['property'] === $property->getName() && $property->isAutoCreated()) { return true; } } return false; }
/** * @depends testMapFieldWithId * * @expectedException \Doctrine\ODM\PHPCR\Mapping\MappingException */ public function testGetFieldNonexisting(ClassMetadata $cm) { $cm->getField('nonexisting'); }