Changeset 2633

Show
Ignore:
Timestamp:
07/31/08 15:17:02 (5 months ago)
Author:
impl
Message:

branches/david-xml_only_config_system (refs #519): move test AgaviXmlFactoryConfigHandler? to AgaviFactoryConfigHandler?

Location:
branches/david-xml_only_config_system
Files:
1 removed
4 modified

Legend:

Unmodified
Added
Removed
  • branches/david-xml_only_config_system/samples/app/config/autoload.xml

    r2474 r2633  
    1010       
    1111      <autoload name="AgaviSampleAppUser">%core.lib_dir%/user/AgaviSampleAppUser.class.php</autoload> 
    12        
    13       <autoload name="AgaviXmlFactoryConfigHandler">%core.agavi_dir%/config/AgaviXmlFactoryConfigHandler.class.php</autoload> 
    1412    </autoloads> 
    1513  </configuration> 
  • branches/david-xml_only_config_system/samples/app/config/config_handlers.xml

    r2632 r2633  
    11<?xml version="1.0" encoding="UTF-8"?> 
    22<configurations xmlns="http://agavi.org/agavi/1.0/config" parent="%core.system_config_dir%/config_handlers.xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instanceZOMGNO" xsi:schemaLocation="http://agavi.org/agavi/1.0/config http://localhost/~dzuelke/Code/oss/agavi/branches/david-xml_only_config_system/src/config/xsd/autoload.xsd"> 
    3  
    4   <configuration> 
    5      
    6     <handler pattern="%core.config_dir%/factories.xml" class="AgaviXmlFactoryConfigHandler"> 
    7       <validation>%core.agavi_dir%/config/rng/factories.rng</validation> 
    8       <!-- <validation>%core.agavi_dir%/config/sch/config_handlers.sch</validation> --> 
    9       <transformation>%core.agavi_dir%/config/xsl/factories.xsl</transformation> 
    10     </handler> 
    11      
    12   </configuration> 
    13  
    143</configurations> 
  • branches/david-xml_only_config_system/src/config/AgaviFactoryConfigHandler.class.php

    r2259 r2633  
    2323 * @author     David Zülke <dz@bitxtender.com> 
    2424 * @author     Dominik del Bondio <ddb@bitxtender.com> 
     25 * @author     Noah Fontes <noah.fontes@bitextender.com> 
    2526 * @copyright  Authors 
    2627 * @copyright  The Agavi Project 
     
    3031 * @version    $Id$ 
    3132 */ 
    32 class AgaviFactoryConfigHandler extends AgaviConfigHandler 
     33class AgaviFactoryConfigHandler extends AgaviXmlConfigHandler 
    3334{ 
     35  const NAMESPACE = 'http://agavi.org/agavi/config/factories/1.0'; 
     36   
    3437  /** 
    3538   * Execute this configuration handler. 
    3639   * 
    37    * @param      string An absolute filesystem path to a configuration file. 
    38    * @param      string An optional context in which we are currently running. 
     40   * @param      DOMDocument The document to parse. 
    3941   * 
    4042   * @return     string Data to be written to a cache file. 
    4143   * 
    42    * @throws     <b>AgaviUnreadableException</b> If a requested configuration 
    43    *                                             file does not exist or is not 
    44    *                                             readable. 
    4544   * @throws     <b>AgaviParseException</b> If a requested configuration file is 
    4645   *                                        improperly formatted. 
    4746   * 
    4847   * @author     David Zülke <dz@bitxtender.com> 
    49    * @author     Dominik del Bondio <ddb@bitxtender.com> 
    50    * @since      0.9.0 
     48   * @author     Noah Fontes <noah.fontes@bitextender.com> 
     49   * @since      0.11.0 
    5150   */ 
    52   public function execute($config, $context = null) 
     51  public function execute(DOMDocument $doc) 
    5352  { 
    54     if($context == null) { 
    55       $context = ''; 
    56     } 
    57  
    58     // parse the config file 
    59     $configurations = $this->orderConfigurations(AgaviConfigCache::parseConfig($config, true, $this->getValidationFile(), $this->parser)->configurations, AgaviConfig::get('core.environment'), $context); 
    60      
     53    // set up our default namespace 
     54    $doc->setDefaultNamespace(self::NAMESPACE, 'factories'); 
     55     
     56    $config = $doc->documentURI; 
    6157    $data = array(); 
    6258     
     
    196192    ); 
    197193     
    198     foreach($configurations as $cfg) { 
     194    foreach($doc->getConfigurationElements() as $configuration) { 
    199195      foreach($factories as $factory => $info) { 
    200         if($info['required'] && isset($cfg->$factory)) { 
     196        if(is_array($info) && $info['required'] && $configuration->hasChild($factory)) { 
     197          $element = $configuration->getChild($factory); 
     198           
    201199          $data[$factory] = isset($data[$factory]) ? $data[$factory] : array('class' => null, 'params' => array()); 
    202           $data[$factory]['class'] = $cfg->$factory->getAttribute('class', $data[$factory]['class']); 
    203           $data[$factory]['params'] = $this->getItemParameters($cfg->$factory, $data[$factory]['params']); 
     200          $data[$factory]['class'] = $element->getAttribute('class', $data[$factory]['class']); 
     201          $data[$factory]['params'] = $element->getAgaviParameters($data[$factory]['params']); 
    204202        } 
    205203      } 
  • branches/david-xml_only_config_system/src/config/defaults/config_handlers.xml

    r2482 r2633  
    2020      <handler pattern="%core.config_dir%/settings.xml" validate="%core.agavi_dir%/config/xsd/settings.xsd" class="AgaviSettingConfigHandler" /> 
    2121 
    22       <handler pattern="%core.config_dir%/factories.xml" validate="%core.agavi_dir%/config/xsd/factories.xsd" class="AgaviFactoryConfigHandler" /> 
     22      <handler pattern="%core.config_dir%/factories.xml" class="AgaviFactoryConfigHandler"> 
     23        <validation>%core.agavi_dir%/config/rng/factories.rng</validation> 
     24        <transformation>%core.agavi_dir%/config/xsl/factories.xsl</transformation> 
     25      </handler> 
    2326 
    2427      <handler pattern="%core.config_dir%/databases.xml" validate="%core.agavi_dir%/config/xsd/databases.xsd" class="AgaviDatabaseConfigHandler" />