/**
* A Package tags class
*
- * @author Roland Haeder <webmaster@ship-simu.org>
+ * @author Roland Haeder <webmaster@shipsimu.org>
* @version 0.0.0
- * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009, 2010 Hub Developer Team
+ * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2014 Hub Developer Team
* @license GNU GPL 3.0 or any newer version
- * @link http://www.ship-simu.org
+ * @link http://www.shipsimu.org
*
* 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
const EXCEPTION_INVALID_TAG = 0x160;
/**
- * Last found protocol
+ * Last found protocol instance
*/
- private $lastProtocol = 'invalid';
+ private $lastProtocol = NULL;
/**
* Last found recipient type
*
* @return $tagsInstance An instance of a Tagable class
*/
- public final static function createPackageTags () {
+ public static final function createPackageTags () {
// Get new instance
$tagsInstance = new PackageTags();
}
/**
- * Loads the XML file (our "object registry") and saves an instance for faster re-use
+ * Loads the XML file (our "object registry") and saves an instance for
+ * faster re-use.
*
* @return void
*/
private function initObjectRegistry () {
// Output debug message
- $this->debugOutput('TAGS: Initializing object registry - START');
+ self::createDebugInstance(__CLASS__)->debugOutput('TAGS[' . __METHOD__ . ':' . __LINE__ . ']: Initializing object registry - START');
// Get the application instance
- $appInstance = Registry::getRegistry()->getInstance('app');
+ $applicationInstance = Registry::getRegistry()->getInstance('app');
// Get a XML template instance
- $templateInstance = ObjectFactory::createObjectByConfiguredName('object_registry_template_class', array($appInstance));
-
- // Disable language support
- $templateInstance->enableLanguageSupport(false);
-
- /*
- * Enable compacting/rewriting of the XML to save bandwidth from XML
- * comments. This is expensive and should be avoided in general.
- */
- $templateInstance->enableXmlCompacting();
+ $templateInstance = XmlTemplateEngineFactory::createXmlTemplateEngineInstance('node_object_registry_template_class');
// Set it for later use
$this->setTemplateInstance($templateInstance);
// Read the XML file
- $this->getTemplateInstance()->loadObjectRegistryTemplate('object_registry');
+ $this->getTemplateInstance()->loadXmlTemplate();
// Render the XML content
$this->getTemplateInstance()->renderXmlContent();
// Output debug message
- $this->debugOutput('TAGS: Initializing object registry - FINISHED');
+ self::createDebugInstance(__CLASS__)->debugOutput('TAGS[' . __METHOD__ . ':' . __LINE__ . ']: Initializing object registry - FINISHED');
}
/**
* We take a look at the tags (in most cases only one is needed) so
* first we need the content data splitted up into all it's parts.
*/
- $contentData = explode(NetworkPackage::PACKAGE_MASK_SEPERATOR, $packageData['content']);
+ $contentData = explode(NetworkPackage::PACKAGE_MASK_SEPARATOR, $packageData[NetworkPackage::PACKAGE_DATA_CONTENT]);
// Get the tags and store them locally
- $this->setTags(explode(NetworkPackage::PACKAGE_TAGS_SEPERATOR, $contentData[NetworkPackage::INDEX_TAGS]));
+ $this->setTags(explode(NetworkPackage::PACKAGE_TAGS_SEPARATOR, $contentData[NetworkPackage::INDEX_TAGS]));
}
/**
*/
private function verifyAllTags () {
// Get the registry
- $objectRegistryInstance = ObjectFactory::createObjectByConfiguredName('object_type_registry_class');
+ $objectRegistryInstance = ObjectTypeRegistryFactory::createObjectTypeRegistryInstance();
// "Walk" over all tags
foreach ($this->getTags() as $tag) {
// Debug output
- $this->debugOutput('TAGS: Validating tag ' . $tag . ' ...');
+ self::createDebugInstance(__CLASS__)->debugOutput('TAGS[' . __METHOD__ . ':' . __LINE__ . ']: Validating tag ' . $tag . ' ...');
// Get an array from this tag
- $entry = $objectRegistryInstance->getArrayFromKey($tag);
+ $entry = $objectRegistryInstance->getArrayFromKey(XmlObjectRegistryTemplateEngine::OBJECT_TYPE_DATA_NAME, $tag);
// If the array is empty, the entry is invalid!
- if (count($entry) == 0) {
+ if ((count($entry) == 0) || (!isset($entry[XmlObjectRegistryTemplateEngine::OBJECT_TYPE_DATA_PROTOCOL])) || (!isset($entry[XmlObjectRegistryTemplateEngine::OBJECT_TYPE_DATA_RECIPIENT_TYPE]))) {
// Invalid entry found
throw new InvalidTagException(array($this, $tag), self::EXCEPTION_INVALID_TAG);
} // END - if
// Now save the last discovered protocol/recipient type
- $this->lastProtocol = $entry['object-protocol'];
- $this->lastRecipientType = $entry['object-recipient-type'];
+ $this->lastProtocol = ProtocolHandlerFactory::createProtocolHandlerFromArray($entry);
+ $this->lastRecipientType = $entry[XmlObjectRegistryTemplateEngine::OBJECT_TYPE_DATA_RECIPIENT_TYPE];
} // END - foreach
}
* Chooses the right protocol from given package data
*
* @param $packageData Raw package data
- * @return $protocolName Name of the choosen procotol
+ * @return $lastProtocol An instance of the last used ProtocolHandler class
*/
public function chooseProtocolFromPackageData (array $packageData) {
// Extract the tags
// Now we need to verify every single tag
$this->verifyAllTags();
- // Use the last found protocol for transmission
- $protocolName = $this->lastProtocol;
-
// Return it
- return $protocolName;
+ return $this->lastProtocol;
}
/**
- * Checks wether the given package data is accepted by the listener
+ * Checks whether the given package data is accepted by the listener
*
* @param $packageData Raw package data
* @param $listenerInstance A Listenable instance
- * @return $accepts Wether it is accepted
+ * @return $accepts Whether it is accepted
*/
public function ifPackageDataIsAcceptedByListener (array $packageData, Listenable $listenerInstance) {
// Extract the tags