Function: soap-resolve-references-for-operation
soap-resolve-references-for-operation is a byte-compiled function
defined in soap-client.el.gz.
Signature
(soap-resolve-references-for-operation OPERATION WSDL)
Documentation
Resolve references for an OPERATION type using the WSDL document.
See also soap-resolve-references and
soap-wsdl-resolve-references
Source Code
;; Defined in /usr/src/emacs/lisp/net/soap-client.el.gz
(defun soap-resolve-references-for-operation (operation wsdl)
"Resolve references for an OPERATION type using the WSDL document.
See also `soap-resolve-references' and
`soap-wsdl-resolve-references'"
(let ((namespace (soap-element-namespace-tag operation)))
(when namespace
(let ((nstag (car (rassoc namespace (soap-wsdl-alias-table wsdl)))))
(when nstag
(setf (soap-element-namespace-tag operation) nstag)))))
(let ((input (soap-operation-input operation))
(counter 0))
(let ((name (car input))
(message (cdr input)))
;; Name this part if it was not named
(when (or (null name) (equal name ""))
(setq name (format "in%d" (cl-incf counter))))
(when (soap-name-p message)
(setf (soap-operation-input operation)
(cons (intern name)
(soap-wsdl-get message wsdl 'soap-message-p))))))
(let ((output (soap-operation-output operation))
(counter 0))
(let ((name (car output))
(message (cdr output)))
(when (or (null name) (equal name ""))
(setq name (format "out%d" (cl-incf counter))))
(when (soap-name-p message)
(setf (soap-operation-output operation)
(cons (intern name)
(soap-wsdl-get message wsdl 'soap-message-p))))))
(let ((resolved-faults nil)
(counter 0))
(dolist (fault (soap-operation-faults operation))
(let ((name (car fault))
(message (cdr fault)))
(when (or (null name) (equal name ""))
(setq name (format "fault%d" (cl-incf counter))))
(if (soap-name-p message)
(push (cons (intern name)
(soap-wsdl-get message wsdl 'soap-message-p))
resolved-faults)
(push fault resolved-faults))))
(setf (soap-operation-faults operation) resolved-faults))
(when (= (length (soap-operation-parameter-order operation)) 0)
(setf (soap-operation-parameter-order operation)
(mapcar #'car (soap-message-parts
(cdr (soap-operation-input operation))))))
(setf (soap-operation-parameter-order operation)
(mapcar (lambda (p)
(if (stringp p)
(intern p)
p))
(soap-operation-parameter-order operation))))