File: schema.js

package info (click to toggle)
virtuoso-opensource 6.1.4%2Bdfsg1-7
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 245,116 kB
  • sloc: ansic: 639,631; sql: 439,225; xml: 287,085; java: 61,048; sh: 38,723; cpp: 36,889; cs: 25,240; php: 12,562; yacc: 9,036; lex: 7,149; makefile: 6,093; jsp: 4,447; awk: 1,643; perl: 1,017; ruby: 1,003; python: 329
file content (95 lines) | stat: -rw-r--r-- 3,088 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
/*
 *  $Id: schema.js,v 1.7.2.3 2010/04/06 16:46:12 source Exp $
 *
 *  This file is part of the OpenLink Software Ajax Toolkit (OAT) project.
 *
 *  Copyright (C) 2005-2010 OpenLink Software
 *
 *  See LICENSE file for details.
 */
/*
*/
OAT.Schema = {
	getType:function(schemaElements,name) {
		var schemas = schemaElements;
		if (!(schemas instanceof Array)) { schemas = [schemaElements]; }
		var availTypeNodes = OAT.Xml.getElementsByLocalName(schemas,"complexType");
		for (var i=0;i<availTypeNodes.length;i++) {
			var node = availTypeNodes[i];

			if (node.getAttribute("name") == name) {
				/* correct type node */
				var result = {};
				var elems = OAT.Xml.getElementsByLocalName(node,"element");
				for (var i=0;i<elems.length;i++) {
					var n = elems[i].getAttribute("name");
					var t = elems[i].getAttribute("type");
					if (t) {
						t = t.split(":").pop();
						result[n] = OAT.Schema.getType(schemas,t);
					} else {
						var ref = elems[i].getAttribute("ref").split(":").pop();
						var type = OAT.Schema.getElement(schemas,ref);
						if (elems.length > 1) {
							result[ref] = type;
						} else return [type];
					}

				}
				/* also try arrays */
				if (elems.length) { return result; }
				var res = OAT.Xml.getElementsByLocalName(node,"restriction");
				if (res.length && res[0].getAttribute("base").split(":").pop() == "Array") {
					/* is array! */
					result = [];
					var a = OAT.Xml.getElementsByLocalName(res[0],"attribute")[0];
					var t = a.getAttribute("wsdl:arrayType").split(":").pop().match(/(.*)\[\]/)[1];
					result.push(OAT.Schema.getType(schemas,t));
				}
				return result;

			}
		}
		return name;
	},

	getElement:function(schemaElements,name) {
		var schemas = schemaElements;
		if (!(schemas instanceof Array)) { schemas = [schemaElements]; }
		var availElementNodes = OAT.Xml.getElementsByLocalName(schemas,"element");
		for (var i=0;i<availElementNodes.length;i++) {
			var node = availElementNodes[i];
			if (node.getAttribute("name") == name) {
				/* correct type node */
				var result = {};
				var elems = OAT.Xml.getElementsByLocalName(node,"element");
				for (var i=0;i<elems.length;i++) {
					var n = elems[i].getAttribute("name");
					var t = elems[i].getAttribute("type");
					if (t) {
						t = t.split(":").pop();
						result[n] = OAT.Schema.getType(schemas,t);
					} else {
						var ref = elems[i].getAttribute("ref").split(":").pop();
						var type = OAT.Schema.getElement(schemas,ref);
						if (elems.length > 1) {
							result[ref] = type;
						} else return [type];
					}
				}
				/* also try arrays */
				if (elems.length) { return result; }
				var res = OAT.Xml.getElementsByLocalName(node,"restriction");
				if (res.length && res[0].getAttribute("base").split(":").pop() == "Array") {
					/* is array! */
					result = [];
					var a = OAT.Xml.getElementsByLocalName(res[0],"attribute")[0];
					var t = a.getAttribute("wsdl:arrayType").split(":").pop().match(/(.*)\[\]/)[1];
					result.push(OAT.Schema.getType(schemas,t));
				}
				return result;
			}
		}
		return false;
	}
}