added initial support for service binding

This commit is contained in:
Christian Kerl
2010-10-08 14:24:42 +02:00
parent 31d40380a6
commit 8d3743d928
18 changed files with 379 additions and 68 deletions

View File

@ -2,12 +2,12 @@
namespace Bundle\WebServiceBundle\ServiceDefinition;
class ServiceHeader
class Argument
{
private $name;
private $type;
public function __construct($name = null, ServiceType $type = null)
public function __construct($name = null, Type $type = null)
{
$this->setName($name);
$this->setType($type);

View File

@ -0,0 +1,35 @@
<?php
namespace Bundle\WebServiceBundle\ServiceDefinition;
class Header
{
private $name;
private $type;
public function __construct($name = null, Type $type = null)
{
$this->setName($name);
$this->setType($type);
}
public function getName()
{
return $this->name;
}
public function setName($name)
{
$this->name = $name;
}
public function getType()
{
return $this->type;
}
public function setType($type)
{
$this->type = $type;
}
}

View File

@ -2,13 +2,11 @@
namespace Bundle\WebServiceBundle\ServiceDefinition\Loader;
use Bundle\WebServiceBundle\ServiceDefinition\ServiceType;
use Bundle\WebServiceBundle\ServiceDefinition\ServiceDefinition;
use Bundle\WebServiceBundle\ServiceDefinition\ServiceMethod;
use Bundle\WebServiceBundle\ServiceDefinition\ServiceHeader;
use Bundle\WebServiceBundle\ServiceDefinition\Header;
use Bundle\WebServiceBundle\ServiceDefinition\Method;
use Bundle\WebServiceBundle\ServiceDefinition\Argument;
use Bundle\WebServiceBundle\ServiceDefinition\Type;
class XmlFileLoader extends FileLoader
{
@ -35,11 +33,11 @@ class XmlFileLoader extends FileLoader
/**
* @param \SimpleXMLElement $node
*
* @return \Bundle\WebServiceBundle\ServiceDefinition\ServiceHeader
* @return \Bundle\WebServiceBundle\ServiceDefinition\Header
*/
protected function parseHeader(\SimpleXMLElement $node)
{
$header = new ServiceHeader((string)$node['name'], $this->parseType($node->type));
$header = new Header((string)$node['name'], $this->parseType($node->type));
return $header;
}
@ -47,11 +45,16 @@ class XmlFileLoader extends FileLoader
/**
* @param \SimpleXMLElement $node
*
* @return \Bundle\WebServiceBundle\ServiceDefinition\ServiceMethod
* @return \Bundle\WebServiceBundle\ServiceDefinition\Method
*/
protected function parseMethod(\SimpleXMLElement $node)
{
$method = new ServiceMethod((string)$node['name'], (string)$node['controller']);
$method = new Method((string)$node['name'], (string)$node['controller']);
foreach($node->argument as $argument)
{
$method->getArguments()->add($this->parseArgument($argument));
}
return $method;
}
@ -59,7 +62,19 @@ class XmlFileLoader extends FileLoader
/**
* @param \SimpleXMLElement $node
*
* @return \Bundle\WebServiceBundle\ServiceDefinition\ServiceType
* @return \Bundle\WebServiceBundle\ServiceDefinition\Argument
*/
protected function parseArgument(\SimpleXMLElement $node)
{
$argument = new Argument((string)$node['name'], $this->parseType($node->type));
return $argument;
}
/**
* @param \SimpleXMLElement $node
*
* @return \Bundle\WebServiceBundle\ServiceDefinition\Type
*/
protected function parseType(\SimpleXMLElement $node)
{
@ -67,7 +82,7 @@ class XmlFileLoader extends FileLoader
$qname = explode(':', $node['xml-type'], 2);
$xmlType = sprintf('{%s}%s', $namespaces[$qname[0]], $qname[1]);
$type = new ServiceType((string)$node['php-type'], $xmlType, (string)$node['converter']);
$type = new Type((string)$node['php-type'], $xmlType, (string)$node['converter']);
return $type;
}

View File

@ -2,15 +2,19 @@
namespace Bundle\WebServiceBundle\ServiceDefinition;
class ServiceMethod
use Bundle\WebServiceBundle\Util\Collection;
class Method
{
private $name;
private $controller;
private $arguments;
public function __construct($name = null, $controller = null)
public function __construct($name = null, $controller = null, array $arguments = array())
{
$this->setName($name);
$this->setController($controller);
$this->setArguments($arguments);
}
public function getName()
@ -32,4 +36,15 @@ class ServiceMethod
{
$this->controller = $controller;
}
public function getArguments()
{
return $this->arguments;
}
public function setArguments($arguments)
{
$this->arguments = new Collection('getName');
$this->arguments->addAll($arguments);
}
}

View File

@ -2,7 +2,7 @@
namespace Bundle\WebServiceBundle\ServiceDefinition;
class ServiceType
class Type
{
private $phpType;
private $xmlType;