public function testCachedMetadataFromFactory() { $cache = new \Doctrine\Common\Cache\ArrayCache(); $this->factory = new ClassMetadataFactory($this->loader, $cache); $metadata = $this->factory->getClassMetadata('Tests\\Dummy\\Classes\\AnnotatedClass'); $this->assertTrue($cache->contains(ltrim('Tests\\Dummy\\Classes\\AnnotatedClass', '\\'))); //Get new Factory to retrieve from cache $this->factory = new ClassMetadataFactory($this->loader, $cache); $metadataCached = $this->factory->getClassMetadata('Tests\\Dummy\\Classes\\AnnotatedClass'); $this->assertEquals($metadata, $metadataCached); }
/** * Parses a class. * * @param ResourceInterface $resource * @param string $entityClass * @param string $io * * @return array */ private function parseClass(ResourceInterface $resource, $entityClass, $io) { $classMetadata = $this->classMetadataFactory->getMetadataFor($entityClass, $resource->getNormalizationGroups(), $resource->getDenormalizationGroups(), $resource->getValidationGroups()); $data = array(); foreach ($classMetadata->getAttributes() as $attributeMetadata) { if (!$attributeMetadata->isIdentifier() && $attributeMetadata->isReadable() && self::OUT_PREFIX === $io || $attributeMetadata->isWritable() && self::IN_PREFIX === $io) { $data[$attributeMetadata->getName()] = $this->parseAttribute($resource, $attributeMetadata, $io); } } return $data; }
/** * Pre-build the ClassMetadata for all the registered root classes */ public function buildClassMetadatas() { foreach ($this->rootClasses as $class) { $this->classMetadataFactory->getClassMetadata($class); } }