AppserverIo\Appserver\Core\Api\Node\ManagerNode::merge PHP Метод

merge() публичный Метод

This method merges the configuration of the passed manager node into this one.
public merge ( AppserverIo\Appserver\Core\Api\Node\ManagerNodeInterface $managerNode ) : void
$managerNode AppserverIo\Appserver\Core\Api\Node\ManagerNodeInterface The node with the manager configuration we want to merge
Результат void
    public function merge(ManagerNodeInterface $managerNode)
    {
        // make sure, we only merge nodes with the same name
        if (strcasecmp($this->getName(), $managerNode->getName()) !== 0) {
            return;
        }
        // override type and factory attributes
        $this->type = $managerNode->getType();
        $this->factory = $managerNode->getFactory();
        $this->contextFactory = $managerNode->getContextFactory();
        // load the authenticators of this manager node
        $localAuthenticators = $this->getAuthenticators();
        // iterate over the authenticator nodes of the passed manager node and merge them
        foreach ($managerNode->getAuthenticators() as $authenticatorNode) {
            $isMerged = false;
            foreach ($localAuthenticators as $key => $localAuthenticator) {
                if (strcasecmp($localAuthenticator->getName(), $authenticatorNode->getName()) === 0) {
                    $localAuthenticators[$key] = $authenticatorNode;
                    $isMerged = true;
                }
            }
            if ($isMerged === false) {
                $localAuthenticators[$authenticatorNode->getUuid()] = $authenticatorNode;
            }
        }
        // override the authenticators with the merged mones
        $this->authenticators = $localAuthenticators;
        // override the descriptors if available
        if (sizeof($descriptors = $managerNode->getDescriptors()) > 0) {
            $this->descriptors = $descriptors;
        }
        // override the directories if available
        if (sizeof($directories = $managerNode->getDirectories()) > 0) {
            $this->directories = $directories;
        }
        // override the params if available
        if (sizeof($params = $managerNode->getParams()) > 0) {
            $this->params = $params;
        }
        // override the security domains if available
        if (sizeof($securityDomains = $managerNode->getSecurityDomains()) > 0) {
            $this->securityDomains = $securityDomains;
        }
    }