1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package tests;
21
22 import junit.framework.TestCase;
23 import org.apache.ws.commons.schema.*;
24
25 import javax.xml.namespace.QName;
26 import javax.xml.transform.stream.StreamSource;
27 import java.io.FileInputStream;
28 import java.io.InputStream;
29 import java.util.HashSet;
30 import java.util.Set;
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 public class SimpleContentExtensionTest extends TestCase {
50
51
52
53
54
55
56 public void testSimpleContentExtension() throws Exception {
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80 QName ELEMENT_QNAME = new QName("http://soapinterop.org/types",
81 "height");
82 InputStream is = new FileInputStream(Resources.asURI("simplecontentextension.xsd"));
83 XmlSchemaCollection schemaCol = new XmlSchemaCollection();
84 XmlSchema schema = schemaCol.read(new StreamSource(is), null);
85
86 XmlSchemaElement elem = schema.getElementByName(ELEMENT_QNAME);
87 assertNotNull(elem);
88 assertEquals("height", elem.getName());
89 assertEquals(new QName("http://soapinterop.org/types", "height"),
90 elem.getQName());
91
92 XmlSchemaComplexType xsct = (XmlSchemaComplexType)elem.getSchemaType();
93 assertNotNull(xsct);
94 XmlSchemaSimpleContent xssc = (XmlSchemaSimpleContent)xsct.getContentModel();
95 assertNotNull(xssc);
96
97 XmlSchemaSimpleContentExtension xssce
98 = (XmlSchemaSimpleContentExtension)xssc.getContent();
99 assertNotNull(xssce);
100 assertEquals(new QName("http://www.w3.org/2001/XMLSchema", "integer"),
101 xssce.getBaseTypeName());
102
103 XmlSchemaObjectCollection xsoc = xssce.getAttributes();
104 assertEquals(3, xsoc.getCount());
105
106 Set s = new HashSet();
107 s.add("units");
108 s.add("id");
109 s.add("desc");
110 for (int i = 0; i < xsoc.getCount(); i++) {
111 XmlSchemaAttribute xsa = (XmlSchemaAttribute)xsoc.getItem(i);
112 String name = xsa.getName();
113 if (name.equals("units")) {
114 assertEquals(new QName("http://soapinterop.org/types", "units"),
115 xsa.getQName());
116 assertEquals(new QName("http://www.w3.org/2001/XMLSchema", "string"),
117 xsa.getSchemaTypeName());
118 assertNull(xsa.getDefaultValue());
119 assertEquals("required", xsa.getUse().getValue());
120 assertNull(xsa.getFixedValue());
121 } else if (name.equals("id")) {
122 assertEquals(new QName("http://soapinterop.org/types", "id"),
123 xsa.getQName());
124 assertEquals(new QName("http://www.w3.org/2001/XMLSchema", "integer"),
125 xsa.getSchemaTypeName());
126 assertEquals("001", xsa.getDefaultValue());
127 assertEquals("required", xsa.getUse().getValue());
128 assertNull(xsa.getFixedValue());
129 } else if (name.equals("desc")) {
130 assertEquals(new QName("http://soapinterop.org/types", "desc"),
131 xsa.getQName());
132 assertEquals(new QName("http://www.w3.org/2001/XMLSchema", "decimal"),
133 xsa.getSchemaTypeName());
134 assertEquals("none", xsa.getUse().getValue());
135 assertEquals("1.1", xsa.getFixedValue());
136 } else {
137 fail("The name \"" + name + "\" was not expected.");
138 }
139 s.remove(name);
140 }
141
142 assertTrue("The set should have been empty, but instead contained: "
143 + s + ".",
144 s.isEmpty());
145
146 }
147
148 }