1 package tests;
2
3 import junit.framework.TestCase;
4 import org.apache.ws.commons.schema.*;
5
6 import javax.xml.namespace.QName;
7 import javax.xml.transform.stream.StreamSource;
8 import java.io.FileInputStream;
9 import java.io.InputStream;
10 import java.util.HashSet;
11 import java.util.Set;
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 public class ComplexContentRestrictionTest extends TestCase {
31
32
33
34
35
36
37 public void testComplexContentRestriction() throws Exception {
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 QName TYPE_QNAME = new QName("http://soapinterop.org/types",
70 "NoAssemblyRequiredProduct");
71 InputStream is = new FileInputStream(Resources.asURI("deriverestriction.xsd"));
72 XmlSchemaCollection schemaCol = new XmlSchemaCollection();
73 XmlSchema schema = schemaCol.read(new StreamSource(is), null);
74
75 XmlSchemaComplexType cType =
76 (XmlSchemaComplexType)schemaCol.getTypeByQName(TYPE_QNAME);
77 assertNotNull(cType);
78
79 XmlSchemaContentModel xscm = cType.getContentModel();
80 assertNotNull(xscm);
81
82 XmlSchemaComplexContentRestriction xsccr =
83 (XmlSchemaComplexContentRestriction)xscm.getContent();
84 assertEquals(new QName("http://soapinterop.org/types",
85 "AssemblyRequiredProduct"),
86 xsccr.getBaseTypeName());
87
88 XmlSchemaSequence xsp = (XmlSchemaSequence)xsccr.getParticle();
89 assertNotNull(xsp);
90
91 XmlSchemaObjectCollection col = xsp.getItems();
92
93 Set s = new HashSet();
94 s.add("Name");
95 s.add("Description");
96 s.add("Parts");
97 for (int i = 0; i < col.getCount(); i++) {
98 XmlSchemaElement xse = (XmlSchemaElement)col.getItem(i);
99 String name = xse.getName();
100 if (name.equals("Name")) {
101 assertEquals(new QName("", "Name"),
102 xse.getQName());
103 assertEquals(new QName("http://www.w3.org/2001/XMLSchema",
104 "string"),
105 xse.getSchemaTypeName());
106 assertTrue(!xse.isAbstract());
107 assertTrue(!xse.isNillable());
108 } else if (name.equals("Description")) {
109 assertEquals(new QName("", "Description"),
110 xse.getQName());
111 assertEquals(new QName("http://www.w3.org/2001/XMLSchema",
112 "string"),
113 xse.getSchemaTypeName());
114 assertTrue(!xse.isAbstract());
115 assertTrue(xse.isNillable());
116 } else if (name.equals("Parts")) {
117 assertEquals(new QName("", "Parts"),
118 xse.getQName());
119 assertEquals(new QName("http://www.w3.org/2001/XMLSchema",
120 "string"),
121 xse.getSchemaTypeName());
122 } else {
123 fail("An invalid name of \"" + name + "\" was found.");
124 }
125 s.remove(name);
126 }
127
128 assertTrue("The set should have been empty, but instead contained: "
129 + s + ".",
130 s.isEmpty());
131
132 }
133
134 }