Continued:
[core.git] / application / tests / class_ApplicationHelper.php
index c82b00d63e5c293995ce90881412b2977fefa2c8..161f9fc2faa71748d86fbf8bc26f91236918520d 100644 (file)
@@ -1,14 +1,17 @@
 <?php
-// Own namespace
-namespace CoreFramework\Helper\Application;
+// Must be this namespace, else the launcher cannot find the class.
+namespace Org\Mxchange\CoreFramework\Helper\Application;
 
 // Import framework stuff
-use CoreFramework\Manager\ManageableApplication;
-use CoreFramework\Object\BaseFrameworkSystem;
-use CoreFramework\Factory\ObjectFactory;
-use CoreFramework\Registry\Registerable;
-use CoreFramework\Registry\Generic\Registry;
-use CoreFramework\Template\CompileableTemplate;
+use Org\Mxchange\CoreFramework\Application\BaseApplication;
+use Org\Mxchange\CoreFramework\Bootstrap\FrameworkBootstrap;
+use Org\Mxchange\CoreFramework\Factory\Object\ObjectFactory;
+use Org\Mxchange\CoreFramework\Loader\ClassLoader;
+use Org\Mxchange\CoreFramework\Manager\ManageableApplication;
+use Org\Mxchange\CoreFramework\Middleware\Debug\DebugMiddleware;
+use Org\Mxchange\CoreFramework\Registry\Registerable;
+use Org\Mxchange\CoreFramework\Template\CompileableTemplate;
+use Org\Mxchange\CoreFramework\Utils\Strings\StringUtils;
 
 /**
  * A class holding general data about the application and some methods for
@@ -33,7 +36,7 @@ use CoreFramework\Template\CompileableTemplate;
  *
  * @author             Roland Haeder <webmaster@shipsimu.org>
  * @version            0.0
- * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2017 Core Developer Team
+ * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2023 Core Developer Team
  * @license            GNU GPL 3.0 or any newer version
  *
  * This program is free software: you can redistribute it and/or modify
@@ -49,33 +52,13 @@ use CoreFramework\Template\CompileableTemplate;
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-class ApplicationHelper extends BaseFrameworkSystem implements ManageableApplication, Registerable {
-       /**
-        * The version number of this application
-        */
-       private $appVersion = '';
-
-       /**
-        * The human-readable name for this application
-        */
-       private $appName = '';
-
-       /**
-        * The short uni*-like name for this application
-        */
-       private $shortName = '';
-
-       /**
-        * An instance of this class
-        */
-       private static $selfInstance = NULL;
-
+class ApplicationHelper extends BaseApplication implements ManageableApplication, Registerable {
        /**
         * Private constructor
         *
         * @return      void
         */
-       protected function __construct () {
+       private function __construct () {
                // Call parent constructor
                parent::__construct(__CLASS__);
        }
@@ -87,105 +70,52 @@ class ApplicationHelper extends BaseFrameworkSystem implements ManageableApplica
         */
        public static final function getSelfInstance () {
                // Is the instance there?
-               if (is_null(self::$selfInstance)) {
-                       self::$selfInstance = new ApplicationHelper();
-               } // END - if
+               if (is_null(self::getApplicationInstance())) {
+                       // Then set it
+                       self::setApplicationInstance(new ApplicationHelper());
+               }
 
                // Return the instance
-               return self::$selfInstance;
+               return self::getApplicationInstance();
        }
 
        /**
-        * Getter for the version number
+        * 1) Setups application data
         *
-        * @return      $appVersion     The application's version number
-        */
-       public final function getAppVersion () {
-               return $this->appVersion;
-       }
-       /**
-        * Setter for the version number
-        *
-        * @param       $appVersion     The application's version number
         * @return      void
         */
-       public final function setAppVersion ($appVersion) {
-               // Cast and set it
-               $this->appVersion = (string) $appVersion;
-       }
-
-       /**
-        * Getter for human-readable name
-        *
-        * @return      $appName        The application's human-readable name
-        */
-       public final function getAppName () {
-               return $this->appName;
+       public function setupApplicationData () {
+               // Set all application data
+               $this->setAppName('Unit tests and more');
+               $this->setAppVersion('0.0.0');
+               $this->setAppShortName('tests');
        }
 
        /**
-        * Setter for human-readable name
+        * 2) Does initial stuff before starting the application
         *
-        * @param       $appName        The application's human-readable name
         * @return      void
         */
-       public final function setAppName ($appName) {
-               // Cast and set it
-               $this->appName = (string) $appName;;
-       }
+       public function initApplication () {
+               // Initialize output system
+               self::createDebugInstance('ApplicationHelper');
 
-       /**
-        * Getter for short uni*-like name
-        *
-        * @return      $shortName      The application's short uni*-like name
-        */
-       public final function getAppShortName () {
-               return $this->shortName;
+               /*
+                * This application needs a database connection then simply call init
+                * method.
+                */
+               FrameworkBootstrap::initDatabaseInstance();
        }
 
        /**
-        * Setter for short uni*-like name
+        * 3) Launches the application
         *
-        * @param       $shortName      The application's short uni*-like name
         * @return      void
         */
-       public final function setAppShortName ($shortName) {
-               // Cast and set it
-               $this->shortName = (string) $shortName;
-       }
-
-       /**
-        * Launches the test suite
-        *
-        * @return      void
-        */
-       public final function entryPoint () {
-               // Set this application in registry
-               Registry::getRegistry()->addInstance('app', $this);
-
-               // Default response is console
-               $response = self::getResponseTypeFromSystem();
-               $responseType = self::getResponseTypeFromSystem();
-
-               // Create a new request object
-               $requestInstance = ObjectFactory::createObjectByName(sprintf('CoreFramework\Request\%sRequest', self::convertToClassName($response)));
-
-               // Remember request instance here
-               $this->setRequestInstance($requestInstance);
-
-               // Do we have another response?
-               if ($requestInstance->isRequestElementSet('request')) {
-                       // Then use it
-                       $response = strtolower($requestInstance->getRequestElement('request'));
-                       $responseType = $response;
-               } // END - if
-
-               // ... and a new response object
-               $responseClass = sprintf('CoreFramework\Response\%sResponse', self::convertToClassName($response));
-               $responseInstance = ObjectFactory::createObjectByName($responseClass, array($this));
-
-               // Remember response instance here
-               $this->setResponseInstance($responseInstance);
+       public function launchApplication () {
+               // Get request/response instances
+               $requestInstance  = FrameworkBootstrap::getRequestInstance();
+               $responseInstance = FrameworkBootstrap::getResponseInstance();
 
                // Get the parameter from the request
                $commandName = $requestInstance->getRequestElement('command');
@@ -197,18 +127,19 @@ class ApplicationHelper extends BaseFrameworkSystem implements ManageableApplica
 
                        // Set it in request
                        $requestInstance->setRequestElement('command', $commandName);
-               } // END - if
+               }
 
-               // Get a controller resolver
-               $resolverClass = sprintf(
-                       'CoreFramework\Tests\Resolver\Controller\%s',
-                       self::convertToClassName(sprintf(
-                               '%s_%s_controller_resolver',
-                               $this->getAppShortName(),
-                               $responseType
-                       ))
+               // Configuration entry key
+               $configEntry = sprintf(
+                       '%s_%s_controller_resolver_class',
+                       $this->getAppShortName(),
+                       FrameworkBootstrap::getRequestTypeFromSystem()
                );
-               $resolverInstance = ObjectFactory::createObjectByName($resolverClass, array($commandName, $this));
+
+               // Get a controller resolver instance
+               $resolverInstance = ObjectFactory::createObjectByConfiguredName($configEntry, [
+                       $commandName,
+               ]);
 
                // Get a controller instance as well
                $this->setControllerInstance($resolverInstance->resolveController());
@@ -217,11 +148,9 @@ class ApplicationHelper extends BaseFrameworkSystem implements ManageableApplica
                $this->getControllerInstance()->handleRequest($requestInstance, $responseInstance);
 
                // -------------------------- Shutdown phase --------------------------
-               // Shutting down the hub by saying "good bye" to all connected peers
-               // and other hubs, flushing all queues and caches.
-               self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('MAIN: Shutdown in progress, main loop exited.');
+               self::createDebugInstance(__CLASS__, __LINE__)->debugMessage('MAIN: Shutdown in progress ...');
                $this->getControllerInstance()->executeShutdownFilters($requestInstance, $responseInstance);
-               self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('MAIN: Shutdown completed. (This is the last line.)');
+               self::createDebugInstance(__CLASS__, __LINE__)->traceMessage('MAIN: Shutdown completed. (This is the last line.)');
        }
 
        /**
@@ -235,7 +164,7 @@ class ApplicationHelper extends BaseFrameworkSystem implements ManageableApplica
                // Walk through all messages
                foreach ($messageList as $message) {
                        exit(__METHOD__ . ':MSG:' . $message);
-               } // END - foreach
+               }
        }
 
        /**
@@ -244,18 +173,18 @@ class ApplicationHelper extends BaseFrameworkSystem implements ManageableApplica
         * @return      $masterTemplateName             Name of the master template
         */
        public function buildMasterTemplateName () {
-               return 'node_main';
+               return 'tests_main';
        }
 
        /**
         * Assigns extra application-depending data
         *
-        * @param       $templateInstance       An instance of a CompileableTemplate
+        * @param       $templateInstance       An instance of a CompileableTemplate class
         * @return      void
         * @todo        Nothing to add?
         */
        public function assignExtraTemplateData (CompileableTemplate $templateInstance) {
-               $this->partialStub('Unfinished method. templateInstance=' . $templateInstance->__toString());
+               DebugMiddleware::getSelfInstance()->partialStub('Unfinished method. templateInstance=' . $templateInstance->__toString());
        }
 
 }