Changeset 1451

Show
Ignore:
Timestamp:
01/01/07 20:08:37 (2 years ago)
Author:
david
Message:

threw out action stack completely, made execution container factory configurable, refs #373, #290

Location:
branches/david-execution_flow
Files:
2 removed
7 modified

Legend:

Unmodified
Added
Removed
  • branches/david-execution_flow/samples/app/config/factories.xml

    r1342 r1451  
    2626  <configuration> 
    2727     
    28     <action_stack class="AgaviActionStack" /> 
    29      
    3028    <controller class="AgaviWebController" /> 
    3129     
     
    3331     
    3432    <dispatch_filter class="AgaviDispatchFilter" /> 
     33     
     34    <execution_container class="AgaviExecutionContainer" /> 
    3535     
    3636    <execution_filter class="AgaviExecutionFilter" /> 
  • branches/david-execution_flow/src/buildtools/code_templates/config/factories.xml

    r1290 r1451  
    3535  <configuration> 
    3636     
    37     <action_stack class="AgaviActionStack" /> 
    38      
    3937    <controller class="AgaviWebController" /> 
    4038     
     
    4240     
    4341    <dispatch_filter class="AgaviDispatchFilter" /> 
     42     
     43    <execution_container class="AgaviExecutionContainer" /> 
    4444     
    4545    <execution_filter class="AgaviExecutionFilter" /> 
  • branches/david-execution_flow/src/config/AgaviFactoryConfigHandler.class.php

    r1367 r1451  
    6060    $data = array(); 
    6161    foreach($configurations as $cfg) { 
    62       // Class names for ActionStack, DispatchFilter, ExecutionFilter, FilterChain, Response and SecurityFilter 
    63       if(isset($cfg->action_stack)) { 
    64         $data['action_stack'] = isset($data['action_stack']) ? $data['action_stack'] : array('class' => null, 'params' => array()); 
    65         $data['action_stack']['class'] = $cfg->action_stack->hasAttribute('class')? $cfg->action_stack->getAttribute('class') : $data['action_stack']['class']; 
    66         $data['action_stack']['params'] = $this->getItemParameters($cfg->action_stack, $data['action_stack']['params']); 
    67  
    68         $data['action_stack_code'] = '$this->factories["action_stack"] = array("class" => "' . $data['action_stack']['class'] . '", "parameters" => ' . var_export($data['action_stack']['params'], true) . ');'; 
     62      // Class names for Execution Container, DispatchFilter, ExecutionFilter, FilterChain, Response and SecurityFilter 
     63      if(isset($cfg->execution_container)) { 
     64        $data['execution_container'] = isset($data['execution_container']) ? $data['execution_container'] : array('class' => null, 'params' => array()); 
     65        $data['execution_container']['class'] = $cfg->execution_container->hasAttribute('class')? $cfg->execution_container->getAttribute('class') : $data['execution_container']['class']; 
     66        $data['execution_container']['params'] = $this->getItemParameters($cfg->execution_container, $data['execution_container']['params']); 
     67 
     68        $data['execution_container_code'] = '$this->factories["execution_container"] = array("class" => "' . $data['execution_container']['class'] . '", "parameters" => ' . var_export($data['execution_container']['params'], true) . ');'; 
    6969      } 
    7070 
     
    230230    // name => required? 
    231231    $requiredItems = array( 
    232       'action_stack' => true, 
     232      'execution_container' => true, 
    233233      'dispatch_filter' => true, 
    234234      'execution_filter' => true, 
  • branches/david-execution_flow/src/config/defaults/compile.xml

    r1448 r1451  
    4141      <compile>%core.agavi_dir%/util/AgaviArrayPathDefinition.class.php</compile> 
    4242      <compile>%core.agavi_dir%/action/AgaviAction.class.php</compile> 
    43       <compile>%core.agavi_dir%/action/AgaviActionStack.class.php</compile> 
    44       <compile>%core.agavi_dir%/action/AgaviActionStackEntry.class.php</compile> 
    4543      <compile>%core.agavi_dir%/core/AgaviContext.class.php</compile> 
    4644      <compile>%core.agavi_dir%/controller/AgaviController.class.php</compile> 
  • branches/david-execution_flow/src/config/xsd/factories.xsd

    r1386 r1451  
    1010        <xs:complexType> 
    1111        <xs:all> 
    12           <xs:element name="action_stack" minOccurs="0"> 
    13             <xs:complexType> 
    14               <xs:sequence> 
    15                 <xs:group ref="parameters" /> 
    16               </xs:sequence> 
    17               <xs:attribute name="class" type="xs:string" use="required" /> 
    18             </xs:complexType> 
    19           </xs:element> 
    2012          <xs:element name="controller" minOccurs="0"> 
    2113            <xs:complexType> 
     
    3527          </xs:element> 
    3628          <xs:element name="dispatch_filter" minOccurs="0"> 
     29            <xs:complexType> 
     30              <xs:sequence> 
     31                <xs:group ref="parameters" /> 
     32              </xs:sequence> 
     33              <xs:attribute name="class" type="xs:string" use="required" /> 
     34            </xs:complexType> 
     35          </xs:element> 
     36          <xs:element name="execution_container" minOccurs="0"> 
    3737            <xs:complexType> 
    3838              <xs:sequence> 
  • branches/david-execution_flow/src/controller/AgaviController.class.php

    r1448 r1451  
    119119  public function createExecutionContainer($moduleName, $actionName, array $parameters = array()) 
    120120  { 
    121     $container = new AgaviExecutionContainer(); 
    122     $container->initialize($this->context, $moduleName, $actionName, $parameters); 
     121    // create a new filter chain 
     122    $ecfi = $this->context->getFactoryInfo('execution_container'); 
     123    $container = new $ecfi['class'](); 
     124    $container->initialize($this->context, $ecfi['parameters']); 
     125    $container->setModuleName($moduleName); 
     126    $container->setActionName($actionName); 
     127    $container->setParameters($parameters); 
    123128    return $container; 
    124129  } 
     
    333338    $this->context = $response->getContext(); 
    334339     
    335     $asfi = $this->context->getFactoryInfo('action_stack'); 
    336     $this->actionStack = new $asfi['class'](); 
    337      
    338340    $cfg = AgaviConfig::get('core.config_dir') . '/output_types.xml'; 
    339341    require(AgaviConfigCache::checkConfig($cfg, $this->context->getName())); 
  • branches/david-execution_flow/src/controller/AgaviExecutionContainer.class.php

    r1448 r1451  
    8080   * 
    8181   * @param      AgaviContext The current Context instance. 
    82    * 
    83    * @author     David Zuelke <dz@bitxtender.com> 
    84    * @since      0.11.0 
    85    */ 
    86   public function initialize(AgaviContext $context, $moduleName, $actionName, array $parameters = array()) 
    87   { 
    88     $this->setModuleName($moduleName); 
    89     $this->setActionName($actionName); 
    90      
    91     $this->setParameters($parameters); 
    92      
     82   * @param      array        An array of initialization parameters. 
     83   * 
     84   * @author     David Zuelke <dz@bitxtender.com> 
     85   * @since      0.11.0 
     86   */ 
     87  public function initialize(AgaviContext $context, array $parameters = array()) 
     88  { 
    9389    $this->microtime = microtime(true); 
    9490