Changeset 565

Show
Ignore:
Timestamp:
04/19/07 18:43:32 (1 year ago)
Author:
schst
Message:

Added caching decorator for XML page elements (very simple version)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/config/xml/pages/conf/index.xml

    r267 r565  
    77      <property name="skin">default</property> 
    88    </properties> 
    9     <element type="_test.TestXMLPageElement" name="Test" /> 
     9    <xmlElement type="_test.TestXMLPageElement" name="Test" /> 
     10 
     11    <xmlElementCachingDecorator lifetime="60"> 
     12      <xmlElement type="_test.CurrentTimeXMLPageElement" name="cached" /> 
     13    </xmlElementCachingDecorator> 
     14    <xmlElement type="_test.CurrentTimeXMLPageElement" name="uncached" /> 
    1015  </page> 
    1116</xj:configuration> 
  • trunk/config/xml/pages/txt/main_index.xml

    r338 r565  
    2727        <stub:item type="text" name="bar"/> 
    2828      </stub:itemframe> 
    29     </stub:form>     
     29    </stub:form> 
     30 
     31    <h1>Example for decorators</h1> 
     32    Element without cache : <ixsl:value-of select="document/uncached/currentTime"/><br/> 
     33    Element decorated with cache (1 minute) : <ixsl:value-of select="document/cached/currentTime"/><br/> 
    3034  </part> 
    31    
     35 
    3236  <part name="foo.bar">Formularelement</part> 
    3337</parts> 
  • trunk/docroot/xml.php

    r474 r565  
    11<?php 
    22require '../config/php/config.php'; 
    3 require '../lib/stubbles.php'; 
    4 stubClassLoader::load('net.stubbles.websites.xml.stubXMLProcessor', 
    5                       'net.stubbles.websites.xml.stubXMLPostInterceptor', 
    6                       'net.stubbles.websites.xml.stubShowLastXMLInterceptor', 
    7                       'net.stubbles.websites.stubPageXJConfFactory', 
    8                       'net.stubbles.ipo.request.stubWebRequest', 
    9                       'net.stubbles.ipo.request.filters.stubAbstractFilter', 
    10                       'net.stubbles.ipo.request.stubRequestValueError', 
    11                       'net.stubbles.ipo.session.stubPHPSession', 
    12                       'net.stubbles.ipo.response.stubBaseResponse' 
     3require '../src/main/php/net/stubbles/stubClassLoader.php'; 
     4require '../lib/starReader.php'; 
     5 
     6stubClassLoader::load('net.stubbles.websites.stubFrontController', 
     7                      'net.stubbles.ipo.interceptors.stubInterceptorXJConfInitializer', 
     8                      'net.stubbles.websites.processors.stubProcessorResolverXJConfFactory', 
     9                      'net.stubbles.util.stubRegistryXJConfInitializer' 
    1310); 
    14 class TestFilter extends stubAbstractFilter 
    15 
    16     public function execute($value) 
    17     { 
    18         throw new stubFilterException(new stubRequestValueError('foo', array('de_DE' => 'Dies ist eine deutsche Fehlermeldung', 'en_EN' => 'This is an english error message'))); 
    19     } 
    20 
     11 
    2112class Bootstrap 
    2213{ 
    2314    public static function main() 
    24     { 
    25         $request        = new stubWebRequest(); 
    26         $session        = new stubPHPSession($request, 'stubSID'); 
    27         $response       = new stubBaseResponse(); 
    28         $preInterceptor = new stubShowLastXMLInterceptor(); 
    29         $preInterceptor->preProcess($request, $session, $response); 
    30         if ($request->isCancelled() == true) { 
    31             $response->send(); 
    32             return; 
    33         } 
    34         $request->getFilteredValue(new TestFilter(), 'foo_bar'); 
    35         $request->getFilteredValue(new TestFilter(), 'foo_bar'); 
    36         $pageFactory = new stubPageXJConfFactory(stubXJConfLoader::getInstance()); 
    37         $processor   = new stubXMLProcessor($request, $session, $response, $pageFactory); 
    38         $response = $processor->process()->getResponse(); 
    39         $preInterceptor->postProcess($request, $session, $response); 
    40         $postInterceptor = new stubXMLPostInterceptor(); 
    41         $postInterceptor->postProcess($request, $session, $response); 
    42         $response->send(); 
     15    { 
     16        $controller = new stubFrontController(new stubRegistryXJConfInitializer(), 
     17                                              new stubInterceptorXJConfInitializer(), 
     18                                              new stubProcessorResolverXJConfFactory()); 
     19        $controller->process(); 
    4320    } 
    4421} 
  • trunk/src/main/php/net/stubbles/websites/xml/stubXMLProcessor.php

    r404 r565  
    5454        $prefixRequest = new stubRequestPrefixDecorator($this->request, ''); 
    5555        $formValues    = array(); 
     56 
     57 
    5658        foreach ($elements as $name => $element) { 
    5759            $prefixRequest->setPrefix($name); 
  • trunk/src/main/resources/xjconf/websites.xml

    r267 r565  
    1212    </abstractTag> 
    1313    <abstractTag extends="element" name="xmlElement" abstractType="net.stubbles.websites.xml.stubXMLPageElement" concreteTypeAttribute="type" setter="addElement" /> 
     14 
     15    <!-- Decorators --> 
     16    <abstractTag name="xmlElementDecorator" abstractType="net.stubbles.websites.xml.stubXMLPageElement" concreteTypeAttribute="type" setter="addElement"> 
     17      <constructor> 
     18        <child name="xmlElement"/> 
     19      </constructor> 
     20    </abstractTag> 
     21 
     22    <tag name="xmlElementCachingDecorator" type="net.stubbles.websites.xml.stubXMLPageElementCachingDecorator" setter="addElement"> 
     23      <attribute name="lifetime" type="int"/> 
     24      <constructor> 
     25        <child name="xmlElement"/> 
     26      </constructor> 
     27    </tag> 
     28 
    1429  </namespace> 
    1530</defines>