Changeset 439

Show
Ignore:
Timestamp:
03/29/07 15:24:51 (2 years ago)
Author:
mikey
Message:

made XJConfFacade more flexible

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/src/main/php/net/stubbles/ipo/interceptors/stubInterceptorXJConfInitializer.php

    r437 r439  
    6464    { 
    6565        $xjconf = new stubXJConfFacade(array('http://stubbles.net/ipo/interceptors' => stubXJConfLoader::getInstance())); 
    66         $xjconf->setDefinitionFile(stubFactory::getResourceURI('xjconf/interceptors.xml')); 
     66        $xjconf->parseAndAddDefinition(stubFactory::getResourceURI('xjconf/interceptors.xml')); 
    6767        $xjconf->enableXIncludes(); 
    6868        $xjconf->parse($this->configFile); 
  • trunk/src/main/php/net/stubbles/rdbms/stubDatabaseInitializer.php

    r437 r439  
    2828    { 
    2929        $xjconf = new stubXJConfFacade(array('http://stubbles.net/rdbms' => stubXJConfLoader::getInstance())); 
    30         $xjconf->setDefinitionFile(stubFactory::getResourceURI('xjconf/rdbms.xml')); 
     30        $xjconf->parseAndAddDefinition(stubFactory::getResourceURI('xjconf/rdbms.xml')); 
    3131        $xjconf->enableXIncludes(); 
    3232        $xjconf->parse($configFile); 
  • trunk/src/main/php/net/stubbles/util/log/stubLoggerXJConfFactory.php

    r437 r439  
    2929    { 
    3030        $xjconf = new stubXJConfFacade(array('http://stubbles.net/util/log' => stubXJConfLoader::getInstance())); 
    31         $xjconf->setDefinitionFile(stubFactory::getResourceURI('xjconf/logging.xml')); 
     31        $xjconf->parseAndAddDefinition(stubFactory::getResourceURI('xjconf/logging.xml')); 
    3232        $configExtension = new stubConfigXJConfExtension(); 
    3333        $xjconf->addExtension($configExtension); 
  • trunk/src/main/php/net/stubbles/util/stubRegistryXJConfInitializer.php

    r437 r439  
    5353    { 
    5454        $xjconf = new stubXJConfFacade(array('http://stubbles.net/util/registry' => stubXJConfLoader::getInstance())); 
    55         $xjconf->setDefinitionFile(stubFactory::getResourceURI('xjconf/registry.xml')); 
     55        $xjconf->parseAndAddDefinition(stubFactory::getResourceURI('xjconf/registry.xml')); 
    5656        $xjconf->enableXIncludes(); 
    5757        $xjconf->parse($this->configFile); 
  • trunk/src/main/php/net/stubbles/util/xjconf/stubXJConfFacade.php

    r437 r439  
    1212); 
    1313/** 
    14  * Facade for XJConfs
     14 * Facade for XJConf
    1515 * 
    1616 * @package     stubbles 
     
    2424     * @var  array<string,XJConfClassLoader> 
    2525     */ 
    26     protected $classLoaders     = array(); 
    27     /** 
    28      * file that contains the xml definitions 
    29      * 
    30      * @var  string 
    31      */ 
    32     protected $definitionFile; 
     26    protected $classLoaders         = array(); 
    3327    /** 
    3428     * list of extensions to use 
     
    3630     * @var  array<string,Extension> 
    3731     */ 
    38     protected $extensions       = array(); 
     32    protected $extensions           = array(); 
     33    /** 
     34     * list of namespace definitions to merge with default one 
     35     * 
     36     * @var  array<NamespaceDefinition> 
     37     */ 
     38    protected $namespaceDefinitions = array(); 
    3939    /** 
    4040     * the definition parser 
     
    5959        $this->classLoaders = $classLoaders; 
    6060    } 
    61      
    62     /** 
    63      * sets the definition file to parse 
    64      * 
    65      * @param  string  $definitionFile  name of the file that contains the definitions 
    66      */ 
    67     public function setDefinitionFile($definitionFile) 
    68     { 
    69         $this->definitionFile = $definitionFile; 
    70     } 
    71      
     61 
    7262    /** 
    7363     * add an extension that handles all tags in given namespace 
     
    9686     
    9787    /** 
     88     * add a namespace definition 
     89     * 
     90     * @param  NamespaceDefinition  $namespaceDefinition 
     91     */ 
     92    public function addNamespaceDefinition(NamespaceDefinition $namespaceDefinition) 
     93    { 
     94        $this->namespaceDefinitions[$namespaceDefinition->getNamespaceURI()] = $namespaceDefinition; 
     95    } 
     96     
     97    /** 
     98     * add a namespace definition 
     99     * 
     100     * @param  NamespaceDefinitions  $namespaceDefinitions 
     101     */ 
     102    public function addNamespaceDefinitions(NamespaceDefinitions $namespaceDefinitions) 
     103    { 
     104        $this->namespaceDefinitions = array_merge($this->namespaceDefinitions, $namespaceDefinitions->getDefinedNamespaces()); 
     105    } 
     106     
     107    /** 
     108     * parses a definition and returns the namespace definitions 
     109     * 
     110     * @param   string                $definitionFile 
     111     * @return  NamespaceDefinitions 
     112     */ 
     113    public function parseDefinition($definitionFile) 
     114    { 
     115        if (null == $this->definitionParser) { 
     116            $this->definitionParser = new DefinitionParser($this->classLoaders); 
     117        } 
     118         
     119        return $this->definitionParser->parse($definitionFile); 
     120    } 
     121     
     122    /** 
     123     * parses a definition file and adds its definitions 
     124     * 
     125     * @param  string  $definitionFile 
     126     */ 
     127    public function parseAndAddDefinition($definitionFile) 
     128    { 
     129        $this->addNamespaceDefinitions($this->parseDefinition($definitionFile)); 
     130    } 
     131     
     132    /** 
    98133     * parses a given file and creates the data structure described in this file 
    99134     * 
     
    103138    public function parse($filename) 
    104139    { 
    105         if (null == $this->definitionParser) { 
    106             $this->definitionParser = new DefinitionParser($this->classLoaders); 
    107             $this->xmlParser        = new XmlParser(); 
     140        if (null == $this->xmlParser) { 
     141            $this->xmlParser = new XmlParser(); 
    108142        } 
    109143         
    110         $this->xmlParser->setTagDefinitions($this->definitionParser->parse($this->definitionFile)); 
     144        $namespaceDefinitions = new NamespaceDefinitions(); 
     145        foreach ($this->namespaceDefinitions as $namespaceURI => $namespaceDefintion) { 
     146            $namespaceDefinitions->addNamespaceDefinition($namespaceURI, $namespaceDefintion); 
     147        } 
     148        $this->xmlParser->setTagDefinitions($namespaceDefinitions); 
    111149        foreach ($this->extensions as $namespace => $extension) { 
    112            $this->xmlParser->addExtension($extension, $namespace); 
     150            $this->xmlParser->addExtension($extension, $namespace); 
    113151        } 
    114152         
  • trunk/src/main/php/net/stubbles/websites/processors/stubProcessorResolverXJConfFactory.php

    r401 r439  
    5959    { 
    6060        $xjconf = new stubXJConfFacade(array('http://stubbles.net/websites' => stubXJConfLoader::getInstance())); 
    61         $xjconf->setDefinitionFile(stubFactory::getResourceURI('xjconf/processors.xml')); 
     61        $xjconf->parseAndAddDefinition(stubFactory::getResourceURI('xjconf/processors.xml')); 
    6262        $xjconf->parse($this->configFile); 
    6363        $this->resolver = $xjconf->getConfigValue('resolver'); 
  • trunk/src/main/php/net/stubbles/websites/stubXJConfPageFactory.php

    r386 r439  
    3434        if (null == self::$xjconf) { 
    3535            self::$xjconf = new stubXJConfFacade(array('http://stubbles.net/websites' => stubXJConfLoader::getInstance())); 
    36             self::$xjconf->setDefinitionFile(stubFactory::getResourceURI('xjconf/websites.xml')); 
     36            self::$xjconf->parseAndAddDefinition(stubFactory::getResourceURI('xjconf/websites.xml')); 
    3737        } 
    3838    } 
  • trunk/src/main/php/net/stubbles/websites/variantmanager/stubXJConfVariantFactory.php

    r386 r439  
    2929    { 
    3030        $xjconf = new stubXJConfFacade(array('http://stubbles.net/websites/variantmanager' => stubXJConfLoader::getInstance())); 
    31         $xjconf->setDefinitionFile(stubFactory::getResourceURI('xjconf/variantmanager.xml')); 
     31        $xjconf->parseAndAddDefinition(stubFactory::getResourceURI('xjconf/variantmanager.xml')); 
    3232         
    3333        if (null == $configFile) {