diff --git a/classes/webservice/WebserviceOutputBuilder.php b/classes/webservice/WebserviceOutputBuilder.php index 5fb9cb7c9..cfe632530 100755 --- a/classes/webservice/WebserviceOutputBuilder.php +++ b/classes/webservice/WebserviceOutputBuilder.php @@ -47,6 +47,8 @@ class WebserviceOutputBuilderCore protected $virtualFields = array(); protected $statusInt; protected $wsParamOverrides; + + protected static $_cache_ws_parameters = array(); // Header properties protected $headerParams = array( @@ -359,7 +361,11 @@ class WebserviceOutputBuilderCore $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) { $object = $p['object']; @@ -406,7 +412,11 @@ class WebserviceOutputBuilderCore */ 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['xlink_resource'] = $this->wsUrl.$ws_params['objectsNodeName'].'/'.$object->id; $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) { $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) { $o = $p['object'];