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 SimpleContentRestrictionTest extends TestCase {
50
51
52
53
54
55
56 public void testSimpleContentRestriction() 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
81
82
83
84
85
86
87 QName TYPE_QNAME = new QName("http://soapinterop.org/types",
88 "dietdrinksize");
89 InputStream is = new FileInputStream(Resources.asURI("screstriction.xsd"));
90 XmlSchemaCollection schemaCol = new XmlSchemaCollection();
91 XmlSchema schema = schemaCol.read(new StreamSource(is), null);
92
93 XmlSchemaComplexType xsct =
94 (XmlSchemaComplexType)schema.getTypeByName(TYPE_QNAME);
95 assertNotNull(xsct);
96
97 XmlSchemaSimpleContent xssc = (XmlSchemaSimpleContent)xsct.getContentModel();
98 assertNotNull(xssc);
99
100 XmlSchemaSimpleContentRestriction xsscr
101 = (XmlSchemaSimpleContentRestriction)xssc.getContent();
102 assertNotNull(xsscr);
103 assertEquals(new QName("http://soapinterop.org/types", "drinksize"),
104 xsscr.getBaseTypeName());
105 XmlSchemaObjectCollection xsoc = xsscr.getAttributes();
106 assertNotNull(xsoc);
107 assertEquals(2, xsoc.getCount());
108
109 Set s = new HashSet();
110 s.add("units");
111 s.add("id");
112 for (int i = 0; i < xsoc.getCount(); i++) {
113 XmlSchemaAttribute xsa = (XmlSchemaAttribute)xsoc.getItem(i);
114 String name = xsa.getName();
115 if (name.equals("units")) {
116 assertEquals(new QName("http://soapinterop.org/types", "units"),
117 xsa.getQName());
118 assertEquals(new QName("http://www.w3.org/2001/XMLSchema", "string"),
119 xsa.getSchemaTypeName());
120 assertNull(xsa.getDefaultValue());
121 assertEquals("required", xsa.getUse().getValue());
122 assertNull(xsa.getFixedValue());
123 } else if (name.equals("id")) {
124 assertEquals(new QName("http://soapinterop.org/types", "id"),
125 xsa.getQName());
126 assertEquals(new QName("http://www.w3.org/2001/XMLSchema", "integer"),
127 xsa.getSchemaTypeName());
128 assertEquals("001", xsa.getDefaultValue());
129 assertEquals("required", xsa.getUse().getValue());
130 assertNull(xsa.getFixedValue());
131 } else {
132 fail("The name \"" + name + "\" was not expected.");
133 }
134 assertTrue(s.remove(name));
135 }
136 assertTrue("The set should have been empty, but instead contained: "
137 + s + ".",
138 s.isEmpty());
139
140 XmlSchemaObjectCollection xsoc2 = xsscr.getFacets();
141 assertNotNull(xsoc2);
142 assertEquals(2, xsoc2.getCount());
143
144 s.clear();
145 s.add("small");
146 s.add("medium");
147 for (int i = 0; i < xsoc2.getCount(); i++) {
148 XmlSchemaEnumerationFacet xsef =
149 (XmlSchemaEnumerationFacet)xsoc2.getItem(i);
150 String value = (String)xsef.getValue();
151 if (!(value.equals("small") || value.equals("medium"))) {
152 fail("Unexpected enumeration value of \"" + value
153 + "\" found.");
154 }
155 assertTrue(s.remove(value));
156 }
157 assertTrue("The set should have been empty, but instead contained: "
158 + s + ".",
159 s.isEmpty());
160
161 }
162
163 }