Author: grobmeier
Date: Mon Aug 17 06:14:42 2009
New Revision: 804867

URL: http://svn.apache.org/viewvc?rev=804867&view=rev
Log:
Refined initialization procedure. LoggerHierarchy is now injected into 
Configurator classes.

Modified:
    incubator/log4php/trunk/src/main/php/Logger.php
    incubator/log4php/trunk/src/main/php/LoggerConfigurator.php
    
incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorBasic.php
    incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorIni.php
    incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorPhp.php
    incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorXml.php
    incubator/log4php/trunk/src/test/php/LoggerTest.php
    
incubator/log4php/trunk/src/test/php/configurators/LoggerConfiguratorBasicTest.php
    
incubator/log4php/trunk/src/test/php/configurators/LoggerConfiguratorIniTest.php
    
incubator/log4php/trunk/src/test/php/configurators/LoggerConfiguratorPhpTest.php
    
incubator/log4php/trunk/src/test/php/configurators/LoggerConfiguratorXmlTest.php

Modified: incubator/log4php/trunk/src/main/php/Logger.php
URL: 
http://svn.apache.org/viewvc/incubator/log4php/trunk/src/main/php/Logger.php?rev=804867&r1=804866&r2=804867&view=diff
==============================================================================
--- incubator/log4php/trunk/src/main/php/Logger.php (original)
+++ incubator/log4php/trunk/src/main/php/Logger.php Mon Aug 17 06:14:42 2009
@@ -161,6 +161,14 @@
        
        private static $hierarchy;
        
+       /**
+        * Returns the hierarchy used by this Logger.
+        * Caution: do not use this hierarchy unless you have called 
initialize().
+        * To get Loggers, use the Logger::getLogger and Logger::getRootLogger 
methods
+        * instead of operating on on the hierarchy directly.
+        * 
+        * @deprecated - will be moved to private
+        */
        public static function getHierarchy() {
                if(!isset(self::$hierarchy)) {
                        self::$hierarchy = new LoggerHierarchy(new 
LoggerRoot());
@@ -356,7 +364,11 @@
         * @return boolean 
         */
        public static function resetConfiguration() {
-               return self::getHierarchy()->resetConfiguration();       
+               $result = self::getHierarchy()->resetConfiguration();
+               self::$initialized = false;
+               self::$configurationClass = 'LoggerConfiguratorBasic';
+               self::$configurationFile = null;
+               return $result;  
        }
 
        /**
@@ -389,6 +401,9 @@
         * @static 
         */        
        public static function getRootLogger() {
+               if(!self::isInitialized()) {
+                       self::initialize();
+               }
                return self::getHierarchy()->getRootLogger();     
        }
        
@@ -594,13 +609,12 @@
        
        /**
         * Initializes the log4php framework.
-        * TODO: clean up
         * @return boolean
         */
        public static function initialize() {
-               $configuratorClass = basename(self::$configurationClass);       
-               $result =  call_user_func(array($configuratorClass, 
'configure'), self::$configurationFile);
                self::$initialized = true;
+               $instance = 
LoggerReflectionUtils::createObject(self::$configurationClass);
+               $result = $instance->configure(self::getHierarchy(), 
self::$configurationFile);
                return $result;
        }
 }

Modified: incubator/log4php/trunk/src/main/php/LoggerConfigurator.php
URL: 
http://svn.apache.org/viewvc/incubator/log4php/trunk/src/main/php/LoggerConfigurator.php?rev=804867&r1=804866&r2=804867&view=diff
==============================================================================
--- incubator/log4php/trunk/src/main/php/LoggerConfigurator.php (original)
+++ incubator/log4php/trunk/src/main/php/LoggerConfigurator.php Mon Aug 17 
06:14:42 2009
@@ -47,6 +47,6 @@
         *
         * @param string $url The URL to parse
         */
-       public static function configure($url = null);
+       public function configure(LoggerHierarchy $hierarchy, $url = null);
        
 }

Modified: 
incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorBasic.php
URL: 
http://svn.apache.org/viewvc/incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorBasic.php?rev=804867&r1=804866&r2=804867&view=diff
==============================================================================
--- 
incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorBasic.php 
(original)
+++ 
incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorBasic.php 
Mon Aug 17 06:14:42 2009
@@ -35,8 +35,8 @@
         * 
         * @param string $url not used here
         */
-       public static function configure($url = null) {
-               $root = Logger::getRootLogger();
+       public function configure(LoggerHierarchy $hierarchy, $url = null) {
+               $root = $hierarchy->getRootLogger();
                $appender = new LoggerAppenderConsole('A1');
                $appender->setLayout( new LoggerLayoutTTCC() );
                $appender->activateOptions();

Modified: 
incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorIni.php
URL: 
http://svn.apache.org/viewvc/incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorIni.php?rev=804867&r1=804866&r2=804867&view=diff
==============================================================================
--- 
incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorIni.php 
(original)
+++ 
incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorIni.php 
Mon Aug 17 06:14:42 2009
@@ -99,10 +99,8 @@
         * @return boolean configuration result
         * @static
         */
-       public static function configure($url = '') {
-               $configurator = new LoggerConfiguratorIni();
-               $repository = Logger::getLoggerRepository();
-               return $configurator->doConfigure($url, $repository);
+       public function configure(LoggerHierarchy $hierarchy, $url = '') {
+               return $this->doConfigure($url, $hierarchy);
        }
 
        /**

Modified: 
incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorPhp.php
URL: 
http://svn.apache.org/viewvc/incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorPhp.php?rev=804867&r1=804866&r2=804867&view=diff
==============================================================================
--- 
incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorPhp.php 
(original)
+++ 
incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorPhp.php 
Mon Aug 17 06:14:42 2009
@@ -56,10 +56,8 @@
  */
 class LoggerConfiguratorPhp implements LoggerConfigurator {
        
-       public static function configure($url = '') {
-               $configurator = new self();
-               $hierarchy = Logger::getLoggerRepository();
-               return $configurator->doConfigure($url, $hierarchy);
+       public function configure(LoggerHierarchy $hierarchy, $url = '') {
+               return $this->doConfigure($url, $hierarchy);
        }
        
        private function doConfigure($url, LoggerHierarchy $hierarchy) {

Modified: 
incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorXml.php
URL: 
http://svn.apache.org/viewvc/incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorXml.php?rev=804867&r1=804866&r2=804867&view=diff
==============================================================================
--- 
incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorXml.php 
(original)
+++ 
incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorXml.php 
Mon Aug 17 06:14:42 2009
@@ -119,10 +119,8 @@
      * @param string $url
      * @static
      */
-    public static function configure($url = '') {
-       $configurator = new self(); 
-        $repository = Logger::getLoggerRepository();
-        return $configurator->doConfigure($url, $repository);
+    public function configure(LoggerHierarchy $hierarchy, $url = '') {
+        return $this->doConfigure($url, $hierarchy);
     }
     
     /**

Modified: incubator/log4php/trunk/src/test/php/LoggerTest.php
URL: 
http://svn.apache.org/viewvc/incubator/log4php/trunk/src/test/php/LoggerTest.php?rev=804867&r1=804866&r2=804867&view=diff
==============================================================================
--- incubator/log4php/trunk/src/test/php/LoggerTest.php (original)
+++ incubator/log4php/trunk/src/test/php/LoggerTest.php Mon Aug 17 06:14:42 2009
@@ -52,7 +52,7 @@
        }
        
        public function testCanLogToAllLevels() {
-               LoggerConfiguratorIni::configure('LoggerTest.properties');
+               Logger::configure('LoggerTest.properties');
                
                $logger = Logger::getLogger('mylogger');
                ob_start();
@@ -75,7 +75,7 @@
        }
        
        public function testIsEnabledFor() {
-               LoggerConfiguratorIni::configure('LoggerTest.properties');
+               Logger::configure('LoggerTest.properties');
                
                $logger = Logger::getLogger('mylogger');
                
@@ -94,13 +94,15 @@
                
                self::assertEquals(0, count(Logger::getCurrentLoggers()));
                
-               LoggerConfiguratorIni::configure('LoggerTest.properties');
+               Logger::configure('LoggerTest.properties');
+               Logger::initialize();
                self::assertEquals(1, count(Logger::getCurrentLoggers()));
                $list = Logger::getCurrentLoggers();
                self::assertEquals('mylogger', $list[0]->getName());
        }
        
        public function testConfigure() {
+               Logger::resetConfiguration();
                Logger::configure();
                self::assertEquals('LoggerConfiguratorBasic', 
Logger::getConfigurationClass());
                self::assertEquals(null, Logger::getConfigurationFile());

Modified: 
incubator/log4php/trunk/src/test/php/configurators/LoggerConfiguratorBasicTest.php
URL: 
http://svn.apache.org/viewvc/incubator/log4php/trunk/src/test/php/configurators/LoggerConfiguratorBasicTest.php?rev=804867&r1=804866&r2=804867&view=diff
==============================================================================
--- 
incubator/log4php/trunk/src/test/php/configurators/LoggerConfiguratorBasicTest.php
 (original)
+++ 
incubator/log4php/trunk/src/test/php/configurators/LoggerConfiguratorBasicTest.php
 Mon Aug 17 06:14:42 2009
@@ -26,7 +26,6 @@
 class LoggerConfiguratorBasicTest extends PHPUnit_Framework_TestCase {
         
        protected function setUp() {
-           LoggerConfiguratorBasic::configure();
        }
         
        protected function tearDown() {
@@ -65,14 +64,12 @@
                // from previous runs. ResetConfiguration() only clears the 
appenders, it does
                // not remove the categories!
                Logger::resetConfiguration();
-               $hierarchy = Logger::getHierarchy();
-        foreach ($hierarchy->getCurrentLoggers() as $logger) {
+        foreach (Logger::getCurrentLoggers() as $logger) {
             self::assertEquals(0, count($logger->getAllAppenders()));
         }              
 
         // This on the other hand really removes the categories:
-        $hierarchy->clear(); 
-               self::assertEquals(0, count($hierarchy->getCurrentLoggers()));
-               self::assertEquals(0, count($hierarchy->getCurrentLoggers()));
+        Logger::clear(); 
+               self::assertEquals(0, count(Logger::getCurrentLoggers()));
        }
 }

Modified: 
incubator/log4php/trunk/src/test/php/configurators/LoggerConfiguratorIniTest.php
URL: 
http://svn.apache.org/viewvc/incubator/log4php/trunk/src/test/php/configurators/LoggerConfiguratorIniTest.php?rev=804867&r1=804866&r2=804867&view=diff
==============================================================================
--- 
incubator/log4php/trunk/src/test/php/configurators/LoggerConfiguratorIniTest.php
 (original)
+++ 
incubator/log4php/trunk/src/test/php/configurators/LoggerConfiguratorIniTest.php
 Mon Aug 17 06:14:42 2009
@@ -34,29 +34,27 @@
        }
         
        public function testConfigure() {
-               
LoggerConfiguratorIni::configure('configurators/test1.properties');
-               $hierarchy = Logger::getLoggerRepository();
-               $root = $hierarchy->getRootLogger();
+               Logger::configure('configurators/test1.properties');
+               $root = Logger::getRootLogger();
                self::assertEquals(LoggerLevel::getLevelWarn(), 
$root->getLevel());
                $appender = $root->getAppender("default");
                self::assertTrue($appender instanceof LoggerAppenderEcho);
                $layout = $appender->getLayout();
                self::assertTrue($layout instanceof LoggerLayoutSimple);
                
-               $logger = $hierarchy->getLogger('mylogger');
+               $logger = Logger::getLogger('mylogger');
                self::assertEquals(LoggerLevel::getLevelInfo(), 
$logger->getLevel());
                self::assertFalse($logger->getAdditivity());
                
-               $logger2 = $hierarchy->getLogger('mylogger');
+               $logger2 = Logger::getLogger('mylogger');
                $logger2->setAdditivity(true);
                self::assertTrue($logger2->getAdditivity());
                self::assertTrue($logger->getAdditivity());
        }
        
        public function testConfigureWithRootCategory() {
-               
LoggerConfiguratorIni::configure('configurators/test3.properties');
-               $hierarchy = Logger::getLoggerRepository();
-               $root = $hierarchy->getRootLogger();
+               Logger::configure('configurators/test3.properties');
+               $root = Logger::getRootLogger();
                self::assertEquals(LoggerLevel::getLevelWarn(), 
$root->getLevel());
                $appender = $root->getAppender("default");
                self::assertTrue($appender instanceof LoggerAppenderEcho);
@@ -67,7 +65,8 @@
        public function testConfigureWithoutIniFile() {
            $catchedException = null;
            try {
-              LoggerConfiguratorIni::configure();
+              Logger::configure(null,'LoggerConfiguratorIni');
+              Logger::initialize();
               self::assertTrue(false);
            } catch (LoggerException $e) {
                $catchedException = $e;
@@ -78,7 +77,8 @@
        public function testConfigureWithEmptyIniFile() {
                $catchedException = null;
            try {
-              
LoggerConfiguratorIni::configure('configurators/test2.properties');
+              Logger::configure('configurators/test2.properties');
+              Logger::initialize();
               self::assertTrue(false);
            } catch (LoggerException $e) {
                $catchedException = $e;

Modified: 
incubator/log4php/trunk/src/test/php/configurators/LoggerConfiguratorPhpTest.php
URL: 
http://svn.apache.org/viewvc/incubator/log4php/trunk/src/test/php/configurators/LoggerConfiguratorPhpTest.php?rev=804867&r1=804866&r2=804867&view=diff
==============================================================================
--- 
incubator/log4php/trunk/src/test/php/configurators/LoggerConfiguratorPhpTest.php
 (original)
+++ 
incubator/log4php/trunk/src/test/php/configurators/LoggerConfiguratorPhpTest.php
 Mon Aug 17 06:14:42 2009
@@ -34,15 +34,14 @@
        }
        
        public function testConfigure() {
-               LoggerConfiguratorPhp::configure('configurators/test1.php');
-               $hierarchy = Logger::getLoggerRepository();
-               $root = $hierarchy->getRootLogger();
+               
Logger::configure('configurators/test1.php','LoggerConfiguratorPhp');
+               $root = Logger::getRootLogger();
                self::assertEquals(LoggerLevel::getLevelWarn(), 
$root->getLevel());
                $appender = $root->getAppender("default");
                self::assertTrue($appender instanceof LoggerAppenderEcho);
                $layout = $appender->getLayout();
                self::assertTrue($layout instanceof LoggerLayoutSimple);
-               $logger = $hierarchy->getLogger('mylogger');
+               $logger = Logger::getLogger('mylogger');
                self::assertEquals(LoggerLevel::getLevelInfo(), 
$logger->getLevel());
        }
 }

Modified: 
incubator/log4php/trunk/src/test/php/configurators/LoggerConfiguratorXmlTest.php
URL: 
http://svn.apache.org/viewvc/incubator/log4php/trunk/src/test/php/configurators/LoggerConfiguratorXmlTest.php?rev=804867&r1=804866&r2=804867&view=diff
==============================================================================
--- 
incubator/log4php/trunk/src/test/php/configurators/LoggerConfiguratorXmlTest.php
 (original)
+++ 
incubator/log4php/trunk/src/test/php/configurators/LoggerConfiguratorXmlTest.php
 Mon Aug 17 06:14:42 2009
@@ -34,16 +34,15 @@
        }
         
        public function testConfigure() {
-               LoggerConfiguratorXml::configure('configurators/test1.xml');
-               $hierarchy = Logger::getLoggerRepository();
-               $root = $hierarchy->getRootLogger();
+               Logger::configure('configurators/test1.xml');
+               $root = Logger::getRootLogger();
                self::assertEquals(LoggerLevel::getLevelWarn(), 
$root->getLevel());
                $appender = $root->getAppender("default");
                self::assertTrue($appender instanceof LoggerAppenderEcho);
                $layout = $appender->getLayout();
                self::assertTrue($layout instanceof LoggerLayoutSimple);
                
-               $logger = $hierarchy->getLogger('mylogger');
+               $logger = Logger::getLogger('mylogger');
                self::assertEquals(LoggerLevel::getLevelInfo(), 
$logger->getLevel());
        }
 }


Reply via email to