AST memberTypeNode = identifierNode.getNextSibling();
while (memberTypeNode != null) {
AST memberNode = TypesUtils.getCorbaTypeNameNode(memberTypeNode);
XmlSchemaType schemaType = null;
CorbaType corbaType = null;
Scope fqName = null;
try {
TypesVisitor visitor = new TypesVisitor(structScope,
definition,
schema,
wsdlVisitor,
null);
visitor.visit(memberTypeNode);
schemaType = visitor.getSchemaType();
corbaType = visitor.getCorbaType();
fqName = visitor.getFullyQualifiedName();
} catch (Exception ex) {
throw new RuntimeException(ex);
}
// Handle multiple struct member declarators
// <declarators> :== <declarator> { "," <declarator> }*
//
// A multiple declarator must be an identifier (i.e. of type IDENT)
// and cannot be a previous declared (or forward declared) type
// (hence the ScopedNameVisitor.accept() call).
while (memberNode != null
&& memberNode.getType() == IDLTokenTypes.IDENT
&& !ScopedNameVisitor.accept(structScope, definition, schema, memberNode, wsdlVisitor, true)) {
XmlSchemaType memberSchemaType = schemaType;
CorbaType memberCorbaType = corbaType;
// needed for anonymous arrays in structs
if (ArrayVisitor.accept(memberNode)) {
Scope anonScope = new Scope(structScope,
TypesUtils.getCorbaTypeNameNode(memberTypeNode));
ArrayVisitor arrayVisitor = new ArrayVisitor(anonScope,