116 \
Magento\Framework\Locale\ResolverInterface $localeResolver,
119 $this->_soapFaultCode = $exception->getOriginator();
120 $this->_parameters = $exception->getDetails();
121 $this->_wrappedErrors = $exception->getErrors();
122 $this->stackTrace = $exception->getStackTrace() ?: $exception->getTraceAsString();
123 $this->message = $exception->getMessage();
125 $this->_soapServer = $soapServer;
126 $this->_localeResolver = $localeResolver;
138 $this->
addDetails([self::NODE_DETAIL_TRACE =>
"<![CDATA[{$this->stackTrace}]]>"]);
178 $this->_details = array_merge($this->_details,
$details);
209 return \Locale::getPrimaryLanguage($this->_localeResolver->getLocale());
232 $detailsNamespace = !empty($detailXml)
233 ?
'xmlns:m="' . urlencode($this->_soapServer->generateUri(
true)) .
'"' 235 $reason = htmlentities($reason);
237 <?xml version=
"1.0" encoding=
"utf-8" ?>
238 <env:Envelope xmlns:env=
"http://www.w3.org/2003/05/soap-envelope" $detailsNamespace>
242 <env:Value>env:
$code</env:Value>
245 <env:Text xml:lang=
"$language">$reason</env:Text>
270 $detailsXml =
"<env:Detail><m:{$errorDetailsNode}>" 271 . $detailsXml .
"</m:{$errorDetailsNode}></env:Detail>";
288 foreach (
$details as $detailNode => $detailValue) {
289 $detailNode = htmlspecialchars($detailNode);
290 if (is_numeric($detailNode)) {
293 switch ($detailNode) {
295 if (is_string($detailValue) || is_numeric($detailValue)) {
296 $detailsXml .=
"<m:{$detailNode}>" . htmlspecialchars($detailValue) .
"</m:{$detailNode}>";
319 if (!is_array($parameters)) {
323 foreach ($parameters as $parameterName => $parameterValue) {
324 if ((is_string($parameterName) || is_numeric($parameterName))
325 && (is_string($parameterValue) || is_numeric($parameterValue))
330 if (is_numeric($parameterName)) {
333 $paramsXml .=
"<m:$parameterNode><m:$keyNode>$parameterName</m:$keyNode><m:$valueNode>" 334 . htmlspecialchars($parameterValue) .
"</m:$valueNode></m:$parameterNode>";
337 if (!empty($paramsXml)) {
339 $result =
"<m:$parametersNode>" . $paramsXml .
"</m:$parametersNode>";
354 if (!is_array($wrappedErrors)) {
359 foreach ($wrappedErrors as $error) {
362 if (!empty($errorsXml)) {
364 $result =
"<m:$wrappedErrorsNode>" . $errorsXml .
"</m:$wrappedErrorsNode>";
381 $parameters = $error->getParameters();
382 $rawMessage = $error->getRawMessage();
383 $xml =
"<m:$wrappedErrorNode><m:$messageNode>$rawMessage</m:$messageNode>";
385 if (!empty($parameters)) {
387 $xml .=
"<m:$parametersNode>";
388 foreach ($parameters as $key =>
$value) {
392 $xml .=
"<m:$parameterNode>" .
393 "<m:$keyNode>$key</m:$keyNode><m:$valueNode>$value</m:$valueNode>" .
394 "</m:$parameterNode>";
396 $xml .=
"</m:$parametersNode>";
398 $xml .=
"</m:$wrappedErrorNode>";
_convertDetailsToXml($details)
_generateErrorNodeXML($error)
_getWrappedErrorsXml($wrappedErrors)
__construct(\Magento\Framework\App\RequestInterface $request, Server $soapServer, \Magento\Framework\Webapi\Exception $exception, \Magento\Framework\Locale\ResolverInterface $localeResolver, State $appState)
const FAULT_CODE_RECEIVER
const NODE_DETAIL_WRAPPED_ERROR_MESSAGE
const NODE_DETAIL_WRAPPED_ERROR_PARAMETERS
const NODE_DETAIL_WRAPPED_ERROR_PARAMETER
getSoapFaultMessage($reason, $code, $details=null)
const NODE_DETAIL_WRAPPER
const NODE_DETAIL_WRAPPED_EXCEPTION
const NODE_DETAIL_PARAMETER_VALUE
_generateDetailXml($details)
const NODE_DETAIL_PARAMETER
const NODE_DETAIL_WRAPPED_ERROR_KEY
const FAULT_REASON_INTERNAL
const NODE_DETAIL_PARAMETERS
_getParametersXml($parameters)
const NODE_DETAIL_PARAMETER_KEY
const NODE_DETAIL_WRAPPED_ERROR_VALUE
const NODE_DETAIL_WRAPPED_ERRORS
const NODE_DETAIL_WRAPPED_ERROR