private void populateAttribList()

in src/wsdl/org/apache/axis/wsdl/wsdl2ws/ParamWriter.java [89:204]


    private void populateAttribList() throws WrapperFault
    {
        CElementDecl elemi = type.getExtensionBaseType();
        if (elemi != null)
        {
            extensionBaseAttrib = new ParameterInfo();
            extensionBaseAttrib.setParamName(elemi.getName().getLocalPart(), wscontext.getTypemap());
            
            Type elementType = elemi.getType();

            if (CUtils.getSimpleType(elementType.getName()) != null)
                extensionBaseAttrib.setTypeName(CUtils.getSimpleType(elementType.getName()));
            else
            {
                extensionBaseAttrib.setTypeName(elementType.getLanguageSpecificName());
                extensionBaseAttrib.setSimpleType(false);
            }
            
            extensionBaseAttrib.setType(elemi.getType());
            extensionBaseAttrib.setElementName(elemi.getName());
        }
        
        ArrayList attribfields = new ArrayList();
        ArrayList elementfields = new ArrayList();

        Iterator names = type.getAttributes();
        if (names != null)
            while (names.hasNext())
                attribfields.add(names.next());
        
        names = type.getElementnames();
        while (names.hasNext())
        {
            elementfields.add(names.next());
        }
        
        int intAttrFieldSz = attribfields.size();
        attributeParamCount = intAttrFieldSz;
        int intEleFieldSz = elementfields.size();
        this.attribs = new ParameterInfo[intAttrFieldSz + intEleFieldSz];
        for (int i = 0; i < intAttrFieldSz; i++)
        {
            CContainedAttribute attr = (CContainedAttribute)attribfields.get(i);
            
            this.attribs[i] = new ParameterInfo();
            this.attribs[i].setParamName(attr.getName(), wscontext.getTypemap());
            if (CUtils.isSimpleType(attr.getType().getName()))
                this.attribs[i].setTypeName(CUtils.getSimpleType(attr.getType().getName()));
            else
            {
                this.attribs[i].setTypeName(attr.getType().getLanguageSpecificName());
                this.attribs[i].setSimpleType(false);
            }
            this.attribs[i].setType(attr.getType());
            this.attribs[i].setAttribute(true);
            this.attribs[i].setElementName(attr.getType().getName());
            this.attribs[i].setOptional(attr.isOptional()); 
            this.attribs[i].setAttributeFixedValue(attr.getFixedValue());
            this.attribs[i].setAttributeDefaultValue(attr.getDefaultValue());
        }

        for (int i = intAttrFieldSz; i < intAttrFieldSz + intEleFieldSz; i++)
        {
            this.attribs[i] = new ParameterInfo();
            this.attribs[i].setParamName((String) elementfields.get(i - attributeParamCount), wscontext.getTypemap());
            CElementDecl elem = type.getElementForElementName(this.attribs[i].getParamName());
            Type elementType = elem.getType();
            this.attribs[i].setAnyElement(elementType.isAnyElement());

            if (CUtils.isSimpleType(elementType.getName()))
                this.attribs[i].setTypeName(CUtils.getSimpleType(elementType.getName()));
            else
            {
                this.attribs[i].setTypeName(elementType.getLanguageSpecificName());
                this.attribs[i].setSimpleType(false);
            }
            
            this.attribs[i].setType(elementType);
            this.attribs[i].setElementName(elem.getName());
            this.attribs[i].setChoiceElement(elem.getChoiceElement());
            this.attribs[i].setAllElement(elem.getAllElement());
            this.attribs[i].setNsQualified(elem.getNsQualified());            
            this.attribs[i].setMinOccurs(elem.getMinOccurs());
            this.attribs[i].setMaxOccurs(elem.getMaxOccurs());
            this.attribs[i].setNillable(elem.isNillable());

            
            if (elementType.isArray())
            { 
                Type arrayType = CUtils.getArrayType(elementType);
                
                //get contained type
                this.attribs[i].setArray(true);
                if (CUtils.isSimpleType(arrayType.getName()))
                {
                    this.attribs[i].setTypeName(CUtils.getSimpleType(arrayType.getName()));
                    this.attribs[i].setSimpleType(true);
                }
                else
                {
                    this.attribs[i].setTypeName(arrayType.getLanguageSpecificName());
                    this.attribs[i].setSimpleType(false);
                }
                
                this.attribs[i].setType(arrayType);
            }
            else if (elem.getMaxOccurs() > 1)
            {
                //arrays but the same type as was set above
                this.attribs[i].setArray(true);
            }
            
            if (elem.getMinOccurs() == 0)
                this.attribs[i].setOptional(true);
        }
    }