/** * @param ContainerInterface|\Zend\ServiceManager\ServiceLocatorInterface $container * @return Plugin\Hal */ public function __invoke(ContainerInterface $container) { $container = $container instanceof AbstractPluginManager ? $container->getServiceLocator() : $container; /* @var $rendererOptions \ZF\Hal\RendererOptions */ $rendererOptions = $container->get('ZF\\Hal\\RendererOptions'); $metadataMap = $container->get('ZF\\Hal\\MetadataMap'); /** @var HydratorPluginManager $hydrators */ $hydrators = $metadataMap->getHydratorManager(); $helper = new Plugin\Hal($hydrators); $helper->setMetadataMap($metadataMap); $linkUrlBuilder = $container->get(Link\LinkUrlBuilder::class); $helper->setLinkUrlBuilder($linkUrlBuilder); $linkCollectionExtractor = $container->get(LinkCollectionExtractor::class); $helper->setLinkCollectionExtractor($linkCollectionExtractor); $defaultHydrator = $rendererOptions->getDefaultHydrator(); if ($defaultHydrator) { if (!$hydrators->has($defaultHydrator)) { throw new Exception\DomainException(sprintf('Cannot locate default hydrator by name "%s" via the HydratorManager', $defaultHydrator)); } /** @var HydratorInterface $hydrator */ $hydrator = $hydrators->get($defaultHydrator); $helper->setDefaultHydrator($hydrator); } $helper->setRenderEmbeddedEntities($rendererOptions->getRenderEmbeddedEntities()); $helper->setRenderCollections($rendererOptions->getRenderEmbeddedCollections()); $hydratorMap = $rendererOptions->getHydrators(); foreach ($hydratorMap as $class => $hydratorServiceName) { $helper->addHydrator($class, $hydratorServiceName); } return $helper; }
/** * @param ServiceLocatorInterface $serviceLocator * @return Plugin\Hal */ public function createService(ServiceLocatorInterface $serviceLocator) { $services = $serviceLocator->getServiceLocator(); $halConfig = $services->get('ZF\\Hal\\HalConfig'); /* @var $rendererOptions \ZF\Hal\RendererOptions */ $rendererOptions = $services->get('ZF\\Hal\\RendererOptions'); $metadataMap = $services->get('ZF\\Hal\\MetadataMap'); $hydrators = $metadataMap->getHydratorManager(); $serverUrlHelper = $serviceLocator->get('ServerUrl'); if (isset($halConfig['options']['use_proxy'])) { $serverUrlHelper->setUseProxy($halConfig['options']['use_proxy']); } $urlHelper = $serviceLocator->get('Url'); $helper = new Plugin\Hal($hydrators); $helper->setMetadataMap($metadataMap)->setServerUrlHelper($serverUrlHelper)->setUrlHelper($urlHelper); $linkExtractor = new LinkExtractor($serverUrlHelper, $urlHelper); $linkCollectionExtractor = new LinkCollectionExtractor($linkExtractor); $helper->setLinkCollectionExtractor($linkCollectionExtractor); $defaultHydrator = $rendererOptions->getDefaultHydrator(); if ($defaultHydrator) { if (!$hydrators->has($defaultHydrator)) { throw new Exception\DomainException(sprintf('Cannot locate default hydrator by name "%s" via the HydratorManager', $defaultHydrator)); } $hydrator = $hydrators->get($defaultHydrator); $helper->setDefaultHydrator($hydrator); } $helper->setRenderEmbeddedEntities($rendererOptions->getRenderEmbeddedEntities()); $helper->setRenderCollections($rendererOptions->getRenderEmbeddedCollections()); $helper->setUseResourceLinksInsteadOfEmbeddedEntityLink($rendererOptions->getUseResourceLinksInsteadOfEmbeddedEntityLink()); $hydratorMap = $rendererOptions->getHydrators(); foreach ($hydratorMap as $class => $hydratorServiceName) { $helper->addHydrator($class, $hydratorServiceName); } return $helper; }
public function setUp() { $this->controller = $controller = new RestController(); $this->router = $router = new SimpleRouteStack(); $route = new Segment('/resource[/[:id]]'); $router->addRoute('resource', $route); $this->event = $event = new MvcEvent(); $event->setRouter($router); $event->setRouteMatch(new RouteMatch([])); $controller->setEvent($event); $controller->setRoute('resource'); $pluginManager = new PluginManager(); $pluginManager->setService('bodyParams', new BodyParams()); $controller->setPluginManager($pluginManager); $urlHelper = new UrlHelper(); $urlHelper->setRouter($this->router); $serverUrlHelper = new ServerUrlHelper(); $serverUrlHelper->setScheme('http'); $serverUrlHelper->setHost('localhost.localdomain'); $linksHelper = new HalHelper(); $linksHelper->setUrlHelper($urlHelper); $linksHelper->setServerUrlHelper($serverUrlHelper); $linkExtractor = new LinkExtractor($serverUrlHelper, $urlHelper); $linkCollectionExtractor = new LinkCollectionExtractor($linkExtractor); $linksHelper->setLinkCollectionExtractor($linkCollectionExtractor); $pluginManager->setService('Hal', $linksHelper); $linksHelper->setController($controller); $this->resource = $resource = new Resource(); $controller->setResource($resource); }
public function testFromLinkCollectionShouldUseLinkCollectionExtractor() { $linkCollection = new LinkCollection(); $extraction = true; $linkCollectionExtractor = $this->prophesize(LinkCollectionExtractor::class); $linkCollectionExtractor->extract($linkCollection)->willReturn($extraction); $this->plugin->setLinkCollectionExtractor($linkCollectionExtractor->reveal()); $result = $this->plugin->fromLinkCollection($linkCollection); $this->assertEquals($extraction, $result); }
public function testFromLinkCollectionShouldUseLinkCollectionExtractor() { $extraction = true; $linkCollectionExtractor = $this->getMockBuilder('ZF\\Hal\\Extractor\\LinkCollectionExtractor')->disableOriginalConstructor()->getMock(); $linkCollectionExtractor->expects($this->once())->method('extract')->will($this->returnValue($extraction)); $this->plugin->setLinkCollectionExtractor($linkCollectionExtractor); $linkCollection = new LinkCollection(); $result = $this->plugin->fromLinkCollection($linkCollection); $this->assertEquals($extraction, $result); }
/** * @param ServiceLocatorInterface $serviceLocator * @return Plugin\Hal */ public function createService(ServiceLocatorInterface $serviceLocator) { $services = $serviceLocator->getServiceLocator(); $config = $services->get('Config'); $metadataMap = $services->get('ZF\\Hal\\MetadataMap'); $hydrators = $metadataMap->getHydratorManager(); $serverUrlHelper = $serviceLocator->get('ServerUrl'); if (isset($config['zf-hal']['options']['use_proxy'])) { $serverUrlHelper->setUseProxy($config['zf-hal']['options']['use_proxy']); } $urlHelper = $serviceLocator->get('Url'); $helper = new Plugin\Hal($hydrators); $helper->setMetadataMap($metadataMap)->setServerUrlHelper($serverUrlHelper)->setUrlHelper($urlHelper); $linkExtractor = new LinkExtractor($serverUrlHelper, $urlHelper); $linkCollectionExtractor = new LinkCollectionExtractor($linkExtractor); $helper->setLinkCollectionExtractor($linkCollectionExtractor); if (isset($config['zf-hal']) && isset($config['zf-hal']['renderer'])) { $config = $config['zf-hal']['renderer']; if (isset($config['default_hydrator'])) { $hydratorServiceName = $config['default_hydrator']; if (!$hydrators->has($hydratorServiceName)) { throw new Exception\DomainException(sprintf('Cannot locate default hydrator by name "%s" via the HydratorManager', $hydratorServiceName)); } $hydrator = $hydrators->get($hydratorServiceName); $helper->setDefaultHydrator($hydrator); } if (isset($config['render_embedded_resources'])) { $helper->setRenderEmbeddedEntities($config['render_embedded_resources']); } if (isset($config['render_embedded_entities'])) { $helper->setRenderEmbeddedEntities($config['render_embedded_entities']); } if (isset($config['render_collections'])) { $helper->setRenderCollections($config['render_collections']); } if (isset($config['hydrators']) && is_array($config['hydrators'])) { $hydratorMap = $config['hydrators']; foreach ($hydratorMap as $class => $hydratorServiceName) { $helper->addHydrator($class, $hydratorServiceName); } } } return $helper; }
public function setUpHelpers() { if (isset($this->helpers)) { return; } $this->setupRouter(); $urlHelper = new UrlHelper(); $urlHelper->setRouter($this->router); $serverUrlHelper = new ServerUrlHelper(); $serverUrlHelper->setScheme('http'); $serverUrlHelper->setHost('localhost.localdomain'); $this->linksHelper = $linksHelper = new HalHelper(); $linksHelper->setUrlHelper($urlHelper); $linksHelper->setServerUrlHelper($serverUrlHelper); $linkExtractor = new LinkExtractor($serverUrlHelper, $urlHelper); $linkCollectionExtractor = new LinkCollectionExtractor($linkExtractor); $linksHelper->setLinkCollectionExtractor($linkCollectionExtractor); $this->helpers = $helpers = new HelperPluginManager(); $helpers->setService('url', $urlHelper); $helpers->setService('serverUrl', $serverUrlHelper); $helpers->setService('hal', $linksHelper); }
public function setupHelpers() { if (!$this->router) { $this->setupRouter(); } $urlHelper = new UrlHelper(); $urlHelper->setRouter($this->router); $serverUrlHelper = new ServerUrlHelper(); $serverUrlHelper->setScheme('http'); $serverUrlHelper->setHost('localhost.localdomain'); $linkUrlBuilder = new LinkUrlBuilder($serverUrlHelper, $urlHelper); $linksHelper = new HalHelper(); $linksHelper->setLinkUrlBuilder($linkUrlBuilder); $linkExtractor = new LinkExtractor($linkUrlBuilder); $linkCollectionExtractor = new LinkCollectionExtractor($linkExtractor); $linksHelper->setLinkCollectionExtractor($linkCollectionExtractor); $this->helpers = $helpers = new HelperPluginManager(new ServiceManager()); $helpers->setService('url', $urlHelper); $helpers->setService('serverUrl', $serverUrlHelper); $helpers->setService('Hal', $linksHelper); $this->plugins = $plugins = new ControllerPluginManager(new ServiceManager()); $plugins->setService('Hal', $linksHelper); }