Changeset 62
- Timestamp:
- 12/04/06 22:34:24 (2 years ago)
- Files:
-
- trunk/XJConf/DefinedTag.php (modified) (4 diffs)
- trunk/XJConf/converters/AbstractObjectValueConverter.php (modified) (1 diff)
- trunk/XJConf/converters/ArrayValueConverter.php (modified) (2 diffs)
- trunk/XJConf/converters/ConstructorValueConverter.php (modified) (1 diff)
- trunk/XJConf/converters/FactoryMethodValueConverter.php (modified) (1 diff)
- trunk/XJConf/definitions/AbstractTagDefinition.php (modified) (2 diffs)
- trunk/XJConf/definitions/ConcreteTagDefinition.php (copied) (copied from trunk/XJConf/definitions/TagDefinition.php) (2 diffs)
- trunk/XJConf/definitions/NamespaceDefinition.php (modified) (3 diffs)
- trunk/XJConf/definitions/NamespaceDefinitions.php (modified) (1 diff)
- trunk/XJConf/definitions/TagDefinition.php (moved) (moved from trunk/XJConf/definitions/BaseTagDefinition.php) (1 diff)
- trunk/XJConf/definitions/handler/ConcreteTagDefinitionHandler.php (added)
- trunk/XJConf/definitions/handler/TagDefinitionHandler.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/XJConf/DefinedTag.php
r61 r62 7 7 */ 8 8 XJConfLoader::load('Tag', 9 'definitions. BaseTagDefinition'9 'definitions.TagDefinition' 10 10 ); 11 11 /** … … 55 55 * value of the tag 56 56 * 57 * @var BaseTagDefinition57 * @var TagDefinition 58 58 */ 59 59 private $tagDef = null; … … 265 265 * Set the tag definition object used for this tag 266 266 * 267 * @param BaseTagDefinition $tagDef267 * @param TagDefinition $tagDef 268 268 */ 269 public function setDefinition( BaseTagDefinition $tagDef)270 { 271 if ($tagDef instanceof TagDefinition) {269 public function setDefinition(TagDefinition $tagDef) 270 { 271 if ($tagDef instanceof ConcreteTagDefinition) { 272 272 $this->tagDef = $tagDef; 273 273 return; … … 281 281 * get the tag definition object used for this tag 282 282 * 283 * @return BaseTagDefinition283 * @return TagDefinition 284 284 */ 285 285 public function getDefinition() trunk/XJConf/converters/AbstractObjectValueConverter.php
r61 r62 27 27 * Add all attributes using the appropriate setter methods 28 28 * 29 * @param Tag $tag30 * @param BaseTagDefinition $def31 * @param object $instance29 * @param Tag $tag 30 * @param TagDefinition $def 31 * @param object $instance 32 32 * @throws ValueConversionException 33 33 */ 34 protected function addAttributesToValue(Tag $tag, BaseTagDefinition $def, $instance)34 protected function addAttributesToValue(Tag $tag, TagDefinition $def, $instance) 35 35 { 36 36 $class = new ReflectionClass(get_class($instance)); trunk/XJConf/converters/ArrayValueConverter.php
r61 r62 7 7 XJConfLoader::load('converters.ValueConverter', 8 8 'definitions.Definition', 9 'definitions. BaseTagDefinition'9 'definitions.TagDefinition' 10 10 ); 11 11 /** … … 44 44 * Add all attributes using the appropriate setter methods 45 45 * 46 * @param Tag $tag47 * @param Definition $def48 * @param array $array46 * @param Tag $tag 47 * @param TagDefinition $def 48 * @param array $array 49 49 */ 50 protected function addAttributesToValue(Tag $tag, BaseTagDefinition $def, $array)50 protected function addAttributesToValue(Tag $tag, TagDefinition $def, $array) 51 51 { 52 52 // set all attributes trunk/XJConf/converters/ConstructorValueConverter.php
r61 r62 70 70 71 71 // add attributes and child elements 72 if ($def instanceof BaseTagDefinition) {72 if ($def instanceof TagDefinition) { 73 73 $this->addAttributesToValue($tag, $def, $instance); 74 74 $this->addCDataToValue($tag, $def, $instance); trunk/XJConf/converters/FactoryMethodValueConverter.php
r61 r62 73 73 74 74 // add attributes and child elements 75 if ($def instanceof BaseTagDefinition) {75 if ($def instanceof TagDefinition) { 76 76 $this->addAttributesToValue($tag, $def, $instance); 77 77 $this->addCDataToValue($tag, $def, $instance); trunk/XJConf/definitions/AbstractTagDefinition.php
r61 r62 5 5 * @author Frank Kleine <mikey@xjconf.net> 6 6 */ 7 XJConfLoader::load('definitions. BaseTagDefinition',7 XJConfLoader::load('definitions.TagDefinition', 8 8 'exceptions.ValueConversionException' 9 9 ); … … 14 14 * @subpackage definitions 15 15 */ 16 class AbstractTagDefinition extends BaseTagDefinition16 class AbstractTagDefinition extends TagDefinition 17 17 { 18 18 /** trunk/XJConf/definitions/ConcreteTagDefinition.php
r61 r62 6 6 * @author Frank Kleine <frank.kleine@schlund.de> 7 7 */ 8 XJConfLoader::load('definitions. BaseTagDefinition');8 XJConfLoader::load('definitions.TagDefinition'); 9 9 /** 10 10 * Definition of an XML tag. … … 13 13 * @subpackage definitions 14 14 */ 15 class TagDefinition extends BaseTagDefinition15 class ConcreteTagDefinition extends TagDefinition 16 16 { 17 17 /** trunk/XJConf/definitions/NamespaceDefinition.php
r61 r62 11 11 * list of tag definitions 12 12 * 13 * @var array<String, BaseTagDefinition>13 * @var array<String,TagDefinition> 14 14 */ 15 15 private $tagDefinitions = array(); … … 35 35 * Add a new tag definition 36 36 * 37 * @param BaseTagDefinition $tagDefinition37 * @param TagDefinition $tagDefinition 38 38 */ 39 public function addTagDefinition( BaseTagDefinition $tagDefinition)39 public function addTagDefinition(TagDefinition $tagDefinition) 40 40 { 41 41 $this->tagDefinitions[$tagDefinition->getTagName()] = $tagDefinition; … … 67 67 * 68 68 * @param tagName name of the tag 69 * @return BaseTagDefinition69 * @return TagDefinition 70 70 */ 71 71 public function getDefinition($tagName) trunk/XJConf/definitions/NamespaceDefinitions.php
r61 r62 81 81 * Get the definition of a single tag 82 82 * 83 * @param string $namespace namespace URI84 * @param string $tagName local tag name85 * @return BaseTagDefinition83 * @param string $namespace namespace URI 84 * @param string $tagName local tag name 85 * @return TagDefinition 86 86 */ 87 87 public function getTagDefinition($namespace, $tagName) trunk/XJConf/definitions/TagDefinition.php
r61 r62 22 22 * @subpackage definitions 23 23 */ 24 abstract class BaseTagDefinition implements Definition24 abstract class TagDefinition implements Definition 25 25 { 26 26 /** trunk/XJConf/definitions/handler/TagDefinitionHandler.php
r46 r62 1 1 <?php 2 2 /** 3 * Creates a TagDefinition from given xml data. 3 * Creates a ConcreteTagDefinition from given xml data. 4 * 5 * Used for backward compatibility and usage of <tag> in definition files 6 * instead of <concreteTag>. 4 7 * 5 8 * @author Frank Kleine <frank@kl-s.com> 6 9 */ 7 XJConfLoader::load('definitions.handler.DefinitionHandler', 8 'definitions.TagDefinition', 9 'definitions.NamespaceDefinition', 10 'exceptions.InvalidTagDefinitionException' 11 ); 10 XJConfLoader::load('definitions.handler.ConcreteTagDefinitionHandler'); 12 11 /** 13 * Creates a TagDefinition from given xml data. 12 * Creates a ConcreteTagDefinition from given xml data. 13 * 14 * Used for backward compatibility and usage of <tag> in definition files 15 * instead of <concreteTag>. 14 16 * 15 17 * @package XJConf 16 18 * @subpackage definitions 17 19 */ 18 class TagDefinitionHandler implementsDefinitionHandler20 class TagDefinitionHandler extends ConcreteTagDefinitionHandler 19 21 { 20 /** 21 * the definition parser 22 * 23 * @var DefinitionParser 24 */ 25 private $defParser; 26 27 /** 28 * init the handler 29 * 30 * @param DefinitionParser $defParser 31 */ 32 public function init(DefinitionParser $defParser) 33 { 34 $this->defParser = $defParser; 35 } 36 37 /** 38 * Start Element handler 39 * 40 * @param string $namespaceURI namespace of start tag 41 * @param string $sName name of start tag 42 * @param array $atts attributes of tag 43 * @return Definition 44 * @throws InvalidTagDefinitionException 45 */ 46 public function startElement($namespaceURI, $sName, $atts) 47 { 48 // ensure that the name has been set 49 if (isset($atts['name']) == false) { 50 throw new InvalidTagDefinitionException('The <tag> tag is missing the name attribute.'); 51 } 52 53 // 54 if (isset($atts['type']) == false) { 55 $atts['type'] = $atts['primitive']; 56 } 57 58 // The definition extends another definition 59 if (isset($atts['extends']) != false) { 60 $nsDef = $this->defParser->getNamespaceDefinitions()->getNamespaceDefinition($this->defParser->getCurrentNamespace()); 61 $extendedDef = $nsDef->getDefinition($atts['extends']); 62 $def = clone $extendedDef; 63 $def->setName($atts['name']); 64 $def->setTagName($atts['name']); 65 if (null == $atts['type']) { 66 $def->setType($atts['type']); 67 } 68 } else { 69 // Create a definition from scratch 70 if (null == $atts['type']) { 71 $atts['type'] = 'string'; 72 } 73 74 $def = new TagDefinition($atts['name'], $atts['type']); 75 } 76 77 // key attribute 78 if (isset($atts['keyAttribute']) == true) { 79 $def->setKeyAttribute($atts['keyAttribute']); 80 } elseif (isset($atts['key']) == true) { 81 $def->setName($atts['key']); 82 } 83 84 // setter 85 if (isset($atts['setter']) == true) { 86 $def->setSetterMethod($atts['setter']); 87 } 88 89 // give definition the correct class loader 90 if ($this->defParser->hasClassLoader($this->defParser->getCurrentNamespace()) == true) { 91 $def->setClassLoader($this->defParser->getClassLoader($this->defParser->getCurrentNamespace())); 92 } 93 94 return $def; 95 } 96 97 /** 98 * End Element handler 99 * 100 * @param string $namespaceURI namespace of end tag 101 * @param string $sName name of end tag 102 * @throws XJConfException 103 */ 104 public function endElement($namespaceURI, $sName) 105 { 106 $defStack =& $this->defParser->getDefStack(); 107 $def = array_pop($defStack); 108 109 $nsDefs = $this->defParser->getNamespaceDefinitions(); 110 111 if ($nsDefs->isNamespaceDefined($this->defParser->getCurrentNamespace()) == false) { 112 $nsDefs->addNamespaceDefinition($this->defParser->getCurrentNamespace(), new NamespaceDefinition($this->defParser->getCurrentNamespace())); 113 } 114 115 $nsDef = $nsDefs->getNamespaceDefinition($this->defParser->getCurrentNamespace()); 116 $nsDef->addTagDefinition($def); 117 } 22 118 23 } 119 24 ?>
