protected function deployDatasources()
    {

        // load the container
        $container = $this->getContainer();

        // load the container and check if we actually have datasource files to work with
        if ($datasourceFiles = $this->getDatasourceFiles()) {
            // load the naming directory instance
            $namingDirectory = $container->getNamingDirectory();

            // create a subdirectory for the container's datasoruces
            $namingDirectory->createSubdirectory(sprintf('php:env/%s/ds', $this->getContainer()->getName()));

            // iterate through all provisioning files (*-ds.xml), validate them and attach them to the configuration
            /** @var \AppserverIo\Appserver\Core\Api\ConfigurationService $configurationService */
            $configurationService = $this->getConfigurationService();
            foreach ($datasourceFiles as $datasourceFile) {
                try {
                    // explode the filename, context name and webapp path
                    list ($filename, $webappPath, $contextName) = $datasourceFile;

                    // validate the file, but skip it if validation fails
                    $configurationService->validateFile($filename);

                    // load the system properties
                    $systemProperties = $this->getDatasourceService()->getSystemProperties($container->getContainerNode());

                    // append the application specific properties
                    $systemProperties->add(SystemPropertyKeys::WEBAPP, $webappPath);
                    $systemProperties->add(SystemPropertyKeys::WEBAPP_NAME, $contextName);

                    // load the datasources from the file and replace the properties
                    $datasourcesNode = new DatasourcesNode();
                    $datasourcesNode->initFromFile($filename);
                    $datasourcesNode->replaceProperties($systemProperties);

                    // store the datasource in the system configuration
                    /** @var \AppserverIo\Description\Api\Node\DatasourceNode $datasourceNode */
                    foreach ($datasourcesNode->getDatasources() as $datasourceNode) {
                        // add the datasource to the system configuration
                        $this->getDatasourceService()->persist($datasourceNode);

                        // bind the datasource to the naming directory
                        $namingDirectory->bind(sprintf('php:env/%s/ds/%s', $container->getName(), $datasourceNode->getName()), $datasourceNode);

                        // log a message that the datasource has been deployed
                        $this->getInitialContext()->getSystemLogger()->debug(
                            sprintf('Successfully deployed datasource %s', $datasourceNode->getName())
                        );
                    }

                // log a message and continue with the next datasource node
                } catch (\Exception $e) {
                    // load the logger and log the XML validation errors
                    $systemLogger = $this->getInitialContext()->getSystemLogger();
                    $systemLogger->error($e->__toString());

                    // additionally log a message that DS will be missing
                    $systemLogger->critical(
                        sprintf('Will skip reading configuration in %s, datasources might be missing.', $filename)
                    );
                }
            }
        }
    }
protected function deployDatasources()
    {

        // load the container
        $container = $this->getContainer();

        // load the container and check if we actually have datasource files to work with
        if ($datasourceFiles = $this->getDatasourceFiles()) {
            // load the naming directory instance
            $namingDirectory = $container->getNamingDirectory();

            // create a subdirectory for the container's datasoruces
            $namingDirectory->createSubdirectory(sprintf('php:env/%s/ds', $this->getContainer()->getName()));

            // iterate through all provisioning files (*-ds.xml), validate them and attach them to the configuration
            /** @var \AppserverIo\Appserver\Core\Api\ConfigurationService $configurationService */
            $configurationService = $this->getConfigurationService();
            foreach ($datasourceFiles as $datasourceFile) {
                try {
                    // explode the filename, context name and webapp path
                    list ($filename, $webappPath, $contextName) = $datasourceFile;

                    // validate the file, but skip it if validation fails
                    $configurationService->validateFile($filename);

                    // load the system properties
                    $systemProperties = $this->getDatasourceService()->getSystemProperties($container->getContainerNode());

                    // append the application specific properties
                    $systemProperties->add(SystemPropertyKeys::WEBAPP, $webappPath);
                    $systemProperties->add(SystemPropertyKeys::WEBAPP_NAME, $contextName);

                    // load the datasources from the file and replace the properties
                    $datasourcesNode = new DatasourcesNode();
                    $datasourcesNode->initFromFile($filename);
                    $datasourcesNode->replaceProperties($systemProperties);

                    // store the datasource in the system configuration
                    /** @var \AppserverIo\Description\Api\Node\DatasourceNode $datasourceNode */
                    foreach ($datasourcesNode->getDatasources() as $datasourceNode) {
                        // add the datasource to the system configuration
                        $this->getDatasourceService()->persist($datasourceNode);

                        // bind the datasource to the naming directory
                        $namingDirectory->bind(sprintf('php:env/%s/ds/%s', $container->getName(), $datasourceNode->getName()), $datasourceNode);

                        // log a message that the datasource has been deployed
                        $this->getInitialContext()->getSystemLogger()->debug(
                            sprintf('Successfully deployed datasource %s', $datasourceNode->getName())
                        );
                    }

                // log a message and continue with the next datasource node
                } catch (\Exception $e) {
                    // load the logger and log the XML validation errors
                    $systemLogger = $this->getInitialContext()->getSystemLogger();
                    $systemLogger->error($e->__toString());

                    // additionally log a message that DS will be missing
                    $systemLogger->critical(
                        sprintf('Will skip reading configuration in %s, datasources might be missing.', $filename)
                    );
                }
            }
        }
    }
protected function deployDatasources ( ) { // load the container $ container = $ this -> getContainer ( ) ; // load the container and check if we actually have datasource files to work with if ( $ datasourceFiles = $ this -> getDatasourceFiles ( ) ) { // load the naming directory instance $ namingDirectory = $ container -> getNamingDirectory ( ) ; // create a subdirectory for the container's datasoruces $ namingDirectory -> createSubdirectory ( sprintf ( 'php:env/%s/ds' , $ this -> getContainer ( ) -> getName ( ) ) ) ; // iterate through all provisioning files (*-ds.xml), validate them and attach them to the configuration /** @var \AppserverIo\Appserver\Core\Api\ConfigurationService $configurationService */ $ configurationService = $ this -> getConfigurationService ( ) ; foreach ( $ datasourceFiles as $ datasourceFile ) { try { // explode the filename, context name and webapp path list ( $ filename , $ webappPath , $ contextName ) = $ datasourceFile ; // validate the file, but skip it if validation fails $ configurationService -> validateFile ( $ filename ) ; // load the system properties $ systemProperties = $ this -> getDatasourceService ( ) -> getSystemProperties ( $ container -> getContainerNode ( ) ) ; // append the application specific properties $ systemProperties -> add ( SystemPropertyKeys :: WEBAPP , $ webappPath ) ; $ systemProperties -> add ( SystemPropertyKeys :: WEBAPP_NAME , $ contextName ) ; // load the datasources from the file and replace the properties $ datasourcesNode = new DatasourcesNode ( ) ; $ datasourcesNode -> initFromFile ( $ filename ) ; $ datasourcesNode -> replaceProperties ( $ systemProperties ) ; // store the datasource in the system configuration /** @var \AppserverIo\Description\Api\Node\DatasourceNode $datasourceNode */ foreach ( $ datasourcesNode -> getDatasources ( ) as $ datasourceNode ) { // add the datasource to the system configuration $ this -> getDatasourceService ( ) -> persist ( $ datasourceNode ) ; // bind the datasource to the naming directory $ namingDirectory -> bind ( sprintf ( 'php:env/%s/ds/%s' , $ container -> getName ( ) , $ datasourceNode -> getName ( ) ) , $ datasourceNode ) ; // log a message that the datasource has been deployed $ this -> getInitialContext ( ) -> getSystemLogger ( ) -> debug ( sprintf ( 'Successfully deployed datasource %s' , $ datasourceNode -> getName ( ) ) ) ; } // log a message and continue with the next datasource node } catch ( \ Exception $ e ) { // load the logger and log the XML validation errors $ systemLogger = $ this -> getInitialContext ( ) -> getSystemLogger ( ) ; $ systemLogger -> error ( $ e -> __toString ( ) ) ; // additionally log a message that DS will be missing $ systemLogger -> critical ( sprintf ( 'Will skip reading configuration in %s, datasources might be missing.' , $ filename ) ) ; } } } }
Deploys the available root directory datasources.

@return void
Deploys the available root directory datasources .