{
ElementInfo elemi = type.getExtensionBaseType();
if (elemi != null)
{
extensionBaseAttrib = new AttributeInfo(this.classname);
extensionBaseAttrib.setParamName(elemi.getName().getLocalPart());
extensionBaseAttrib.setTypeName(
CUtils.getclass4qname(elemi.getType().getName()));
extensionBaseAttrib.setType(elemi.getType());
extensionBaseAttrib.setElementName(elemi.getName());
}
ArrayList attribfeilds = new ArrayList();
ArrayList elementfeilds = new ArrayList();
Iterator names = type.getAttributeNames();
while (names.hasNext())
{
attribfeilds.add(names.next());
}
names = type.getElementnames();
while (names.hasNext())
{
elementfeilds.add(names.next());
}
int intAttrFieldSz = attribfeilds.size();
attributeParamCount = intAttrFieldSz;
int intEleFieldSz = elementfeilds.size();
this.attribs = new AttributeInfo[intAttrFieldSz + intEleFieldSz];
for (int i = 0; i < intAttrFieldSz; i++)
{
this.attribs[i] = new AttributeInfo(this.classname);
this.attribs[i].setParamName((String) attribfeilds.get(i));
Type attribType =
type.getTypForAttribName(this.attribs[i].getParamName());
if (CUtils.isSimpleType(attribType.getName()))
this.attribs[i].setTypeName(
CUtils.getclass4qname(attribType.getName()));
else
{
this.attribs[i].setTypeName(
attribType.getLanguageSpecificName());
this.attribs[i].setSimpleType(false);
}
this.attribs[i].setType(attribType);
this.attribs[i].setAttribute(true);
this.attribs[i].setElementName(attribType.getName());
//TODO this is wrong. correct immediately. this will cause attributes serialized incorrectly
//TODO : how to find whether this attribute is optional or not ?
}
for (int i = intAttrFieldSz; i < intAttrFieldSz + intEleFieldSz; i++)
{
this.attribs[i] = new AttributeInfo(this.classname);
this.attribs[i].setParamName(
(String) elementfeilds.get(i - attributeParamCount));
ElementInfo elem =
type.getElementForElementName(this.attribs[i].getParamName());
Type elementType = elem.getType();