protected Struct processComplexContentStruct(XmlSchemaComplexContent complex, QName defaultName,
Struct corbaStruct, QName schematypeName)
throws Exception {
if (complex.getContent() instanceof XmlSchemaComplexContentExtension) {
XmlSchemaComplexContentExtension extype
= (XmlSchemaComplexContentExtension)complex.getContent();
// Add base as a member of this struct
MemberType memberType = new MemberType();
QName extName = extype.getBaseTypeName();
memberType.setName(extName.getLocalPart() + "_f");
if (extName.getLocalPart().equals("anyType")) {
memberType.setIdltype(processPrimitiveType(extName).getQName());
} else {
memberType.setIdltype(createQNameCorbaNamespace(extName.getLocalPart()));
}
corbaStruct.getMember().add(memberType);
// process attributes at complexContent level
List attlist1 = processAttributesAsMembers(extype.getAttributes().getIterator());
MemberType member = new MemberType();
for (int i = 0; i < attlist1.size(); i++) {
member = (MemberType)attlist1.get(i);
corbaStruct.getMember().add(member);
}
// Process members of Current Type
if (extype.getParticle() instanceof XmlSchemaChoice) {
XmlSchemaChoice choice = (XmlSchemaChoice)extype.getParticle();
MemberType choicemem = processComplexContentStructChoice(choice, schematypeName, defaultName);
corbaStruct.getMember().add(choicemem);
} else if (extype.getParticle() instanceof XmlSchemaSequence) {
XmlSchemaSequence seq = (XmlSchemaSequence)extype.getParticle();
CorbaTypeImpl seqtype =
processSequenceType(seq, defaultName, schematypeName);
if (seqtype != null) {
MemberType seqmem = new MemberType();
seqmem.setName(seqtype.getQName().getLocalPart() + "_f");
QName type = createQNameCorbaNamespace(seqtype.getQName().getLocalPart());
seqmem.setIdltype(type);
corbaStruct.getMember().add(seqmem);
if (!isDuplicate(seqtype)) {
seqtype.setQName(null);
typeMappingType.getStructOrExceptionOrUnion().add(seqtype);
}
} else {
LOG.log(Level.WARNING, "Couldnt map Sequence inside extension");
}
} else if (extype.getParticle() instanceof XmlSchemaAll) {
XmlSchemaAll all = (XmlSchemaAll)extype.getParticle();
CorbaTypeImpl alltype = processAllType(all, defaultName, schematypeName);
if (alltype != null) {
MemberType allmem = new MemberType();
allmem.setName(alltype.getQName().getLocalPart() + "_f");