public function testRemoveBindingKeepsStoredBindings() { $discovery = $this->createDiscovery(); $discovery->addBindingType(new BindingType(Foo::clazz)); $discovery->addBinding($binding1 = new ResourceBinding('/path1', Foo::clazz)); $discovery->addBinding($binding2 = new ClassBinding(__CLASS__, Foo::clazz)); $discovery = $this->loadDiscoveryFromStorage($discovery); $discovery->removeBinding($binding1->getUuid()); $this->assertEquals(array($binding2), $discovery->getBindings()); $this->assertFalse($discovery->hasBinding($binding1->getUuid())); $this->assertTrue($discovery->hasBinding($binding2->getUuid())); }
/** * @expectedException \Puli\Discovery\Api\Binding\Initializer\NotInitializedException */ public function testGetResourcesFailsIfNotSet() { $binding = new ResourceBinding('/path/*', Foo::clazz, array(), 'language'); $binding->getResources(); }
private function bindingToMapping(ResourceBinding $binding) { return new AssetMapping(substr($binding->getQuery(), 0, -8), $binding->getParameterValue(DiscoveryUrlGenerator::SERVER_PARAMETER), $binding->getParameterValue(DiscoveryUrlGenerator::PATH_PARAMETER), $binding->getUuid()); }
/** * @param Args $args * @param ResourceBinding $bindingToUpdate * * @return ResourceBinding */ private function getUpdatedResourceBinding(Args $args, ResourceBinding $bindingToUpdate) { $query = $bindingToUpdate->getQuery(); $typeName = $bindingToUpdate->getTypeName(); $language = $bindingToUpdate->getLanguage(); $bindingParams = $bindingToUpdate->getParameterValues(); if ($args->isOptionSet('query')) { $query = $args->getOption('query'); } if ($args->isOptionSet('type')) { $typeName = $args->getOption('type'); } if ($args->isOptionSet('language')) { $language = $args->getOption('language'); } $this->parseParams($args, $bindingParams); $this->unsetParams($args, $bindingParams); return new ResourceBinding(Path::makeAbsolute($query, $this->currentPath), $typeName, $bindingParams, $language, $bindingToUpdate->getUuid()); }
public function testRemoveBindingTypesRemovesBindings() { $discovery = $this->createDiscovery(); $discovery->addBindingType(new BindingType(Foo::clazz)); $discovery->addBindingType(new BindingType(Bar::clazz)); $discovery->addBinding($binding1 = new ResourceBinding('/path1', Foo::clazz)); $discovery->addBinding($binding2 = new ClassBinding(__CLASS__, Bar::clazz)); $discovery->removeBindingTypes(); $discovery = $this->loadDiscoveryFromStorage($discovery); $this->assertCount(0, $discovery->getBindings()); $this->assertFalse($discovery->hasBinding($binding1->getUuid())); $this->assertFalse($discovery->hasBinding($binding2->getUuid())); }
private function generateUrlForBinding(ResourceBinding $binding, $repositoryPath) { $serverName = $binding->getParameterValue(self::SERVER_PARAMETER); if (!isset($this->urlFormats[$serverName])) { throw new CannotGenerateUrlException(sprintf('The server "%s" mapped for path "%s" does not exist.', $serverName, $repositoryPath)); } $repoBasePath = Glob::getStaticPrefix($binding->getQuery()); $serverBasePath = trim($binding->getParameterValue(self::PATH_PARAMETER), '/'); // The server path is generated by replacing the base repository path // (= the path of the binding) by the stored server base path in the // repository path of the resource. // // Example: // // resource path: /acme/blog/public/css/style.css // binding path: /acme/blog/public{,/**/*} // repo base path: /acme/blog/public // server base path: /blog // // final server path: /blog/css/style.css $serverPath = substr_replace($repositoryPath, $serverBasePath, 0, strlen($repoBasePath)); // The server path is inserted into the "%s" parameter of the URL format return sprintf($this->urlFormats[$serverName], ltrim($serverPath, '/')); }
public function testHasBinding() { $type = new BindingType(Foo::clazz); $binding = new ResourceBinding('/file1', Foo::clazz); $discovery = $this->createLoadedDiscovery(array($type), array($binding)); $this->assertTrue($discovery->hasBinding($binding->getUuid())); $this->assertFalse($discovery->hasBinding(Uuid::uuid4())); }