예제 #1
0
 private function importResource(array $data, LoadingCriteriaInterface $loadingCriteria, DelegatingLoader $delegatingLoader, Configuration $configuration)
 {
     $defaultResourceDir = $configuration->getDefaultClassMetadataResourceDir();
     if (isset($data['imports']['resources'])) {
         foreach ($data['imports']['resources'] as $resourceSettings) {
             $otherResourcePath = null;
             if (isset($resourceSettings['path'])) {
                 $otherResourcePath = $resourceSettings['path'];
                 if ('.' === ($otherResourceDir = dirname($otherResourcePath))) {
                     $otherResourcePath = $defaultResourceDir . '/' . $otherResourcePath;
                 }
             }
             $otherResourceType = null;
             if (isset($resourceSettings['type'])) {
                 $otherResourceType = $resourceSettings['type'];
             }
             $otherResourceClass = null;
             if (isset($resourceSettings['class'])) {
                 $otherResourceClass = $resourceSettings['class'];
             }
             $otherResourceMethod = null;
             if (isset($resourceSettings['method'])) {
                 $otherResourceMethod = $resourceSettings['method'];
             }
             $loadingCriteria = LoadingCriteria::create($otherResourcePath, $otherResourceType, $otherResourceClass, $otherResourceMethod);
             $delegatedLoader = $delegatingLoader->getDelegatedLoader($loadingCriteria);
             $othersData = $delegatedLoader->getData($loadingCriteria, $configuration, $delegatingLoader);
             $data = array_merge_recursive($othersData, $data);
         }
     }
     return $data;
 }
예제 #2
0
 public function __construct(Configuration $configuration, $parent)
 {
     $cacheConfig = $configuration->getResultCacheConfig();
     $this->enabled = $cacheConfig->isEnabled();
     $this->lifeTime = $cacheConfig->getLifeTime();
     $this->cache = $cacheConfig->getCache();
     $this->shared = $cacheConfig->isShared();
     $this->parent = $parent;
 }
예제 #3
0
 public static function createFromConfiguration(Configuration $configuration, ObjectKey $objectKey)
 {
     $key = $objectKey->getKey();
     $instance = (new static())->setResourcePath($configuration->getClassMetadataResource($key))->setResourceType($configuration->getClassMetadataResourceType($key))->setResourceClass($objectKey->getClass());
     $resourceMethod = $configuration->getClassMetadataProviderMethod($key);
     if (isset($resourceMethod)) {
         $instance->setResourceMethod($resourceMethod);
     }
     return $instance;
 }
예제 #4
0
 /**
  * @test
  */
 public function loadClassMetadataValidateCalls()
 {
     $data = array('testData' => time());
     $expectedResult = 'testResult' . time();
     $loader = $this->getMockBuilder('Kassko\\DataMapper\\ClassMetadataLoader\\AbstractLoader')->setMethods(array('doGetData', 'doLoadClassMetadata'))->getMockForAbstractClass();
     $loader->expects($this->once())->method('doGetData')->with($this->loadingCriteriaMock)->willReturn($data);
     $loader->expects($this->once())->method('doLoadClassMetadata')->with($this->classMetadataMock, $data)->willReturn($expectedResult);
     $this->configurationMock->expects($this->once())->method('getDefaultClassMetadataResourceDir')->willReturn('/tmp');
     $delegatingLoaderMock = $this->getMockBuilder('\\Kassko\\DataMapper\\ClassMetadataLoader\\DelegatingLoader')->disableOriginalConstructor()->getMock();
     $result = $loader->loadClassMetadata($this->classMetadataMock, $this->loadingCriteriaMock, $this->configurationMock, $delegatingLoaderMock);
     $this->assertEquals($expectedResult, $result);
 }
예제 #5
0
 public function getClassMetadataDir($objectName)
 {
     foreach ($this->runtimeConfigurations as $runtimeConfiguration) {
         if (!empty($value = $runtimeConfiguration->getClassMetadataDir($objectName))) {
             return $value;
         }
     }
     return parent::getClassMetadataDir($objectName);
 }