aboutsummaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
authorMichael Albinus <[email protected]>2011-03-05 11:32:10 +0100
committerMichael Albinus <[email protected]>2011-03-05 11:32:10 +0100
commitd733e8178e48b2fac690ea676de1e39133f4e21e (patch)
treedfe9e10bb0a4a4593db155f8c2ecd67065ed0280 /lisp
parent3ae59fff628e08b6e167ebdc4fd62e77048cec32 (diff)
Add package name. Fix author email address.
* net/soap-client.el (soap-namespace-put-link): Check if the target name is fully qualified -- use only the name part. (soap-parse-complex-type, soap-parse-sequence): Recognize xsd:all types, treated the same as xsd:sequence. (Bug#8166)
Diffstat (limited to 'lisp')
-rw-r--r--lisp/ChangeLog7
-rw-r--r--lisp/net/soap-client.el21
-rw-r--r--lisp/net/soap-inspect.el3
3 files changed, 25 insertions, 6 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 047d8bb5dc..6aaadf2bae 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,10 @@
+2011-03-05 Alex Harsanyi <[email protected]>
+
+ * net/soap-client.el (soap-namespace-put-link): Check if the target
+ name is fully qualified -- use only the name part.
+ (soap-parse-complex-type, soap-parse-sequence): Recognize xsd:all
+ types, treated the same as xsd:sequence. (Bug#8166)
+
2011-03-05 Eli Zaretskii <[email protected]>
* files.el (find-file-noselect): Don't ask about re-visiting
diff --git a/lisp/net/soap-client.el b/lisp/net/soap-client.el
index b4307223ba..b5453733d1 100644
--- a/lisp/net/soap-client.el
+++ b/lisp/net/soap-client.el
@@ -2,9 +2,10 @@
;; Copyright (C) 2009-2011 Free Software Foundation, Inc.
-;; Author: Alexandru Harsanyi ([email protected])
+;; Author: Alexandru Harsanyi <[email protected]>
;; Created: December, 2009
;; Keywords: soap, web-services, comm, hypermedia
+;; Package: soap-client
;; Homepage: http://code.google.com/p/emacs-soap-client
;; This file is part of GNU Emacs.
@@ -323,13 +324,18 @@ added to the namespace."
;; if name is nil, use TARGET as a name...
(cond ((soap-element-p target)
(setq name (soap-element-name target)))
+ ((consp target) ; a fq name: (namespace . name)
+ (setq name (cdr target)))
((stringp target)
(cond ((string-match "^\\(.*\\):\\(.*\\)$" target)
(setq name (match-string 2 target)))
(t
(setq name target))))))
- (assert name) ; by now, name should be valid
+ ;; by now, name should be valid
+ (assert (and name (not (equal name "")))
+ nil
+ "Cannot determine name for namespace link")
(push (make-soap-namespace-link :name name :target target)
(gethash name (soap-namespace-elements ns))))
@@ -890,7 +896,11 @@ Return a SOAP-NAMESPACE containing the elements."
(when (consp c) ; skip string nodes, which are whitespace
(let ((node-name (soap-l2wk (xml-node-name c))))
(cond
- ((eq node-name 'xsd:sequence)
+ ;; The difference between xsd:all and xsd:sequence is that fields
+ ;; in xsd:all are not ordered and they can occur only once. We
+ ;; don't care about that difference in soap-client.el
+ ((or (eq node-name 'xsd:sequence)
+ (eq node-name 'xsd:all))
(setq type (soap-parse-complex-type-sequence c)))
((eq node-name 'xsd:complexContent)
(setq type (soap-parse-complex-type-complex-content c)))
@@ -909,9 +919,10 @@ NODE is assumed to be an xsd:sequence node. In that case, each
of its children is assumed to be a sequence element. Each
sequence element is parsed constructing the corresponding type.
A list of these types is returned."
- (assert (eq (soap-l2wk (xml-node-name node)) 'xsd:sequence)
+ (assert (let ((n (soap-l2wk (xml-node-name node))))
+ (memq n '(xsd:sequence xsd:all)))
nil
- "soap-parse-sequence: expecting xsd:sequence node, got %s"
+ "soap-parse-sequence: expecting xsd:sequence or xsd:all node, got %s"
(soap-l2wk (xml-node-name node)))
(let (elements)
(dolist (e (soap-xml-get-children1 node 'xsd:element))
diff --git a/lisp/net/soap-inspect.el b/lisp/net/soap-inspect.el
index 7cce9844d7..8f67d02dc6 100644
--- a/lisp/net/soap-inspect.el
+++ b/lisp/net/soap-inspect.el
@@ -2,9 +2,10 @@
;; Copyright (C) 2010-2011 Free Software Foundation, Inc.
-;; Author: Alexandru Harsanyi ([email protected])
+;; Author: Alexandru Harsanyi <[email protected]>
;; Created: October 2010
;; Keywords: soap, web-services, comm, hypermedia
+;; Package: soap-client
;; Homepage: http://code.google.com/p/emacs-soap-client
;; This file is part of GNU Emacs.