in src/main/java/org/apache/ws/commons/schema/SchemaBuilder.java [1750:1798]
private void handleSimpleTypeUnion(XmlSchema schema, Element schemaEl, XmlSchemaSimpleType simpleType,
Element unionEl) {
XmlSchemaSimpleTypeUnion union = new XmlSchemaSimpleTypeUnion();
/******
* if( union has a memberTypes attribute ) add the memberTypeSources string for (each memberType in
* the list ) lookup(memberType) for( all SimpleType child Elements) add the simpleTypeName (if any)
* to the memberType Sources do a handleSimpleType with the simpleTypeElement
*/
if (unionEl.hasAttribute("memberTypes")) {
String memberTypes = unionEl.getAttribute("memberTypes");
union.setMemberTypesSource(memberTypes);
Vector<QName> v = new Vector<QName>();
StringTokenizer tokenizer = new StringTokenizer(memberTypes, " ");
while (tokenizer.hasMoreTokens()) {
String member = tokenizer.nextToken();
v.add(getRefQName(member, unionEl));
}
union.setMemberTypesQNames(new QName[v.size()]);
v.copyInto(union.getMemberTypesQNames());
}
Element inlineUnionType = XDOMUtil.getFirstChildElementNS(unionEl, XmlSchema.SCHEMA_NS, "simpleType");
while (inlineUnionType != null) {
XmlSchemaSimpleType unionSimpleType = handleSimpleType(schema, inlineUnionType, schemaEl, false);
union.getBaseTypes().add(unionSimpleType);
if (!unionSimpleType.isAnonymous()) {
union.setMemberTypesSource(union.getMemberTypesSource() + " " + unionSimpleType.getName());
}
inlineUnionType =
XDOMUtil.getNextSiblingElementNS(inlineUnionType, XmlSchema.SCHEMA_NS, "simpleType");
}
// NodeList annotations = unionEl.getElementsByTagNameNS(
// XmlSchema.SCHEMA_NS, "annotation");
Element unionAnnotationEl =
XDOMUtil.getFirstChildElementNS(unionEl, XmlSchema.SCHEMA_NS, "annotation");
if (unionAnnotationEl != null) {
XmlSchemaAnnotation unionAnnotation = handleAnnotation(unionAnnotationEl);
union.setAnnotation(unionAnnotation);
}
simpleType.content = union;
}