Index: src/main/php/LoggerThrowableInformation.php =================================================================== --- src/main/php/LoggerThrowableInformation.php (revision 1243264) +++ src/main/php/LoggerThrowableInformation.php (working copy) @@ -61,12 +61,8 @@ */ public function getStringRepresentation() { if (!is_array($this->throwableArray)) { - $renderer = Logger::getHierarchy()->getRendererMap()->getByClassName(get_class($this->throwable)); + $renderer = new LoggerRendererException(); - // TODO: why this? - if ($renderer instanceof LoggerRendererDefault) { - $renderer = new LoggerRendererException(); - } $this->throwableArray = explode("\n", $renderer->render($this->throwable)); } Index: src/main/php/configurators/LoggerConfiguratorDefault.php =================================================================== --- src/main/php/configurators/LoggerConfiguratorDefault.php (revision 1243264) +++ src/main/php/configurators/LoggerConfiguratorDefault.php (working copy) @@ -223,6 +223,8 @@ foreach($config['renderers'] as $rendererConfig) { $this->configureRenderer($hierarchy, $rendererConfig); } + + } } @@ -239,7 +241,7 @@ } $renderingClassInstance = new $renderingClass(); - if (!$renderingClassInstance instanceof LoggerRendererObject) { + if (!$renderingClassInstance instanceof LoggerRendererInterface) { $this->warn("Invalid class [$renderingClass] given. Not a valid LoggerRenderer class. Skipping renderers definition."); return; } @@ -250,11 +252,11 @@ } $renderedClass = $config['renderedClass']; - if (!class_exists($renderedClass)) { + if (!class_exists($renderedClass) && $renderedClass != 'Object') { $this->warn("Nonexistant rendered class [$renderedClass] specified for renderer [$renderingClass]. Skipping renderers definition."); return; - } - + } + $hierarchy->getRendererMap()->addRenderer($renderedClass, $renderingClassInstance); } Index: src/main/php/renderers/LoggerRendererDefault.php =================================================================== --- src/main/php/renderers/LoggerRendererDefault.php (revision 1243264) +++ src/main/php/renderers/LoggerRendererDefault.php (working copy) @@ -37,7 +37,7 @@ * @subpackage renderers * @since 0.3 */ -class LoggerRendererDefault implements LoggerRendererObject { +class LoggerRendererDefault implements LoggerRendererInterface { /** * Render objects by type casting Index: src/main/php/renderers/LoggerRendererObject.php =================================================================== --- src/main/php/renderers/LoggerRendererObject.php (revision 1243264) +++ src/main/php/renderers/LoggerRendererObject.php (working copy) @@ -1,46 +0,0 @@ - - * {@example ../../examples/resources/renderer_map.properties 18}
- *
- * DEBUG - Now comes the current MyClass object:
- * DEBUG - Doe, John
- * 
- * - * @version $Revision$ - * @package log4php - * @subpackage renderers - * @since 0.3 - */ -interface LoggerRendererObject { - /** - * Render the entity passed as parameter as a String. - * @param mixed $o entity to render - * @return string - */ - public function render($o); -} Index: src/main/php/renderers/LoggerRendererException.php =================================================================== --- src/main/php/renderers/LoggerRendererException.php (revision 1243264) +++ src/main/php/renderers/LoggerRendererException.php (working copy) @@ -25,7 +25,7 @@ * @subpackage renderers * @since 2.1 */ -class LoggerRendererException implements LoggerRendererObject { +class LoggerRendererException implements LoggerRendererInterface { public function render($o) { $strRep = 'Throwable('.get_class($o).'): '.$o->getMessage().' in '.$o->getFile().' on line '.$o->getLine(); Index: src/main/php/renderers/LoggerRendererInterface.php =================================================================== --- src/main/php/renderers/LoggerRendererInterface.php (revision 1243083) +++ src/main/php/renderers/LoggerRendererInterface.php (working copy) @@ -36,7 +36,7 @@ * @subpackage renderers * @since 0.3 */ -interface LoggerRendererObject { +interface LoggerRendererInterface { /** * Render the entity passed as parameter as a String. * @param mixed $o entity to render Property changes on: src\main\php\renderers\LoggerRendererInterface.php ___________________________________________________________________ Added: svn:eol-style + native Added: svn:keywords + Author Date Id Revision Index: src/main/php/renderers/LoggerRendererMap.php =================================================================== --- src/main/php/renderers/LoggerRendererMap.php (revision 1243264) +++ src/main/php/renderers/LoggerRendererMap.php (working copy) @@ -42,16 +42,23 @@ private $map; /** - * @var LoggerDefaultRenderer + * @var LoggerRendererDefault */ private $defaultRenderer; /** + * + * @var LoggerRendererObject + */ + private $defaultObjectRenderer; + + /** * Constructor */ public function __construct() { $this->map = array(); $this->defaultRenderer = new LoggerRendererDefault(); + $this->defaultObjectRenderer = new LoggerRendererObject(); } /** @@ -121,7 +128,7 @@ * renderers could be found, then the default renderer is returned. * * @param string $class - * @return LoggerRendererObject + * @return LoggerRendererInterface */ public function getByClassName($class) { $r = null; @@ -129,9 +136,11 @@ $c = strtolower($c); if(isset($this->map[$c])) { return $this->map[$c]; + } elseif (isset($this->map['object'])) { + return $this->map['object']; } } - return $this->defaultRenderer; + return $this->defaultObjectRenderer; } public function clear() { @@ -139,9 +148,9 @@ } /** - * Register a {@link LoggerRendererObject} for clazz. + * Register a {@link LoggerRendererInterface} for clazz. * @param string $class - * @param LoggerRendererObject $or + * @param LoggerRendererInterface $or */ private function put($class, $or) { $this->map[strtolower($class)] = $or; Index: src/main/php/LoggerAutoloader.php =================================================================== --- src/main/php/LoggerAutoloader.php (revision 1243264) +++ src/main/php/LoggerAutoloader.php (working copy) @@ -110,7 +110,8 @@ 'LoggerRendererDefault' => '/renderers/LoggerRendererDefault.php', 'LoggerRendererException' => '/renderers/LoggerRendererException.php', 'LoggerRendererMap' => '/renderers/LoggerRendererMap.php', - 'LoggerRendererObject' => '/renderers/LoggerRendererObject.php', + 'LoggerRendererInterface' => '/renderers/LoggerRendererInterface.php', + 'LoggerRendererObject' => '/renderers/LoggerRendererObject.php', ); /** Index: src/test/php/LoggerConfiguratorTest.php =================================================================== --- src/test/php/LoggerConfiguratorTest.php (revision 1243264) +++ src/test/php/LoggerConfiguratorTest.php (working copy) @@ -24,6 +24,12 @@ * @link http://logging.apache.org/log4php */ + +class CostumDefaultRenderer implements LoggerRendererInterface { + public function render($o) { } +} + + /** * * @group configurators @@ -451,4 +457,14 @@ ) )); } + + public function testConfigureRenderer_SetupCostumDefaultObjectRenderer() { + Logger::configure(array( + 'renderers' => array( + array('renderedClass' => 'Object', 'renderingClass' => 'CostumDefaultRenderer') + + ))); + + $this->assertNotNull(Logger::getHierarchy()->getRendererMap()->getByClassName('Object'), 'no costumobjectrenderer was set to the renderer map'); + } } \ No newline at end of file Index: src/test/php/LoggerLoggingEventTest.php =================================================================== --- src/test/php/LoggerLoggingEventTest.php (revision 1243264) +++ src/test/php/LoggerLoggingEventTest.php (working copy) @@ -115,7 +115,7 @@ public function testGetThrowableInformation2() { $hierarchy = Logger::getHierarchy(); $root = $hierarchy->getRootLogger(); - + $a = new LoggerLoggingEventTestCaseAppender('A1'); $a->setLayout( new LoggerLoggingEventTestCaseLayout() ); $root->addAppender($a); @@ -124,7 +124,7 @@ $logger = $hierarchy->getLogger('test'); $logger->debug('test', $ex); $hierarchy->shutdown(); - + $ti = self::$throwableInfo; self::assertTrue($ti instanceof LoggerThrowableInformation); Index: src/test/php/renderers/LoggerRendererObjectTest.php =================================================================== --- src/test/php/renderers/LoggerRendererObjectTest.php (revision 1243083) +++ src/test/php/renderers/LoggerRendererObjectTest.php (working copy) @@ -23,14 +23,21 @@ * @link http://logging.apache.org/log4php */ +class DefaultObject { + private $a; + protected $b; + public $c; +} + /** * @group renderers */ class LoggerRendererObjectTest extends PHPUnit_Framework_TestCase { - public function testFactory() { - $renderer = LoggerReflectionUtils::createObject('LoggerRendererDefault'); - self::assertInstanceOf('LoggerRendererDefault', $renderer); + public function testDoRender() { + $class = new DefaultObject(); + $renderer = new LoggerRendererObject(); + self::assertEquals(print_r($class, true), $renderer->render($class)); } } Index: src/test/php/renderers/LoggerRendererMapTest.php =================================================================== --- src/test/php/renderers/LoggerRendererMapTest.php (revision 1243264) +++ src/test/php/renderers/LoggerRendererMapTest.php (working copy) @@ -23,6 +23,10 @@ * @link http://logging.apache.org/log4php */ +class CostumObjectRenderer implements LoggerRendererInterface { + public function render($o) {} +} + class Fruit3 { public $test1 = 'test1'; public $test2 = 'test2'; @@ -32,12 +36,16 @@ class Fruit3Descendant extends Fruit3 { } -class FruitRenderer3 implements LoggerRendererObject { +class FruitRenderer3 implements LoggerRendererInterface { public function render($o) { return $o->test1.','.$o->test2.','.$o->test3; } } +class SampleObject { + +} + /** * @group renderers */ @@ -95,4 +103,30 @@ $expected = "WARN - test1,test2,test3" . PHP_EOL; self::assertEquals($expected, $actual); } + + public function testGetByObject_ShouldReturnDefaultObjectRenderer() { + $sampleObject = new SampleObject(); + + Logger::configure(dirname(__FILE__).'/test4.properties'); + $hierarchy = Logger::getHierarchy(); + + $map = $hierarchy->getRendererMap(); + $actual = $map->getByObject($sampleObject); + + $this->assertTrue($actual instanceof LoggerRendererObject, 'got renderer '.get_class($actual)); + } + + public function testGetByObject_ShouldReturnCostumDefaultObjectRenderer() { + $sampleObject = new SampleObject(); + + Logger::configure(dirname(__FILE__).'/test4.properties'); + $hierarchy = Logger::getHierarchy(); + + $map = $hierarchy->getRendererMap(); + $map->addRenderer('Object','CostumObjectRenderer'); + + $actual = $map->getByObject($sampleObject); + + $this->assertTrue($actual instanceof CostumObjectRenderer, 'costumobjectrenderer was found for object'); + } }