]> git.eshelyaron.com Git - emacs.git/commitdiff
soap-client: Encode simple type attributes
authorThomas Fitzsimmons <fitzsim@fitzsim.org>
Wed, 24 Jul 2019 08:54:31 +0000 (04:54 -0400)
committerThomas Fitzsimmons <fitzsim@fitzsim.org>
Wed, 24 Jul 2019 09:05:06 +0000 (05:05 -0400)
* lisp/net/soap-client.el (soap-encode-xs-simple-type-attributes):
Encode simple type attributes.

lisp/net/soap-client.el

index 40c6e62500adc7575e4622c91b616b77d9def2bb..7d04cef6a897a2b047b363bc3d3687812a7f0be8 100644 (file)
@@ -1352,14 +1352,25 @@ See also `soap-wsdl-resolve-references'."
 
 (defun soap-encode-xs-simple-type-attributes (value type)
   "Encode the XML attributes for VALUE according to TYPE.
-The xsi:type and an optional xsi:nil attributes are added.  The
-attributes are inserted in the current buffer at the current
-position.
+The attributes are inserted in the current buffer at the current
+position.  If TYPE has no attributes, the xsi:type attribute and
+an optional xsi:nil attribute are added.
 
 This is a specialization of `soap-encode-attributes' for
 `soap-xs-simple-type' objects."
-  (insert " xsi:type=\"" (soap-element-fq-name type) "\"")
-  (unless value (insert " xsi:nil=\"true\"")))
+  (let ((attributes (soap-get-xs-attributes type)))
+    (dolist (a attributes)
+      (let ((element-name (soap-element-name a)))
+        (if (soap-xs-attribute-default a)
+            (insert " " element-name
+                    "=\"" (soap-xs-attribute-default a) "\"")
+          (dolist (value-pair value)
+            (when (equal element-name (symbol-name (car-safe value-pair)))
+              (insert " " element-name
+                      "=\"" (cdr value-pair) "\""))))))
+    (unless attributes
+      (insert " xsi:type=\"" (soap-element-fq-name type) "\"")
+      (unless value (insert " xsi:nil=\"true\"")))))
 
 (defun soap-encode-xs-simple-type (value type)
   "Encode the VALUE according to TYPE.