Author: grobmeier
Date: Wed Aug 19 06:51:47 2009
New Revision: 805681

URL: http://svn.apache.org/viewvc?rev=805681&view=rev
Log:
extracted pool from LoggerAppender for better readability and possible 
reusability. Improved Appender instantiation

Added:
    incubator/log4php/trunk/src/main/php/LoggerAppenderPool.php
Modified:
    incubator/log4php/trunk/src/main/php/Logger.php
    incubator/log4php/trunk/src/main/php/LoggerAppender.php
    incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderEcho.php
    incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderFile.php
    incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderMail.php
    incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderMailEvent.php
    incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderNull.php
    incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderPDO.php
    incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderPhp.php
    incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderRollingFile.php
    incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderSyslog.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

Modified: incubator/log4php/trunk/src/main/php/Logger.php
URL: 
http://svn.apache.org/viewvc/incubator/log4php/trunk/src/main/php/Logger.php?rev=805681&r1=805680&r2=805681&view=diff
==============================================================================
--- incubator/log4php/trunk/src/main/php/Logger.php (original)
+++ incubator/log4php/trunk/src/main/php/Logger.php Wed Aug 19 06:51:47 2009
@@ -65,6 +65,7 @@
                'LoggerConfiguratorXml' => 
'/configurators/LoggerConfiguratorXml.php',
                'LoggerRoot' => '/LoggerRoot.php',
                'LoggerAppender' => '/LoggerAppender.php',
+               'LoggerAppenderPool' => '/LoggerAppenderPool.php',
                'LoggerAppenderAdodb' => '/appenders/LoggerAppenderAdodb.php',
                'LoggerAppenderPDO' => '/appenders/LoggerAppenderPDO.php',
                'LoggerAppenderConsole' => 
'/appenders/LoggerAppenderConsole.php',

Modified: incubator/log4php/trunk/src/main/php/LoggerAppender.php
URL: 
http://svn.apache.org/viewvc/incubator/log4php/trunk/src/main/php/LoggerAppender.php?rev=805681&r1=805680&r2=805681&view=diff
==============================================================================
--- incubator/log4php/trunk/src/main/php/LoggerAppender.php (original)
+++ incubator/log4php/trunk/src/main/php/LoggerAppender.php Wed Aug 19 06:51:47 
2009
@@ -68,53 +68,12 @@
         *
         * @param string $name appender name
         */
-       public function __construct($name) {
+       public function __construct($name = '') {
                $this->name = $name;
                $this->clearFilters();
        }
 
        /**
-        * Factory
-        *
-        * @param string $name appender name
-        * @param string $class create an instance of this appender class
-        * @return LoggerAppender
-        */
-       public static function factory($name, $class) {
-               $class = basename($class);
-               if(!empty($class)) {
-                       return new $class($name);
-               }
-               return null;
-       }
-
-       /**
-        * Singleton
-        *
-        * @param string $name appender name
-        * @param string $class create or get a reference instance of this class
-        * @return LoggerAppender 
-        */
-       public static function singleton($name, $class = '') {
-               static $instances;
-               
-               if(!empty($name)) {
-                       if(!isset($instances[$name])) {
-                               if(!empty($class)) {
-                                       $appender = self::factory($name, 
$class);
-                                       if($appender !== null) { 
-                                               $instances[$name] = $appender;
-                                               return $instances[$name];
-                                       }
-                               }
-                               return null;
-                       }
-                       return $instances[$name];                               
 
-               }                
-               return null;            
-       }
-
-       /**
         * Add a filter to the end of the filter list.
         *
         * @param LoggerFilter $newFilter add a new LoggerFilter

Added: incubator/log4php/trunk/src/main/php/LoggerAppenderPool.php
URL: 
http://svn.apache.org/viewvc/incubator/log4php/trunk/src/main/php/LoggerAppenderPool.php?rev=805681&view=auto
==============================================================================
--- incubator/log4php/trunk/src/main/php/LoggerAppenderPool.php (added)
+++ incubator/log4php/trunk/src/main/php/LoggerAppenderPool.php Wed Aug 19 
06:51:47 2009
@@ -0,0 +1,54 @@
+<?php
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+/**
+ * Pool implmentation for LoggerAppender instances
+ *
+ * @version $Revision: 795727 $
+ * @package log4php
+ */
+class LoggerAppenderPool {
+       /* Appender Pool */
+       public static $appenderPool =  null;
+       
+       /**
+        * 
+        *
+        * @param string $name 
+        * @param string $class 
+        * @return LoggerAppender
+        */
+       public static function getAppenderFromPool($name, $class = '') {
+               if(isset(self::$appenderPool[$name])) {
+                       return self::$appenderPool[$name];
+               }
+               
+               if(empty($class)) {
+                       return null;
+               }
+               
+               $appender = LoggerReflectionUtils::createObject($class);
+               $appender->setName($name);
+               if($appender !== null) { 
+                       self::$appenderPool[$name] = $appender;
+                       return self::$appenderPool[$name];
+               }
+               return null;            
+       }
+}

Modified: incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderEcho.php
URL: 
http://svn.apache.org/viewvc/incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderEcho.php?rev=805681&r1=805680&r2=805681&view=diff
==============================================================================
--- incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderEcho.php 
(original)
+++ incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderEcho.php Wed 
Aug 19 06:51:47 2009
@@ -33,7 +33,7 @@
        /** boolean used internally to mark first append */
        private $firstAppend = true;
        
-       public function __construct($name) {
+       public function __construct($name = '') {
            parent::__construct($name);
            $this->requiresLayout = true;
            $this->firstAppend = true;

Modified: incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderFile.php
URL: 
http://svn.apache.org/viewvc/incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderFile.php?rev=805681&r1=805680&r2=805681&view=diff
==============================================================================
--- incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderFile.php 
(original)
+++ incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderFile.php Wed 
Aug 19 06:51:47 2009
@@ -45,7 +45,7 @@
         */
        protected $fp = false;
        
-       public function __construct($name) {
+       public function __construct($name = '') {
                parent::__construct($name);
                $this->requiresLayout = true;
        }

Modified: incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderMail.php
URL: 
http://svn.apache.org/viewvc/incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderMail.php?rev=805681&r1=805680&r2=805681&view=diff
==============================================================================
--- incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderMail.php 
(original)
+++ incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderMail.php Wed 
Aug 19 06:51:47 2009
@@ -58,7 +58,7 @@
         *
         * @param string $name appender name
         */
-       public function __construct($name) {
+       public function __construct($name = '') {
                parent::__construct($name);
                                $this->requiresLayout = true;
        }

Modified: 
incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderMailEvent.php
URL: 
http://svn.apache.org/viewvc/incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderMailEvent.php?rev=805681&r1=805680&r2=805681&view=diff
==============================================================================
--- incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderMailEvent.php 
(original)
+++ incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderMailEvent.php 
Wed Aug 19 06:51:47 2009
@@ -72,7 +72,7 @@
         *
         * @param string $name appender name
         */
-       public function __construct($name) {
+       public function __construct($name = '') {
                parent::__construct($name);
        }
 

Modified: incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderNull.php
URL: 
http://svn.apache.org/viewvc/incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderNull.php?rev=805681&r1=805680&r2=805681&view=diff
==============================================================================
--- incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderNull.php 
(original)
+++ incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderNull.php Wed 
Aug 19 06:51:47 2009
@@ -31,10 +31,6 @@
 
        protected $requiresLayout = false;
        
-       public function __construct($name) {
-           parent::__construct($name);
-       }
-       
        public function activateOptions() {
                $this->closed = false;
        }

Modified: incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderPDO.php
URL: 
http://svn.apache.org/viewvc/incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderPDO.php?rev=805681&r1=805680&r2=805681&view=diff
==============================================================================
--- incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderPDO.php 
(original)
+++ incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderPDO.php Wed 
Aug 19 06:51:47 2009
@@ -57,7 +57,7 @@
      * This apender doesn't require a layout.
      * @param string $name appender name
      */
-    public function __construct($name) {
+    public function __construct($name = '') {
         parent::__construct($name);
         $this->requiresLayout = false;
     }

Modified: incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderPhp.php
URL: 
http://svn.apache.org/viewvc/incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderPhp.php?rev=805681&r1=805680&r2=805681&view=diff
==============================================================================
--- incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderPhp.php 
(original)
+++ incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderPhp.php Wed 
Aug 19 06:51:47 2009
@@ -31,7 +31,7 @@
  */ 
 class LoggerAppenderPhp extends LoggerAppender {
 
-       public function __construct($name) {
+       public function __construct($name = '') {
                parent::__construct($name);
                $this->requiresLayout = true;
        }

Modified: 
incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderRollingFile.php
URL: 
http://svn.apache.org/viewvc/incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderRollingFile.php?rev=805681&r1=805680&r2=805681&view=diff
==============================================================================
--- 
incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderRollingFile.php 
(original)
+++ 
incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderRollingFile.php 
Wed Aug 19 06:51:47 2009
@@ -70,15 +70,6 @@
        private $expandedFileName = null;
 
        /**
-        * Constructor.
-        *
-        * @param string $name appender name
-        */
-       public function __construct($name) {
-               parent::__construct($name);
-       }
-       
-       /**
         * Returns the value of the MaxBackupIndex option.
         * @return integer 
         */

Modified: 
incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderSyslog.php
URL: 
http://svn.apache.org/viewvc/incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderSyslog.php?rev=805681&r1=805680&r2=805681&view=diff
==============================================================================
--- incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderSyslog.php 
(original)
+++ incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderSyslog.php Wed 
Aug 19 06:51:47 2009
@@ -73,7 +73,7 @@
         */
        private $_overridePriority;
 
-       public function __construct($name) {
+       public function __construct($name = '') {
                parent::__construct($name);
                $this->requiresLayout = true;
        }

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=805681&r1=805680&r2=805681&view=diff
==============================================================================
--- 
incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorIni.php 
(original)
+++ 
incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorIni.php 
Wed Aug 19 06:51:47 2009
@@ -413,8 +413,8 @@
                        }
                }
 
-               // Begin by removing all existing appenders.
-               $logger->removeAllAppenders();
+               // TODO: removing should be done by the logger, if necessary 
and wanted 
+               // $logger->removeAllAppenders();
                while($appenderName = next($st)) {
                        $appenderName = trim($appenderName);
                        if(empty($appenderName)) {
@@ -434,25 +434,19 @@
         * @return LoggerAppender
         */
        private function parseAppender($props, $appenderName) {
-               $appender = LoggerAppender::singleton($appenderName);
-               if($appender !== null) {
-                       return $appender;
-               }
-               // Appender was not previously initialized.
+               $appender = 
LoggerAppenderPool::getAppenderFromPool($appenderName);
                $prefix = self::APPENDER_PREFIX . $appenderName;
-               $layoutPrefix = $prefix . ".layout";
-               $appenderClass = @$props[$prefix];
-               if(!empty($appenderClass)) {
-                       $appender = LoggerAppender::singleton($appenderName, 
$appenderClass);
+               if($appender === null) {
+                       // Appender was not previously initialized.
+                       $appenderClass = @$props[$prefix];
+                       $appender = 
LoggerAppenderPool::getAppenderFromPool($appenderName, $appenderClass);
                        if($appender === null) {
                                return null;
                        }
-               } else {
-                       return null;
                }
                
-               $appender->setName($appenderName);
                if($appender->requiresLayout() ) {
+                       $layoutPrefix = $prefix . ".layout";
                        $layoutClass = @$props[$layoutPrefix];
                        $layoutClass = 
LoggerOptionConverter::substVars($layoutClass, $props);
                        if(empty($layoutClass)) {

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=805681&r1=805680&r2=805681&view=diff
==============================================================================
--- 
incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorPhp.php 
(original)
+++ 
incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorPhp.php 
Wed Aug 19 06:51:47 2009
@@ -74,7 +74,7 @@
                        
                        foreach($config['appenders'] as $appenderName => 
$appenderProperties) {
                                
-                               $appender = 
LoggerAppender::singleton($appenderName, $appenderProperties['class']);
+                               $appender = 
LoggerAppenderPool::getAppenderFromPool($appenderName, 
$appenderProperties['class']);
                                
                                if($appender->requiresLayout()) {
                                        
@@ -114,7 +114,7 @@
                                
$rootLogger->setLevel(LoggerOptionConverter::toLevel($config['rootLogger']['level'],
 LoggerLevel::getLevelDebug()));
                                if(isset($config['rootLogger']['appenders'])) {
                                        
foreach($config['rootLogger']['appenders'] as $appenderName) {
-                                               $appender = 
LoggerAppender::singleton($appenderName);
+                                               $appender = 
LoggerAppenderPool::getAppenderFromPool($appenderName);
                                                if($appender !== null) {
                                                        
$rootLogger->addAppender($appender);
                                                }
@@ -133,7 +133,7 @@
                                                
$logger->setLevel(LoggerOptionConverter::toLevel($loggerProperties['level'], 
LoggerLevel::getLevelDebug()));
                                                
if(isset($loggerProperties['appenders'])) {
                                                        
foreach($loggerProperties['appenders'] as $appenderName) {
-                                                               $appender = 
LoggerAppender::singleton($appenderName);
+                                                               $appender = 
LoggerAppenderPool::getAppenderFromPool($appenderName);
                                                                if($appender 
!== null) {
                                                                        
$logger->addAppender($appender);
                                                                }

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=805681&r1=805680&r2=805681&view=diff
==============================================================================
--- 
incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorXml.php 
(original)
+++ 
incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorXml.php 
Wed Aug 19 06:51:47 2009
@@ -218,7 +218,7 @@
                 $name  = $this->subst(@$attribs['NAME']);
                 $class = $this->subst(@$attribs['CLASS']);
                 
-                $this->appender = LoggerAppender::singleton($name, $class);
+                $this->appender = 
LoggerAppenderPool::getAppenderFromPool($name, $class);
                 $this->state[] = self::APPENDER_STATE;
                 break;
                 
@@ -229,7 +229,7 @@
                 if (isset($attribs['REF']) and !empty($attribs['REF'])) {
                     $appenderName = $this->subst($attribs['REF']);
                     
-                    $appender = LoggerAppender::singleton($appenderName);
+                    $appender = 
LoggerAppenderPool::getAppenderFromPool($appenderName);
                     if ($appender !== null) {
                         switch (end($this->state)) {
                             case self::LOGGER_STATE:


Reply via email to