Changeset 1418

Show
Ignore:
Timestamp:
03/13/08 22:27:02 (4 months ago)
Author:
mikey
Message:

moved resource handling

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/src/main/php/net/stubbles/websites/xml/global/stubPageXMLElement.php

    r1415 r1418  
    102102 
    103103        $xmlSerializer->serialize($formValues, $xmlStreamWriter, array(stubXMLSerializer::OPT_ROOT_TAG => 'forms')); 
     104         
     105        // write resources 
     106        $xmlStreamWriter->writeStartElement('resources'); 
     107        foreach ($this->page->getResources() as $name => $interface) { 
     108            $xmlSerializer->serialize($this->injector->getInstance($interface), $xmlStreamWriter, array(stubXMLSerializer::OPT_ROOT_TAG => $name)); 
     109        } 
     110         
     111        $xmlStreamWriter->writeEndElement(); 
    104112    } 
    105113} 
  • trunk/src/main/php/net/stubbles/websites/xml/stubXMLProcessor.php

    r1417 r1418  
    1111                      'net::stubbles::websites::xml::stubXMLResponse', 
    1212                      'net::stubbles::ioc::stubBinder', 
     13                      'net::stubbles::lang::exceptions::stubRuntimeException', 
    1314                      'net::stubbles::util::stubRegistry', 
    1415                      'net::stubbles::xml::stubXMLStreamWriterFactory', 
     
    2829     * @var  array<string> 
    2930     */ 
    30     protected $globalElements = array('net::stubbles::websites::xml::global::stubSessionXMLElement', 
    31                                       'net::stubbles::websites::xml::global::stubPageXMLElement', 
    32                                       'net::stubbles::websites::xml::global::stubRequestXMLElement' 
    33                                 ); 
     31    protected $globalElements = array(); 
    3432 
    3533    /** 
     
    4644        parent::__construct($request, $session, $response, $pageFactory); 
    4745        $this->pageDirPrefix = 'conf/'; 
     46        $this->configureGlobalElements(); 
     47    } 
     48 
     49    /** 
     50     * configured the global elements 
     51     */ 
     52    protected function configureGlobalElements() 
     53    { 
     54        $this->globalElements = array('net::stubbles::websites::xml::global::stubSessionXMLElement', 
     55                                      'net::stubbles::websites::xml::global::stubPageXMLElement', 
     56                                      'net::stubbles::websites::xml::global::stubRequestXMLElement' 
     57                                ); 
    4858    } 
    4959 
     
    5161     * does the real processing 
    5262     * 
    53      * @param  stubPage  $page      the page to process 
    54      * @param  string    $pageName  name of the page to process 
     63     * @param   stubPage  $page      the page to process 
     64     * @param   string    $pageName  name of the page to process 
     65     * @throws  stubRuntimeException 
    5566     */ 
    5667    protected function doProcess(stubPage $page, $pageName) 
    5768    { 
    58         $xmlSerializer   = $this->createXMLSerializer(); 
    59         $xmlStreamWriter = $this->createXMLStreamWriter(); 
    60         $this->response->setPage($page); 
    61         $xmlStreamWriter->writeStartElement('document'); 
    62         $xmlStreamWriter->writeAttribute('page', $pageName); 
    6369        $binder = stubRegistry::get(stubBinder::REGISTRY_KEY); 
    6470        if (($binder instanceof stubBinder) === false) { 
     
    6773         
    6874        $binder->bind('stubPage')->toInstance($page); 
    69         $injector = $binder->getInjector(); 
    70         // write resources 
    71         $xmlStreamWriter->writeStartElement('resources'); 
    72         foreach ($page->getResources() as $name => $interface) { 
    73             $xmlSerializer->serialize($injector->getInstance($interface), $xmlStreamWriter, array(stubXMLSerializer::OPT_ROOT_TAG => $name)); 
    74         } 
    75          
    76         $xmlStreamWriter->writeEndElement(); 
    77         // write global elements 
     75        $injector        = $binder->getInjector(); 
     76        $xmlStreamWriter = $this->createXMLStreamWriter(); 
     77        $this->response->setPage($page); 
     78        $xmlStreamWriter->writeStartElement('document'); 
     79        $xmlStreamWriter->writeAttribute('page', $pageName); 
     80        $xmlSerializer = $this->createXMLSerializer(); 
    7881        foreach ($this->globalElements as $globalElementClassName) { 
    7982            $globalElement = $injector->getInstance($globalElementClassName); 
     
    101104    protected function createXMLSerializer() 
    102105    { 
    103         $xmlSerializer = new stubXMLSerializer(); 
    104         return $xmlSerializer; 
     106        return new stubXMLSerializer(); 
    105107    } 
    106108} 
  • trunk/src/test/php/net/stubbles/websites/xml/global/stubPageXMLElementTestCase.php

    r1415 r1418  
    8989 
    9090    /** 
    91      * page with no elements: nothing to serialize 
     91     * page with no elements and no resources: nothing to serialize 
    9292     * 
    9393     * @test 
    9494     */ 
    95     public function pageWithoutElements() 
     95    public function pageWithoutElementsAndRespources() 
    9696    { 
    9797        $this->mockRequest->expects($this->never())->method('isCancelled'); 
     
    100100                                ->method('serialize') 
    101101                                ->with($this->equalTo(array()), $this->equalTo($this->mockXMLStreamWriter)); 
     102        $this->mockXMLStreamWriter->expects($this->once())->method('writeStartElement'); 
     103        $this->mockXMLStreamWriter->expects($this->once())->method('writeEndElement'); 
    102104        $this->pageXMLElement->append($this->mockXMLStreamWriter, $this->mockXMLSerializer); 
    103105    } 
    104106 
    105107    /** 
    106      * page with elements: serialize return values 
     108     * page with elements but without resources: serialize return values 
    107109     * 
    108110     */ 
    109     public function pageWithElements() 
     111    public function pageWithElementsAndWithoutResources() 
    110112    { 
    111113        $this->mockRequest->expects($this->once())->method('isCancelled')->will($this->returnValue(false)); 
     
    137139                                ->method('serialize') 
    138140                                ->with($this->equalTo(array('baz' => array('foo'))), $this->equalTo($this->mockXMLStreamWriter)); 
     141        $this->mockXMLStreamWriter->expects($this->once())->method('writeStartElement'); 
     142        $this->mockXMLStreamWriter->expects($this->once())->method('writeEndElement'); 
    139143        $this->pageXMLElement->append($this->mockXMLStreamWriter, $this->mockXMLSerializer); 
    140144    } 
     
    161165         
    162166        $this->mockXMLSerializer->expects($this->never())->method('serialize'); 
     167        $this->mockXMLStreamWriter->expects($this->never())->method('writeStartElement'); 
     168        $this->mockXMLStreamWriter->expects($this->never())->method('writeEndElement'); 
    163169        $this->pageXMLElement->append($this->mockXMLStreamWriter, $this->mockXMLSerializer); 
     170    } 
     171 
     172    /** 
     173     * page with resources but no elements: serialize resources 
     174     * 
     175     * @test 
     176     */ 
     177    public function pageWithResources() 
     178    { 
     179        $this->page->setResources(array('foo' => 'stdClass')); 
     180         
     181        $this->mockRequest->expects($this->never())->method('isCancelled'); 
     182        $this->mockInjector->expects($this->never())->method('handleInjections'); 
     183        $resource = new stdClass(); 
     184        $this->mockInjector->expects($this->once())->method('getInstance')->with($this->equalTo('stdClass'))->will($this->returnValue($resource)); 
     185        $this->mockXMLSerializer->expects($this->at(0)) 
     186                                ->method('serialize') 
     187                                ->with($this->equalTo(array()), $this->equalTo($this->mockXMLStreamWriter)); 
     188        $this->mockXMLSerializer->expects($this->at(1)) 
     189                                ->method('serialize') 
     190                                ->with($this->equalTo($resource), $this->equalTo($this->mockXMLStreamWriter), $this->equalTo(array(stubXMLSerializer::OPT_ROOT_TAG => 'foo'))); 
     191        $this->mockXMLStreamWriter->expects($this->once())->method('writeStartElement'); 
     192        $this->mockXMLStreamWriter->expects($this->once())->method('writeEndElement'); 
     193        $this->pageXMLElement->append($this->mockXMLStreamWriter, $this->mockXMLSerializer); 
     194         
    164195    } 
    165196}