private CorbaType processChoice(XmlSchemaChoice choice,
QName defaultName,
QName schemaTypeName)
throws Exception {
QName choicename = null;
if (schemaTypeName == null) {
choicename = createQNameCorbaNamespace(defaultName.getLocalPart());
} else {
choicename = createQNameCorbaNamespace(schemaTypeName.getLocalPart());
}
choicename = checkPrefix(choicename);
CorbaType corbatype = createUnion(choicename, choice, defaultName, schemaTypeName);
String repoId = REPO_STRING + corbatype.getQName().getLocalPart().replace('.', '/')
+ IDL_VERSION;
((Union)corbatype).setRepositoryID(repoId);
if (!(choice.getMaxOccurs() == 1) || !(choice.getMinOccurs() == 1)) {
QName name = createQNameTargetNamespace(corbatype.getQName().getLocalPart() + "Array");
CorbaType arrayType =
createArray(name, corbatype.getQName(), corbatype.getQName(),
choice.getMaxOccurs(), choice.getMinOccurs(), false);
if (arrayType != null
&& !isDuplicate(arrayType)) {
typeMappingType.getStructOrExceptionOrUnion().add(arrayType);
}
}
return corbatype;
}