[*] WS : improved performances

This commit is contained in:
Damien Metzger
2013-07-03 17:03:33 +02:00
parent d2440df8ca
commit ec981b7f86
+18 -3
View File
@@ -48,6 +48,8 @@ class WebserviceOutputBuilderCore
protected $statusInt; protected $statusInt;
protected $wsParamOverrides; protected $wsParamOverrides;
protected static $_cache_ws_parameters = array();
// Header properties // Header properties
protected $headerParams = array( protected $headerParams = array(
'Access-Time' => 0, 'Access-Time' => 0,
@@ -359,7 +361,11 @@ class WebserviceOutputBuilderCore
$type_of_view = self::VIEW_DETAILS; $type_of_view = self::VIEW_DETAILS;
} }
$ws_params = $objects['empty']->getWebserviceParameters(); $class = get_class($objects['empty']);
if (!isset(WebserviceOutputBuilder::$_cache_ws_parameters[$class]))
WebserviceOutputBuilder::$_cache_ws_parameters[$class] = $objects['empty']->getWebserviceParameters();
$ws_params = WebserviceOutputBuilder::$_cache_ws_parameters[$class];
foreach ($this->wsParamOverrides AS $p) foreach ($this->wsParamOverrides AS $p)
{ {
$object = $p['object']; $object = $p['object'];
@@ -406,7 +412,11 @@ class WebserviceOutputBuilderCore
*/ */
public function renderEntityMinimum($object, $depth) public function renderEntityMinimum($object, $depth)
{ {
$ws_params = $object->getWebserviceParameters(); $class = get_class($object);
if (!isset(WebserviceOutputBuilder::$_cache_ws_parameters[$class]))
WebserviceOutputBuilder::$_cache_ws_parameters[$class] = $object->getWebserviceParameters();
$ws_params = WebserviceOutputBuilder::$_cache_ws_parameters[$class];
$more_attr['id'] = $object->id; $more_attr['id'] = $object->id;
$more_attr['xlink_resource'] = $this->wsUrl.$ws_params['objectsNodeName'].'/'.$object->id; $more_attr['xlink_resource'] = $this->wsUrl.$ws_params['objectsNodeName'].'/'.$object->id;
$output = $this->setIndent($depth).$this->objectRender->renderNodeHeader($ws_params['objectNodeName'], $ws_params, $more_attr, false); $output = $this->setIndent($depth).$this->objectRender->renderNodeHeader($ws_params['objectNodeName'], $ws_params, $more_attr, false);
@@ -446,7 +456,12 @@ class WebserviceOutputBuilderCore
public function renderEntity($object, $depth) public function renderEntity($object, $depth)
{ {
$output = ''; $output = '';
$ws_params = $object->getWebserviceParameters();
$class = get_class($object);
if (!isset(WebserviceOutputBuilder::$_cache_ws_parameters[$class]))
WebserviceOutputBuilder::$_cache_ws_parameters[$class] = $object->getWebserviceParameters();
$ws_params = WebserviceOutputBuilder::$_cache_ws_parameters[$class];
foreach ($this->wsParamOverrides AS $p) foreach ($this->wsParamOverrides AS $p)
{ {
$o = $p['object']; $o = $p['object'];