/** * The main method that creates new instances in a separate context. * * @param \AppserverIo\Psr\Application\ApplicationInterface $application The application instance to register the class loader with * @param \AppserverIo\Appserver\Core\Api\Node\ManagerNodeInterface $managerConfiguration The manager configuration * * @return void */ public static function visit(ApplicationInterface $application, ManagerNodeInterface $managerConfiguration) { // initialize the stackable storage $data = new StackableStorage(); $servlets = new StackableStorage(); $errorPages = new StackableStorage(); $initParameters = new StackableStorage(); $servletMappings = new GenericStackable(); $securedUrlConfigs = new StackableStorage(); $sessionParameters = new StackableStorage(); // initialize the default settings for the stateful session beans $servletManagerSettings = new StandardManagerSettings(); $servletManagerSettings->mergeWithParams($managerConfiguration->getParamsAsArray()); // initialize the servlet locator $servletLocator = new ServletLocator(); // initialize the servlet manager $servletManager = new ServletManager(); $servletManager->injectData($data); $servletManager->injectServlets($servlets); $servletManager->injectErrorPages($errorPages); $servletManager->injectApplication($application); $servletManager->injectInitParameters($initParameters); $servletManager->injectResourceLocator($servletLocator); $servletManager->injectServletMappings($servletMappings); $servletManager->injectSecuredUrlConfigs($securedUrlConfigs); $servletManager->injectSessionParameters($sessionParameters); $servletManager->injectManagerSettings($servletManagerSettings); $servletManager->injectDirectories($managerConfiguration->getDirectories()); // create the naming context and add it the manager $contextFactory = $managerConfiguration->getContextFactory(); $contextFactory::visit($servletManager); // attach the instance $application->addManager($servletManager, $managerConfiguration); }
/** * The main method that creates new instances in a separate context. * * @param \AppserverIo\Psr\Application\ApplicationInterface $application The application instance to register the class loader with * @param \AppserverIo\Appserver\Core\Api\Node\ManagerNodeInterface $managerConfiguration The manager configuration * * @return void */ public static function visit(ApplicationInterface $application, ManagerNodeInterface $managerConfiguration) { // create the initial context instance $initialContext = new NamingContext(); $initialContext->injectApplication($application); // initialize the stackable storage $data = new StackableStorage(); $servlets = new StackableStorage(); $initParameters = new StackableStorage(); $servletMappings = new GenericStackable(); $securedUrlConfigs = new StackableStorage(); $sessionParameters = new StackableStorage(); // initialize the servlet locator $servletLocator = new ServletLocator(); // initialize the servlet manager $servletManager = new ServletManager(); $servletManager->injectData($data); $servletManager->injectServlets($servlets); $servletManager->injectApplication($application); $servletManager->injectInitialContext($initialContext); $servletManager->injectInitParameters($initParameters); $servletManager->injectResourceLocator($servletLocator); $servletManager->injectServletMappings($servletMappings); $servletManager->injectSecuredUrlConfigs($securedUrlConfigs); $servletManager->injectSessionParameters($sessionParameters); $servletManager->injectDirectories($managerConfiguration->getDirectories()); // attach the instance $application->addManager($servletManager, $managerConfiguration); }
/** * Test the getNamingDirectory() method. * * @return void */ public function testGetNamingDirectory() { // mock the application $application = $this->getMockBuilder('AppserverIo\\Psr\\Application\\ApplicationInterface')->setMethods(get_class_methods('AppserverIo\\Psr\\Application\\ApplicationInterface'))->getMock(); // create a real manager instance -> this is a \Stackable $servletManager = new ServletManager(); $servletManager->injectApplication($application); // initialize the controller with mocked methods $controller = $this->getMock('AppserverIo\\Routlt\\ControllerServlet', array('getServletContext')); // mock the methods $controller->expects($this->once())->method('getServletContext')->will($this->returnValue($servletManager)); // check the session manager instance $this->assertEquals($application, $controller->getNamingDirectory()); }