From: Roland Häder Date: Wed, 22 Aug 2012 20:31:30 +0000 (+0000) Subject: Refactured a lot methods to become more generic (eventually BaseXmlTemplateEngine... X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=73fe1352cdca698f22a4ff044c4b5b6dffff1143;p=hub.git Refactured a lot methods to become more generic (eventually BaseXmlTemplateEngine will be moved to 'core' project) --- diff --git a/application/hub/config.php b/application/hub/config.php index 8ce18966f..51e63115a 100644 --- a/application/hub/config.php +++ b/application/hub/config.php @@ -246,11 +246,14 @@ $cfg->setConfigEntry('node_announcement_answer_template_class', 'XmlAnnouncement // CFG: NODE-REQUEST-NODE-LIST-TEMPLATE-CLASS $cfg->setConfigEntry('node_request_node_list_template_class', 'XmlRequestNodeListTemplateEngine'); +// CFG: NODE-REQUEST-NODE-LIST-ANSWER-TEMPLATE-CLASS +$cfg->setConfigEntry('node_request_node_list_answer_template_class', 'XmlRequestNodeListAnswerTemplateEngine'); + // CFG: NODE-MESSAGE-TEMPLATE-EXTENSION $cfg->setConfigEntry('node_message_template_extension', '.xml'); -// CFG: NODE-ANSWER-TEMPLATE-EXTENSION -$cfg->setConfigEntry('node_answer_template_extension', '.xml'); +// CFG: NODE-ANNOUNCEMENT-ANSWER-TEMPLATE-EXTENSION +$cfg->setConfigEntry('node_announcement_answer_template_extension', '.xml'); // CFG: NODE-ANNOUNCEMENT-TEMPLATE-TYPE $cfg->setConfigEntry('node_announcement_template_type', 'xml/announcement'); diff --git a/application/hub/main/helper/hub/answer/requests/class_NodeRequestNodeListMessageAnswerHelper.php b/application/hub/main/helper/hub/answer/requests/class_NodeRequestNodeListMessageAnswerHelper.php index 257b753a1..a21c96935 100644 --- a/application/hub/main/helper/hub/answer/requests/class_NodeRequestNodeListMessageAnswerHelper.php +++ b/application/hub/main/helper/hub/answer/requests/class_NodeRequestNodeListMessageAnswerHelper.php @@ -66,7 +66,7 @@ class NodeRequestNodeListMessageAnswerHelper extends BaseHubAnswerHelper impleme self::createDebugInstance(__CLASS__)->debugOutput('HELPER: Attempting to answer a request: node-list...'); // Get a XML template instance - $templateInstance = XmlTemplateEngineFactory::createXmlTemplateEngineInstance('node_request_node_list_template_class'); + $templateInstance = XmlTemplateEngineFactory::createXmlTemplateEngineInstance('node_request_node_list_answer_template_class'); // Set it for later use $this->setTemplateInstance($templateInstance); diff --git a/application/hub/main/template/announcement/class_XmlAnnouncementTemplateEngine.php b/application/hub/main/template/announcement/class_XmlAnnouncementTemplateEngine.php index 9f48e11ec..bd212f66f 100644 --- a/application/hub/main/template/announcement/class_XmlAnnouncementTemplateEngine.php +++ b/application/hub/main/template/announcement/class_XmlAnnouncementTemplateEngine.php @@ -34,28 +34,6 @@ class XmlAnnouncementTemplateEngine extends BaseTemplateEngine implements Compil const ANNOUNCEMENT_DATA_TCP_PORT = 'tcp-port'; const ANNOUNCEMENT_DATA_UDP_PORT = 'udp-port'; - /** - * Main nodes in the XML tree - */ - private $mainNodes = array( - 'announcement', - ); - - /** - * Sub nodes in the XML tree - */ - private $subNodes = array(); - - /** - * Current main node - */ - private $curr = array(); - - /** - * Content from dependency - */ - private $dependencyContent = array(); - /** * Protected constructor * @@ -95,42 +73,8 @@ class XmlAnnouncementTemplateEngine extends BaseTemplateEngine implements Compil // Get a new instance $templateInstance = new XmlAnnouncementTemplateEngine(); - // Get the application instance from registry - $applicationInstance = Registry::getRegistry()->getInstance('app'); - - // Determine base path - $templateBasePath = $templateInstance->getConfigInstance()->getConfigEntry('application_base_path') . $applicationInstance->getRequestInstance()->getRequestElement('app') . '/'; - - // Is the base path valid? - if (empty($templateBasePath)) { - // Base path is empty - throw new BasePathIsEmptyException($templateInstance, self::EXCEPTION_UNEXPECTED_EMPTY_STRING); - } elseif (!is_string($templateBasePath)) { - // Is not a string - throw new InvalidBasePathStringException(array($templateInstance, $templateBasePath), self::EXCEPTION_INVALID_STRING); - } elseif (!is_dir($templateBasePath)) { - // Is not a path - throw new BasePathIsNoDirectoryException(array($templateInstance, $templateBasePath), self::EXCEPTION_INVALID_PATH_NAME); - } elseif (!is_readable($templateBasePath)) { - // Is not readable - throw new BasePathReadProtectedException(array($templateInstance, $templateBasePath), self::EXCEPTION_READ_PROTECED_PATH); - } - - // Set the base path - $templateInstance->setTemplateBasePath($templateBasePath); - - // Set template extensions - $templateInstance->setRawTemplateExtension($templateInstance->getConfigInstance()->getConfigEntry('raw_template_extension')); - $templateInstance->setCodeTemplateExtension($templateInstance->getConfigInstance()->getConfigEntry('node_message_template_extension')); - - // Absolute output path for compiled templates - $templateInstance->setCompileOutputPath($templateInstance->getConfigInstance()->getConfigEntry('base_path') . $templateInstance->getConfigInstance()->getConfigEntry('compile_output_path')); - - // Init a variable stacker - $stackerInstance = ObjectFactory::createObjectByConfiguredName('node_announcement_stacker_class'); - - // Set it - $templateInstance->setStackerInstance($stackerInstance); + // Init template instance + $templateInstance->initXmlTemplateEngine('node', 'announcement'); // Return the prepared instance return $templateInstance; @@ -151,107 +95,6 @@ class XmlAnnouncementTemplateEngine extends BaseTemplateEngine implements Compil $this->loadTemplate($template); } - /** - * Getter for current main node - * - * @return $currMainNode Current main node - */ - public final function getCurrMainNode () { - return $this->curr['main_node']; - } - - /** - * Setter for current main node - * - * @param $element Element name to set as current main node - * @return $currMainNode Current main node - */ - private final function setCurrMainNode ($element) { - $this->curr['main_node'] = (string) $element; - } - - /** - * Getter for main node array - * - * @return $mainNodes Array with valid main node names - */ - public final function getMainNodes () { - return $this->mainNodes; - } - - /** - * Getter for sub node array - * - * @return $subNodes Array with valid sub node names - */ - public final function getSubNodes () { - return $this->subNodes; - } - - /** - * Handles the start element of an XML resource - * - * @param $resource XML parser resource (currently ignored) - * @param $element The element we shall handle - * @param $attributes All attributes - * @return void - * @throws InvalidXmlNodeException If an unknown/invalid XML node name was found - */ - public function startElement ($resource, $element, array $attributes) { - // Initial method name which will never be called... - $methodName = 'initAnnouncement'; - - // Make the element name lower-case - $element = strtolower($element); - - // Is the element a main node? - //* DEBUG: */ echo "START: >".$element."<
\n"; - if (in_array($element, $this->getMainNodes())) { - // Okay, main node found! - $methodName = 'start' . $this->convertToClassName($element); - - // Set it - $this->setCurrMainNode($element); - } elseif (in_array($element, $this->getSubNodes())) { - // Sub node found - $methodName = 'start' . $this->convertToClassName($element); - } else { - // Invalid node name found - throw new InvalidXmlNodeException(array($this, $element, $attributes), XmlParser::EXCEPTION_XML_NODE_UNKNOWN); - } - - // Call method - //* DEBUG: */ echo "call: ".$methodName."
\n"; - call_user_func_array(array($this, $methodName), $attributes); - } - - /** - * Ends the main or sub node by sending out the gathered data - * - * @param $resource An XML resource pointer (currently ignored) - * @param $nodeName Name of the node we want to finish - * @return void - * @throws XmlNodeMismatchException If current main node mismatches the closing one - */ - public function endElement ($resource, $nodeName) { - // Make all lower-case - $nodeName = strtolower($nodeName); - - // Does this match with current main node? - //* DEBUG: */ echo "END: >".$nodeName."<
\n"; - if (($nodeName != $this->getCurrMainNode()) && (in_array($nodeName, $this->getMainNodes()))) { - // Did not match! - throw new XmlNodeMismatchException (array($this, $nodeName, $this->getCurrMainNode()), XmlParser::EXCEPTION_XML_NODE_MISMATCH); - } // END - if - - // Construct method name - $methodName = 'finish' . $this->convertToClassName($nodeName); - - // Call the corresponding method - //* DEBUG: */ echo "call: ".$methodName."
\n"; - call_user_func_array(array($this, $methodName), array()); - } - /** * Currently not used * @@ -276,30 +119,6 @@ class XmlAnnouncementTemplateEngine extends BaseTemplateEngine implements Compil parent::assignVariable($this->getStackerInstance()->getNamed('announcement'), $characters); } - /** - * Handles the template dependency for given node - * - * @param $node The node we should load a dependency template - * @param $templateDependency A template to load to satisfy dependencies - * @return void - */ - private function handleTemplateDependency ($node, $templateDependency) { - // Is the template dependency set? - if ((!empty($templateDependency)) && (!isset($this->dependencyContent[$node]))) { - // Get a temporay template instance - $templateInstance = XmlTemplateEngineFactory::createXmlTemplateEngineInstance('node_announcement_template_class'); - - // Then load it - $templateInstance->loadAnnouncementTemplate($templateDependency); - - // Parse the XML content - $templateInstance->renderXmlContent(); - - // Save the parsed raw content in our dependency array - $this->dependencyContent[$node] = $templateInstance->getRawTemplateData(); - } // END - if - } - /** * Read announcement variables by calling readVariable() with 'general' as * variable stack. diff --git a/application/hub/main/template/answer/announcement/class_XmlAnnouncementAnswerTemplateEngine.php b/application/hub/main/template/answer/announcement/class_XmlAnnouncementAnswerTemplateEngine.php index 36db7c1c7..5944ad302 100644 --- a/application/hub/main/template/answer/announcement/class_XmlAnnouncementAnswerTemplateEngine.php +++ b/application/hub/main/template/answer/announcement/class_XmlAnnouncementAnswerTemplateEngine.php @@ -34,24 +34,6 @@ class XmlAnnouncementAnswerTemplateEngine extends BaseTemplateEngine implements const ANNOUNCEMENT_DATA_UDP_PORT = 'my-udp-port'; const ANNOUNCEMENT_DATA_ANSWER_STATUS = 'answer-status'; - /** - * Main nodes in the XML tree - */ - private $mainNodes = array( - 'announcement-answer' - ); - - /** - * Sub nodes in the XML tree - */ - private $subNodes = array( - ); - - /** - * Current main node - */ - private $curr = array(); - /** * Protected constructor * @@ -97,42 +79,8 @@ class XmlAnnouncementAnswerTemplateEngine extends BaseTemplateEngine implements // Get a new instance $templateInstance = new XmlAnnouncementAnswerTemplateEngine(); - // Get application instance from registry - $applicationInstance = Registry::getRegistry()->getInstance('app'); - - // Determine base path - $templateBasePath = $templateInstance->getConfigInstance()->getConfigEntry('application_base_path') . $applicationInstance->getRequestInstance()->getRequestElement('app') . '/'; - - // Is the base path valid? - if (empty($templateBasePath)) { - // Base path is empty - throw new BasePathIsEmptyException($templateInstance, self::EXCEPTION_UNEXPECTED_EMPTY_STRING); - } elseif (!is_string($templateBasePath)) { - // Is not a string - throw new InvalidBasePathStringException(array($templateInstance, $templateBasePath), self::EXCEPTION_INVALID_STRING); - } elseif (!is_dir($templateBasePath)) { - // Is not a path - throw new BasePathIsNoDirectoryException(array($templateInstance, $templateBasePath), self::EXCEPTION_INVALID_PATH_NAME); - } elseif (!is_readable($templateBasePath)) { - // Is not readable - throw new BasePathReadProtectedException(array($templateInstance, $templateBasePath), self::EXCEPTION_READ_PROTECED_PATH); - } - - // Set the base path - $templateInstance->setTemplateBasePath($templateBasePath); - - // Set template extensions - $templateInstance->setRawTemplateExtension($templateInstance->getConfigInstance()->getConfigEntry('raw_template_extension')); - $templateInstance->setCodeTemplateExtension($templateInstance->getConfigInstance()->getConfigEntry('node_answer_template_extension')); - - // Absolute output path for compiled templates - $templateInstance->setCompileOutputPath($templateInstance->getConfigInstance()->getConfigEntry('base_path') . $templateInstance->getConfigInstance()->getConfigEntry('compile_output_path')); - - // Init a variable stacker - $stackerInstance = ObjectFactory::createObjectByConfiguredName('node_announcement_answer_stacker_class'); - - // Set it - $templateInstance->setStackerInstance($stackerInstance); + // Init instance + $templateInstance->initXmlTemplateEngine('node', 'announcement_answer'); // Return the prepared instance return $templateInstance; @@ -153,106 +101,6 @@ class XmlAnnouncementAnswerTemplateEngine extends BaseTemplateEngine implements $this->loadTemplate($template); } - /** - * Getter for current main node - * - * @return $currMainNode Current main node - */ - public final function getCurrMainNode () { - return $this->curr['main_node']; - } - - /** - * Setter for current main node - * - * @param $element Element name to set as current main node - * @return $currMainNode Current main node - */ - private final function setCurrMainNode ($element) { - $this->curr['main_node'] = (string) $element; - } - - /** - * Getter for main node array - * - * @return $mainNodes Array with valid main node names - */ - public final function getMainNodes () { - return $this->mainNodes; - } - - /** - * Getter for sub node array - * - * @return $subNodes Array with valid sub node names - */ - public final function getSubNodes () { - return $this->subNodes; - } - - /** - * Handles the start element of an XML resource - * - * @param $resource XML parser resource (currently ignored) - * @param $element The element we shall handle - * @param $attributes All attributes - * @return void - * @throws InvalidXmlNodeException If an unknown/invalid XML node name was found - */ - public function startElement ($resource, $element, array $attributes) { - // Initial method name which will never be called... - $methodName = 'initAnnouncementAnswer'; - - // Make the element name lower-case - $element = strtolower($element); - - // Is the element a main node? - //* DEBUG: */ echo "START: >".$element."<
\n"; - if (in_array($element, $this->getMainNodes())) { - // Okay, main node found! - $methodName = 'start' . $this->convertToClassName($element); - - // Set it - $this->setCurrMainNode($element); - } elseif (in_array($element, $this->getSubNodes())) { - // Sub node found - $methodName = 'start' . $this->convertToClassName($element); - } else { - // Invalid node name found - throw new InvalidXmlNodeException(array($this, $element, $attributes), XmlParser::EXCEPTION_XML_NODE_UNKNOWN); - } - - // Call method - call_user_func_array(array($this, $methodName), $attributes); - } - - /** - * Ends the main or sub node by sending out the gathered data - * - * @param $resource An XML resource pointer (currently ignored) - * @param $nodeName Name of the node we want to finish - * @return void - * @throws XmlNodeMismatchException If current main node mismatches the closing one - */ - public function endElement ($resource, $nodeName) { - // Make all lower-case - $nodeName = strtolower($nodeName); - - // Does this match with current main node? - //* DEBUG: */ echo "END: >".$nodeName."<
\n"; - if (($nodeName != $this->getCurrMainNode()) && (in_array($nodeName, $this->getMainNodes()))) { - // Did not match! - throw new XmlNodeMismatchException (array($this, $nodeName, $this->getCurrMainNode()), XmlParser::EXCEPTION_XML_NODE_MISMATCH); - } // END - if - - // Construct method name - $methodName = 'finish' . $this->convertToClassName($nodeName); - - // Call the corresponding method - //* DEBUG: */ echo "call: ".$methodName."
\n"; - call_user_func_array(array($this, $methodName), array()); - } - /** * Currently not used * diff --git a/application/hub/main/template/class_BaseXmlTemplateEngine.php b/application/hub/main/template/class_BaseXmlTemplateEngine.php new file mode 100644 index 000000000..d9f07a184 --- /dev/null +++ b/application/hub/main/template/class_BaseXmlTemplateEngine.php @@ -0,0 +1,266 @@ + + * @version 0.0.0 + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2012 Core Developer Team + * @license GNU GPL 3.0 or any newer version + * @link http://www.ship-simu.org + * @todo This template engine does not make use of setTemplateType() + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +class BaseXMLTemplateEngine extends BaseTemplateEngine { + /** + * Main nodes in the XML tree + */ + protected $mainNodes = array(); + + /** + * Sub nodes in the XML tree + */ + protected $subNodes = array(); + + /** + * Current main node + */ + protected $curr = array(); + + /** + * XML template type + */ + private $xmlTemplateType = 'xml'; + + /** + * Type prefix + */ + private $typePrefix = 'xml'; + + /** + * Content from dependency + */ + private $dependencyContent = array(); + + /** + * Protected constructor + * + * @param $className Name of the class + * @return void + */ + protected function __construct ($className) { + // Call parent constructor + parent::__construct($className); + } + + /** + * Does a generic initialization of the template engine + * + * @param $typePrefix Type prefix + * @param $xmlTemplateType Type of XML template + * @return $templateInstance An instance of TemplateEngine + * @throws BasePathIsEmptyException If the provided $templateBasePath is empty + * @throws InvalidBasePathStringException If $templateBasePath is no string + * @throws BasePathIsNoDirectoryException If $templateBasePath is no + * directory or not found + * @throws BasePathReadProtectedException If $templateBasePath is + * read-protected + */ + protected function initXmlTemplateEngine ($typePrefix, $xmlTemplateType) { + // Determine base path + $templateBasePath = $this->getConfigInstance()->getConfigEntry('application_base_path') . $applicationInstance->getRequestInstance()->getRequestElement('app') . '/'; + + // Is the base path valid? + if (empty($templateBasePath)) { + // Base path is empty + throw new BasePathIsEmptyException($this, self::EXCEPTION_UNEXPECTED_EMPTY_STRING); + } elseif (!is_string($templateBasePath)) { + // Is not a string + throw new InvalidBasePathStringException(array($this, $templateBasePath), self::EXCEPTION_INVALID_STRING); + } elseif (!is_dir($templateBasePath)) { + // Is not a path + throw new BasePathIsNoDirectoryException(array($this, $templateBasePath), self::EXCEPTION_INVALID_PATH_NAME); + } elseif (!is_readable($templateBasePath)) { + // Is not readable + throw new BasePathReadProtectedException(array($this, $templateBasePath), self::EXCEPTION_READ_PROTECED_PATH); + } + + // Set the base path + $this->setTemplateBasePath($templateBasePath); + + // Set template extensions + $this->setRawTemplateExtension($this->getConfigInstance()->getConfigEntry('raw_template_extension')); + $this->setCodeTemplateExtension($this->getConfigInstance()->getConfigEntry($typePrefix . '__message_template_extension')); + + // Absolute output path for compiled templates + $this->setCompileOutputPath($this->getConfigInstance()->getConfigEntry('base_path') . $this->getConfigInstance()->getConfigEntry('compile_output_path')); + + // Init a variable stacker + $stackerInstance = ObjectFactory::createObjectByConfiguredName($typePrefix . '_' . $xmlTemplateType . '_stacker_class'); + + // Set it + $this->setStackerInstance($stackerInstance); + + // Set XML template type and prefix + $this->xmlTemplateType = $xmlTemplateType; + $this->typePrefix = $typePrefix; + + // Set it in main nodes + array_push($this->mainNodes, $xmlTemplateType); + } + + /** + * Load a specified XML template into the engine + * + * @param $template The XML template we shall load + * @return void + */ + public function loadXmlTemplate ($template) { + // Set template type + $this->setTemplateType($this->getConfigInstance()->getConfigEntry($this->xmlTemplateType . '_template_type')); + + // Load the special template + $this->loadTemplate($template); + } + + /** + * Getter for current main node + * + * @return $currMainNode Current main node + */ + public final function getCurrMainNode () { + return $this->curr['main_node']; + } + + /** + * Setter for current main node + * + * @param $element Element name to set as current main node + * @return $currMainNode Current main node + */ + private final function setCurrMainNode ($element) { + $this->curr['main_node'] = (string) $element; + } + + /** + * Getter for main node array + * + * @return $mainNodes Array with valid main node names + */ + public final function getMainNodes () { + return $this->mainNodes; + } + + /** + * Getter for sub node array + * + * @return $subNodes Array with valid sub node names + */ + public final function getSubNodes () { + return $this->subNodes; + } + + /** + * Handles the template dependency for given node + * + * @param $node The node we should load a dependency template + * @param $templateDependency A template to load to satisfy dependencies + * @return void + */ + protected function handleTemplateDependency ($node, $templateDependency) { + // Is the template dependency set? + if ((!empty($templateDependency)) && (!isset($this->dependencyContent[$node]))) { + // Get a temporay template instance + $templateInstance = XmlTemplateEngineFactory::createXmlTemplateEngineInstance($this->typePrefix . '__' . $this->xmlTemplateType . '_template_class'); + + // Create method name + $methodName = 'load' . $this->convertToClassName($this->xmlTemplateType) . 'Template'; + + // Then load it + call_user_func(array($templateInstance, $methodName), $templateDependency); + + // Parse the XML content + $templateInstance->renderXmlContent(); + + // Save the parsed raw content in our dependency array + $this->dependencyContent[$node] = $templateInstance->getRawTemplateData(); + } // END - if + } + + /** + * Handles the start element of an XML resource + * + * @param $resource XML parser resource (currently ignored) + * @param $element The element we shall handle + * @param $attributes All attributes + * @return void + * @throws InvalidXmlNodeException If an unknown/invalid XML node name was found + */ + public final function startElement ($resource, $element, array $attributes) { + // Initial method name which will never be called... + $methodName = 'init' . $this->convertToClassName($this->xmlTemplateType); + + // Make the element name lower-case + $element = strtolower($element); + + // Is the element a main node? + //* DEBUG: */ echo "START: >".$element."<
\n"; + if (in_array($element, $this->getMainNodes())) { + // Okay, main node found! + $methodName = 'start' . $this->convertToClassName($element); + + // Set it + $this->setCurrMainNode($element); + } elseif (in_array($element, $this->getSubNodes())) { + // Sub node found + $methodName = 'start' . $this->convertToClassName($element); + } else { + // Invalid node name found + throw new InvalidXmlNodeException(array($this, $element, $attributes), XmlParser::EXCEPTION_XML_NODE_UNKNOWN); + } + + // Call method + call_user_func_array(array($this, $methodName), $attributes); + } + + /** + * Ends the main or sub node by sending out the gathered data + * + * @param $resource An XML resource pointer (currently ignored) + * @param $nodeName Name of the node we want to finish + * @return void + * @throws XmlNodeMismatchException If current main node mismatches the closing one + */ + public final function endElement ($resource, $nodeName) { + // Make all lower-case + $nodeName = strtolower($nodeName); + + // Does this match with current main node? + //* DEBUG: */ echo "END: >".$nodeName."<
\n"; + if (($nodeName != $this->getCurrMainNode()) && (in_array($nodeName, $this->getMainNodes()))) { + // Did not match! + throw new XmlNodeMismatchException (array($this, $nodeName, $this->getCurrMainNode()), XmlParser::EXCEPTION_XML_NODE_MISMATCH); + } // END - if + + // Construct method name + $methodName = 'finish' . $this->convertToClassName($nodeName); + + // Call the corresponding method + //* DEBUG: */ echo "call: ".$methodName."
\n"; + call_user_func_array(array($this, $methodName), array()); + } +} + +// [EOF] +?> diff --git a/application/hub/main/template/connect/class_XmlSelfConnectTemplateEngine.php b/application/hub/main/template/connect/class_XmlSelfConnectTemplateEngine.php index eb6353417..b24f54e3b 100644 --- a/application/hub/main/template/connect/class_XmlSelfConnectTemplateEngine.php +++ b/application/hub/main/template/connect/class_XmlSelfConnectTemplateEngine.php @@ -29,28 +29,6 @@ class XmlSelfConnectTemplateEngine extends BaseTemplateEngine implements Compile const SELF_CONNECT_DATA_NODE_ID = 'node-id'; const SELF_CONNECT_DATA_SESSION_ID = 'session-id'; - /** - * Main nodes in the XML tree - */ - private $mainNodes = array( - 'self-connect', - ); - - /** - * Sub nodes in the XML tree - */ - private $subNodes = array(); - - /** - * Current main node - */ - private $curr = array(); - - /** - * Content from dependency - */ - private $dependencyContent = array(); - /** * Protected constructor * @@ -83,42 +61,8 @@ class XmlSelfConnectTemplateEngine extends BaseTemplateEngine implements Compile // Get a new instance $templateInstance = new XmlSelfConnectTemplateEngine(); - // Get the application instance from registry - $applicationInstance = Registry::getRegistry()->getInstance('app'); - - // Determine base path - $templateBasePath = $templateInstance->getConfigInstance()->getConfigEntry('application_base_path') . $applicationInstance->getRequestInstance()->getRequestElement('app') . '/'; - - // Is the base path valid? - if (empty($templateBasePath)) { - // Base path is empty - throw new BasePathIsEmptyException($templateInstance, self::EXCEPTION_UNEXPECTED_EMPTY_STRING); - } elseif (!is_string($templateBasePath)) { - // Is not a string - throw new InvalidBasePathStringException(array($templateInstance, $templateBasePath), self::EXCEPTION_INVALID_STRING); - } elseif (!is_dir($templateBasePath)) { - // Is not a path - throw new BasePathIsNoDirectoryException(array($templateInstance, $templateBasePath), self::EXCEPTION_INVALID_PATH_NAME); - } elseif (!is_readable($templateBasePath)) { - // Is not readable - throw new BasePathReadProtectedException(array($templateInstance, $templateBasePath), self::EXCEPTION_READ_PROTECED_PATH); - } - - // Set the base path - $templateInstance->setTemplateBasePath($templateBasePath); - - // Set template extensions - $templateInstance->setRawTemplateExtension($templateInstance->getConfigInstance()->getConfigEntry('raw_template_extension')); - $templateInstance->setCodeTemplateExtension($templateInstance->getConfigInstance()->getConfigEntry('node_message_template_extension')); - - // Absolute output path for compiled templates - $templateInstance->setCompileOutputPath($templateInstance->getConfigInstance()->getConfigEntry('base_path') . $templateInstance->getConfigInstance()->getConfigEntry('compile_output_path')); - - // Init a variable stacker - $stackerInstance = ObjectFactory::createObjectByConfiguredName('node_self_connect_stacker_class'); - - // Set it - $templateInstance->setStackerInstance($stackerInstance); + // Init template instance + $templateInstance->initXmlTemplateEngine('node', 'self_connect'); // Return the prepared instance return $templateInstance; @@ -139,107 +83,6 @@ class XmlSelfConnectTemplateEngine extends BaseTemplateEngine implements Compile $this->loadTemplate($template); } - /** - * Getter for current main node - * - * @return $currMainNode Current main node - */ - public final function getCurrMainNode () { - return $this->curr['main_node']; - } - - /** - * Setter for current main node - * - * @param $element Element name to set as current main node - * @return $currMainNode Current main node - */ - private final function setCurrMainNode ($element) { - $this->curr['main_node'] = (string) $element; - } - - /** - * Getter for main node array - * - * @return $mainNodes Array with valid main node names - */ - public final function getMainNodes () { - return $this->mainNodes; - } - - /** - * Getter for sub node array - * - * @return $subNodes Array with valid sub node names - */ - public final function getSubNodes () { - return $this->subNodes; - } - - /** - * Handles the start element of an XML resource - * - * @param $resource XML parser resource (currently ignored) - * @param $element The element we shall handle - * @param $attributes All attributes - * @return void - * @throws InvalidXmlNodeException If an unknown/invalid XML node name was found - */ - public function startElement ($resource, $element, array $attributes) { - // Initial method name which will never be called... - $methodName = 'initSelfConnect'; - - // Make the element name lower-case - $element = strtolower($element); - - // Is the element a main node? - //* DEBUG: */ echo "START: >".$element."<
\n"; - if (in_array($element, $this->getMainNodes())) { - // Okay, main node found! - $methodName = 'start' . $this->convertToClassName($element); - - // Set it - $this->setCurrMainNode($element); - } elseif (in_array($element, $this->getSubNodes())) { - // Sub node found - $methodName = 'start' . $this->convertToClassName($element); - } else { - // Invalid node name found - throw new InvalidXmlNodeException(array($this, $element, $attributes), XmlParser::EXCEPTION_XML_NODE_UNKNOWN); - } - - // Call method - //* DEBUG: */ echo "call: ".$methodName."
\n"; - call_user_func_array(array($this, $methodName), $attributes); - } - - /** - * Ends the main or sub node by sending out the gathered data - * - * @param $resource An XML resource pointer (currently ignored) - * @param $nodeName Name of the node we want to finish - * @return void - * @throws XmlNodeMismatchException If current main node mismatches the closing one - */ - public function endElement ($resource, $nodeName) { - // Make all lower-case - $nodeName = strtolower($nodeName); - - // Does this match with current main node? - //* DEBUG: */ echo "END: >".$nodeName."<
\n"; - if (($nodeName != $this->getCurrMainNode()) && (in_array($nodeName, $this->getMainNodes()))) { - // Did not match! - throw new XmlNodeMismatchException (array($this, $nodeName, $this->getCurrMainNode()), XmlParser::EXCEPTION_XML_NODE_MISMATCH); - } // END - if - - // Construct method name - $methodName = 'finish' . $this->convertToClassName($nodeName); - - // Call the corresponding method - //* DEBUG: */ echo "call: ".$methodName."
\n"; - call_user_func_array(array($this, $methodName), array()); - } - /** * Currently not used * @@ -265,30 +108,6 @@ class XmlSelfConnectTemplateEngine extends BaseTemplateEngine implements Compile parent::assignVariable($this->getStackerInstance()->getNamed('self_connect'), $characters); } - /** - * Handles the template dependency for given node - * - * @param $node The node we should load a dependency template - * @param $templateDependency A template to load to satisfy dependencies - * @return void - */ - private function handleTemplateDependency ($node, $templateDependency) { - // Is the template dependency set? - if ((!empty($templateDependency)) && (!isset($this->dependencyContent[$node]))) { - // Get a temporay template instance - $templateInstance = XmlTemplateEngineFactory::createXmlTemplateEngineInstance('node_self_connect_template_class'); - - // Then load it - $templateInstance->loadSelfConnectTemplate($templateDependency); - - // Parse the XML content - $templateInstance->renderXmlContent(); - - // Save the parsed raw content in our dependency array - $this->dependencyContent[$node] = $templateInstance->getRawTemplateData(); - } // END - if - } - /** * Read self-connect variables by calling readVariable() with 'general' as * variable stack. diff --git a/application/hub/main/template/objects/class_XmlObjectRegistryTemplateEngine.php b/application/hub/main/template/objects/class_XmlObjectRegistryTemplateEngine.php index c9eb4468f..0a691ae8a 100644 --- a/application/hub/main/template/objects/class_XmlObjectRegistryTemplateEngine.php +++ b/application/hub/main/template/objects/class_XmlObjectRegistryTemplateEngine.php @@ -35,36 +35,6 @@ class XmlObjectRegistryTemplateEngine extends BaseTemplateEngine implements Comp */ private $objectRegistryInstance = NULL; - /** - * Main nodes in the XML tree - */ - private $mainNodes = array( - 'object-registry' - ); - - /** - * Sub nodes in the XML tree - */ - private $subNodes = array( - 'object-list', - 'object-list-entry', - self::OBJECT_TYPE_DATA_NAME, - self::OBJECT_TYPE_DATA_RECIPIENT_LIMITATION, - self::OBJECT_TYPE_DATA_MAX_SPREAD, - self::OBJECT_TYPE_DATA_PROTOCOL, - self::OBJECT_TYPE_DATA_RECIPIENT_TYPE - ); - - /** - * Current main node - */ - private $curr = array(); - - /** - * Content from dependency - */ - private $dependencyContent = array(); - /** * Protected constructor * @@ -76,6 +46,17 @@ class XmlObjectRegistryTemplateEngine extends BaseTemplateEngine implements Comp // Init object type registry instance $this->objectRegistryInstance = ObjectTypeRegistryFactory::createObjectTypeRegistryInstance(); + + // Init sub nodes + $this->subNodes = array( + 'object-list', + 'object-list-entry', + self::OBJECT_TYPE_DATA_NAME, + self::OBJECT_TYPE_DATA_RECIPIENT_LIMITATION, + self::OBJECT_TYPE_DATA_MAX_SPREAD, + self::OBJECT_TYPE_DATA_PROTOCOL, + self::OBJECT_TYPE_DATA_RECIPIENT_TYPE + ); } /** @@ -93,42 +74,8 @@ class XmlObjectRegistryTemplateEngine extends BaseTemplateEngine implements Comp // Get a new instance $templateInstance = new XmlObjectRegistryTemplateEngine(); - // Get the application instance from registry - $applicationInstance = Registry::getRegistry()->getInstance('app'); - - // Determine base path - $templateBasePath = $templateInstance->getConfigInstance()->getConfigEntry('application_base_path') . $applicationInstance->getRequestInstance()->getRequestElement('app') . '/'; - - // Is the base path valid? - if (empty($templateBasePath)) { - // Base path is empty - throw new BasePathIsEmptyException($templateInstance, self::EXCEPTION_UNEXPECTED_EMPTY_STRING); - } elseif (!is_string($templateBasePath)) { - // Is not a string - throw new InvalidBasePathStringException(array($templateInstance, $templateBasePath), self::EXCEPTION_INVALID_STRING); - } elseif (!is_dir($templateBasePath)) { - // Is not a path - throw new BasePathIsNoDirectoryException(array($templateInstance, $templateBasePath), self::EXCEPTION_INVALID_PATH_NAME); - } elseif (!is_readable($templateBasePath)) { - // Is not readable - throw new BasePathReadProtectedException(array($templateInstance, $templateBasePath), self::EXCEPTION_READ_PROTECED_PATH); - } - - // Set the base path - $templateInstance->setTemplateBasePath($templateBasePath); - - // Set template extensions - $templateInstance->setRawTemplateExtension($templateInstance->getConfigInstance()->getConfigEntry('raw_template_extension')); - $templateInstance->setCodeTemplateExtension($templateInstance->getConfigInstance()->getConfigEntry('node_object_registry_template_extension')); - - // Absolute output path for compiled templates - $templateInstance->setCompileOutputPath($templateInstance->getConfigInstance()->getConfigEntry('base_path') . $templateInstance->getConfigInstance()->getConfigEntry('compile_output_path')); - - // Init a variable stacker - $stackerInstance = ObjectFactory::createObjectByConfiguredName('node_object_registry_stacker_class'); - - // Set it - $templateInstance->setStackerInstance($stackerInstance); + // Init template instance + $templateInstance->initXmlTemplateEngine('node', 'object_registry'); // Return the prepared instance return $templateInstance; @@ -141,7 +88,7 @@ class XmlObjectRegistryTemplateEngine extends BaseTemplateEngine implements Comp * located in 'object_registry' by default * @return void */ - public function loadObjectRegistryTemplate ($template) { + public function loadObjectRegistryTemplate ($template = 'object_registry') { // Set template type $this->setTemplateType($this->getConfigInstance()->getConfigEntry('node_object_registry_template_type')); @@ -149,106 +96,6 @@ class XmlObjectRegistryTemplateEngine extends BaseTemplateEngine implements Comp $this->loadTemplate($template); } - /** - * Getter for current main node - * - * @return $currMainNode Current main node - */ - public final function getCurrMainNode () { - return $this->curr['main_node']; - } - - /** - * Setter for current main node - * - * @param $element Element name to set as current main node - * @return $currMainNode Current main node - */ - private final function setCurrMainNode ($element) { - $this->curr['main_node'] = (string) $element; - } - - /** - * Getter for main node array - * - * @return $mainNodes Array with valid main node names - */ - public final function getMainNodes () { - return $this->mainNodes; - } - - /** - * Getter for sub node array - * - * @return $subNodes Array with valid sub node names - */ - public final function getSubNodes () { - return $this->subNodes; - } - - /** - * Handles the start element of an XML resource - * - * @param $resource XML parser resource (currently ignored) - * @param $element The element we shall handle - * @param $attributes All attributes - * @return void - * @throws InvalidXmlNodeException If an unknown/invalid XML node name was found - */ - public function startElement ($resource, $element, array $attributes) { - // Initial method name which will never be called... - $methodName = 'initObjectRegistry'; - - // Make the element name lower-case - $element = strtolower($element); - - // Is the element a main node? - //* DEBUG: */ echo "START: >".$element."<
\n"; - if (in_array($element, $this->getMainNodes())) { - // Okay, main node found! - $methodName = 'start' . $this->convertToClassName($element); - - // Set it - $this->setCurrMainNode($element); - } elseif (in_array($element, $this->getSubNodes())) { - // Sub node found - $methodName = 'start' . $this->convertToClassName($element); - } else { - // Invalid node name found - throw new InvalidXmlNodeException(array($this, $element, $attributes), XmlParser::EXCEPTION_XML_NODE_UNKNOWN); - } - - // Call method - call_user_func_array(array($this, $methodName), $attributes); - } - - /** - * Ends the main or sub node by sending out the gathered data - * - * @param $resource An XML resource pointer (currently ignored) - * @param $nodeName Name of the node we want to finish - * @return void - * @throws XmlNodeMismatchException If current main node mismatches the closing one - */ - public function endElement ($resource, $nodeName) { - // Make all lower-case - $nodeName = strtolower($nodeName); - - // Does this match with current main node? - //* DEBUG: */ echo "END: >".$nodeName."<
\n"; - if (($nodeName != $this->getCurrMainNode()) && (in_array($nodeName, $this->getMainNodes()))) { - // Did not match! - throw new XmlNodeMismatchException (array($this, $nodeName, $this->getCurrMainNode()), XmlParser::EXCEPTION_XML_NODE_MISMATCH); - } // END - if - - // Construct method name - $methodName = 'finish' . $this->convertToClassName($nodeName); - - // Call the corresponding method - //* DEBUG: */ echo "call: ".$methodName."
\n"; - call_user_func_array(array($this, $methodName), array()); - } - /** * Currently not used * @@ -280,30 +127,6 @@ class XmlObjectRegistryTemplateEngine extends BaseTemplateEngine implements Comp $this->objectRegistryInstance->addEntry($nodeName, $characters); } - /** - * Handles the template dependency for given node - * - * @param $node The node we should load a dependency template - * @param $templateDependency A template to load to satisfy dependencies - * @return void - */ - private function handleTemplateDependency ($node, $templateDependency) { - // Is the template dependency set? - if ((!empty($templateDependency)) && (!isset($this->dependencyContent[$node]))) { - // Get a temporay template instance - $templateInstance = XmlTemplateEngineFactory::createXmlTemplateEngineInstance('node_object_registry_template_class'); - - // Then load it - $templateInstance->loadObjectRegistryTemplate($templateDependency); - - // Parse the XML content - $templateInstance->renderXmlContent(); - - // Save the parsed raw content in our dependency array - $this->dependencyContent[$node] = $templateInstance->getRawTemplateData(); - } // END - if - } - /** * Getter for cache file (FQFN) * diff --git a/application/hub/main/template/producer/test_units/class_XmlCruncherTestUnitTemplateEngine.php b/application/hub/main/template/producer/test_units/class_XmlCruncherTestUnitTemplateEngine.php index 8953118f6..1e56db512 100644 --- a/application/hub/main/template/producer/test_units/class_XmlCruncherTestUnitTemplateEngine.php +++ b/application/hub/main/template/producer/test_units/class_XmlCruncherTestUnitTemplateEngine.php @@ -23,36 +23,6 @@ * along with this program. If not, see . */ class XmlCruncherTestUnitTemplateEngine extends BaseTemplateEngine implements CompileableTemplate, Registerable { - /** - * Main nodes in the XML tree - */ - private $mainNodes = array( - 'cruncher-test-unit' - ); - - /** - * Sub nodes in the XML tree - */ - private $subNodes = array( - 'meta-data', - 'global-project-identifier', - 'test-unit-created', - 'cipher', - 'cipher-function', - 'cipher-name', - 'unprocessed-data', - 'encrypted-message', - 'cruncher-key-list', - 'cruncher-key', - 'key-id', - 'key-value' - ); - - /** - * Current main node - */ - private $curr = array(); - /** * Protected constructor * @@ -61,6 +31,22 @@ class XmlCruncherTestUnitTemplateEngine extends BaseTemplateEngine implements Co protected function __construct () { // Call parent constructor parent::__construct(__CLASS__); + + // Init sub nodes + $this->subNodes = array( + 'meta-data', + 'global-project-identifier', + 'test-unit-created', + 'cipher', + 'cipher-function', + 'cipher-name', + 'unprocessed-data', + 'encrypted-message', + 'cruncher-key-list', + 'cruncher-key', + 'key-id', + 'key-value' + ); } /** @@ -78,42 +64,8 @@ class XmlCruncherTestUnitTemplateEngine extends BaseTemplateEngine implements Co // Get a new instance $templateInstance = new XmlCruncherTestUnitTemplateEngine(); - // Get application instance from registry - $applicationInstance = Registry::getRegistry()->getInstance('app'); - - // Determine base path - $templateBasePath = $templateInstance->getConfigInstance()->getConfigEntry('application_base_path') . $applicationInstance->getRequestInstance()->getRequestElement('app') . '/'; - - // Is the base path valid? - if (empty($templateBasePath)) { - // Base path is empty - throw new BasePathIsEmptyException($templateInstance, self::EXCEPTION_UNEXPECTED_EMPTY_STRING); - } elseif (!is_string($templateBasePath)) { - // Is not a string - throw new InvalidBasePathStringException(array($templateInstance, $templateBasePath), self::EXCEPTION_INVALID_STRING); - } elseif (!is_dir($templateBasePath)) { - // Is not a path - throw new BasePathIsNoDirectoryException(array($templateInstance, $templateBasePath), self::EXCEPTION_INVALID_PATH_NAME); - } elseif (!is_readable($templateBasePath)) { - // Is not readable - throw new BasePathReadProtectedException(array($templateInstance, $templateBasePath), self::EXCEPTION_READ_PROTECED_PATH); - } - - // Set the base path - $templateInstance->setTemplateBasePath($templateBasePath); - - // Set template extensions - $templateInstance->setRawTemplateExtension($templateInstance->getConfigInstance()->getConfigEntry('raw_template_extension')); - $templateInstance->setCodeTemplateExtension($templateInstance->getConfigInstance()->getConfigEntry('cruncher_test_unit_template_extension')); - - // Absolute output path for compiled templates - $templateInstance->setCompileOutputPath($templateInstance->getConfigInstance()->getConfigEntry('base_path') . $templateInstance->getConfigInstance()->getConfigEntry('compile_output_path')); - - // Init a variable stacker - $stackerInstance = ObjectFactory::createObjectByConfiguredName('cruncher_test_unit_stacker_class'); - - // Set it - $templateInstance->setStackerInstance($stackerInstance); + // Init template instance + $templateInstance->initXmlTemplateEngine('cruncher', 'test_unit'); // Return the prepared instance return $templateInstance; @@ -134,106 +86,6 @@ class XmlCruncherTestUnitTemplateEngine extends BaseTemplateEngine implements Co $this->loadTemplate($template); } - /** - * Getter for current main node - * - * @return $currMainNode Current main node - */ - public final function getCurrMainNode () { - return $this->curr['main_node']; - } - - /** - * Setter for current main node - * - * @param $element Element name to set as current main node - * @return $currMainNode Current main node - */ - private final function setCurrMainNode ($element) { - $this->curr['main_node'] = (string) $element; - } - - /** - * Getter for main node array - * - * @return $mainNodes Array with valid main node names - */ - public final function getMainNodes () { - return $this->mainNodes; - } - - /** - * Getter for sub node array - * - * @return $subNodes Array with valid sub node names - */ - public final function getSubNodes () { - return $this->subNodes; - } - - /** - * Handles the start element of an XML resource - * - * @param $resource XML parser resource (currently ignored) - * @param $element The element we shall handle - * @param $attributes All attributes - * @return void - * @throws InvalidXmlNodeException If an unknown/invalid XML node name was found - */ - public function startElement ($resource, $element, array $attributes) { - // Initial method name which will never be called... - $methodName = 'initTestUnit'; - - // Make the element name lower-case - $element = strtolower($element); - - // Is the element a main node? - //* DEBUG: */ echo "START: >".$element."<
\n"; - if (in_array($element, $this->getMainNodes())) { - // Okay, main node found! - $methodName = 'start' . $this->convertToClassName($element); - - // Set it - $this->setCurrMainNode($element); - } elseif (in_array($element, $this->getSubNodes())) { - // Sub node found - $methodName = 'start' . $this->convertToClassName($element); - } else { - // Invalid node name found - throw new InvalidXmlNodeException(array($this, $element, $attributes), XmlParser::EXCEPTION_XML_NODE_UNKNOWN); - } - - // Call method - call_user_func_array(array($this, $methodName), $attributes); - } - - /** - * Ends the main or sub node by sending out the gathered data - * - * @param $resource An XML resource pointer (currently ignored) - * @param $nodeName Name of the node we want to finish - * @return void - * @throws XmlNodeMismatchException If current main node mismatches the closing one - */ - public function endElement ($resource, $nodeName) { - // Make all lower-case - $nodeName = strtolower($nodeName); - - // Does this match with current main node? - //* DEBUG: */ echo "END: >".$nodeName."<
\n"; - if (($nodeName != $this->getCurrMainNode()) && (in_array($nodeName, $this->getMainNodes()))) { - // Did not match! - throw new XmlNodeMismatchException (array($this, $nodeName, $this->getCurrMainNode()), XmlParser::EXCEPTION_XML_NODE_MISMATCH); - } // END - if - - // Construct method name - $methodName = 'finish' . $this->convertToClassName($nodeName); - - // Call the corresponding method - //* DEBUG: */ echo "call: ".$methodName."
\n"; - call_user_func_array(array($this, $methodName), array()); - } - /** * Currently not used * diff --git a/application/hub/main/template/requests/class_XmlRequestNodeListTemplateEngine.php b/application/hub/main/template/requests/class_XmlRequestNodeListTemplateEngine.php index 110d0c226..5143cd66c 100644 --- a/application/hub/main/template/requests/class_XmlRequestNodeListTemplateEngine.php +++ b/application/hub/main/template/requests/class_XmlRequestNodeListTemplateEngine.php @@ -27,26 +27,6 @@ class XmlRequestNodeListTemplateEngine extends BaseTemplateEngine implements Com const REQUEST_DATA_ACCEPTED_OBJECT_TYPES = 'accepted-object-types'; const REQUEST_DATA_SESSION_ID = 'session-id'; - /** - * Main nodes in the XML tree - */ - private $mainNodes = array( - 'node-request-node-list' - ); - - /** - * Sub nodes in the XML tree - */ - private $subNodes = array( - self::REQUEST_DATA_ACCEPTED_OBJECT_TYPES, - self::REQUEST_DATA_SESSION_ID, - ); - - /** - * Current main node - */ - private $curr = array(); - /** * Protected constructor * @@ -55,6 +35,12 @@ class XmlRequestNodeListTemplateEngine extends BaseTemplateEngine implements Com protected function __construct () { // Call parent constructor parent::__construct(__CLASS__); + + // Init sub nodes + $this->subNodes = array( + self::REQUEST_DATA_ACCEPTED_OBJECT_TYPES, + self::REQUEST_DATA_SESSION_ID, + ); } /** @@ -72,42 +58,8 @@ class XmlRequestNodeListTemplateEngine extends BaseTemplateEngine implements Com // Get a new instance $templateInstance = new XmlRequestNodeListTemplateEngine(); - // Get application instance from registry - $applicationInstance = Registry::getRegistry()->getInstance('app'); - - // Determine base path - $templateBasePath = $templateInstance->getConfigInstance()->getConfigEntry('application_base_path') . $applicationInstance->getRequestInstance()->getRequestElement('app') . '/'; - - // Is the base path valid? - if (empty($templateBasePath)) { - // Base path is empty - throw new BasePathIsEmptyException($templateInstance, self::EXCEPTION_UNEXPECTED_EMPTY_STRING); - } elseif (!is_string($templateBasePath)) { - // Is not a string - throw new InvalidBasePathStringException(array($templateInstance, $templateBasePath), self::EXCEPTION_INVALID_STRING); - } elseif (!is_dir($templateBasePath)) { - // Is not a path - throw new BasePathIsNoDirectoryException(array($templateInstance, $templateBasePath), self::EXCEPTION_INVALID_PATH_NAME); - } elseif (!is_readable($templateBasePath)) { - // Is not readable - throw new BasePathReadProtectedException(array($templateInstance, $templateBasePath), self::EXCEPTION_READ_PROTECED_PATH); - } - - // Set the base path - $templateInstance->setTemplateBasePath($templateBasePath); - - // Set template extensions - $templateInstance->setRawTemplateExtension($templateInstance->getConfigInstance()->getConfigEntry('raw_template_extension')); - $templateInstance->setCodeTemplateExtension($templateInstance->getConfigInstance()->getConfigEntry('node_message_template_extension')); - - // Absolute output path for compiled templates - $templateInstance->setCompileOutputPath($templateInstance->getConfigInstance()->getConfigEntry('base_path') . $templateInstance->getConfigInstance()->getConfigEntry('compile_output_path')); - - // Init a variable stacker - $stackerInstance = ObjectFactory::createObjectByConfiguredName('node_request_node_list_stacker_class'); - - // Set it - $templateInstance->setStackerInstance($stackerInstance); + // Init template instance + $templateInstance->initXmlTemplateEngine('node', 'request_node_list'); // Return the prepared instance return $templateInstance; @@ -128,106 +80,6 @@ class XmlRequestNodeListTemplateEngine extends BaseTemplateEngine implements Com $this->loadTemplate($template); } - /** - * Getter for current main node - * - * @return $currMainNode Current main node - */ - public final function getCurrMainNode () { - return $this->curr['main_node']; - } - - /** - * Setter for current main node - * - * @param $element Element name to set as current main node - * @return $currMainNode Current main node - */ - private final function setCurrMainNode ($element) { - $this->curr['main_node'] = (string) $element; - } - - /** - * Getter for main node array - * - * @return $mainNodes Array with valid main node names - */ - public final function getMainNodes () { - return $this->mainNodes; - } - - /** - * Getter for sub node array - * - * @return $subNodes Array with valid sub node names - */ - public final function getSubNodes () { - return $this->subNodes; - } - - /** - * Handles the start element of an XML resource - * - * @param $resource XML parser resource (currently ignored) - * @param $element The element we shall handle - * @param $attributes All attributes - * @return void - * @throws InvalidXmlNodeException If an unknown/invalid XML node name was found - */ - public function startElement ($resource, $element, array $attributes) { - // Initial method name which will never be called... - $methodName = 'initNodeRequestNodeList'; - - // Make the element name lower-case - $element = strtolower($element); - - // Is the element a main node? - //* DEBUG: */ echo "START: >".$element."<
\n"; - if (in_array($element, $this->getMainNodes())) { - // Okay, main node found! - $methodName = 'start' . $this->convertToClassName($element); - - // Set it - $this->setCurrMainNode($element); - } elseif (in_array($element, $this->getSubNodes())) { - // Sub node found - $methodName = 'start' . $this->convertToClassName($element); - } else { - // Invalid node name found - throw new InvalidXmlNodeException(array($this, $element, $attributes), XmlParser::EXCEPTION_XML_NODE_UNKNOWN); - } - - // Call method - call_user_func_array(array($this, $methodName), $attributes); - } - - /** - * Ends the main or sub node by sending out the gathered data - * - * @param $resource An XML resource pointer (currently ignored) - * @param $nodeName Name of the node we want to finish - * @return void - * @throws XmlNodeMismatchException If current main node mismatches the closing one - */ - public function endElement ($resource, $nodeName) { - // Make all lower-case - $nodeName = strtolower($nodeName); - - // Does this match with current main node? - //* DEBUG: */ echo "END: >".$nodeName."<
\n"; - if (($nodeName != $this->getCurrMainNode()) && (in_array($nodeName, $this->getMainNodes()))) { - // Did not match! - throw new XmlNodeMismatchException (array($this, $nodeName, $this->getCurrMainNode()), XmlParser::EXCEPTION_XML_NODE_MISMATCH); - } // END - if - - // Construct method name - $methodName = 'finish' . $this->convertToClassName($nodeName); - - // Call the corresponding method - //* DEBUG: */ echo "call: ".$methodName."
\n"; - call_user_func_array(array($this, $methodName), array()); - } - /** * Currently not used *