FileDocCategorySizeDatePackage
XSNamedMap4Types.javaAPI DocJava SE 6 API5067Tue Jun 10 00:22:48 BST 2008com.sun.org.apache.xerces.internal.impl.xs.util

XSNamedMap4Types

public class XSNamedMap4Types extends XSNamedMapImpl
Containts the map between qnames and XSObject's.
xerces.internal
author
Sandy Gao, IBM
version
$Id: XSNamedMap4Types.java,v 1.2.6.1 2005/09/09 07:28:12 sunithareddy Exp $

Fields Summary
short
fType
Constructors Summary
public XSNamedMap4Types(String namespace, SymbolHash map, short type)
Construct an XSNamedMap implmentation for one namespace

param
namespace the namespace to which the components belong
param
map the map from local names to components
param
type the type of components

        super(namespace, map);
        fType = type;
    
public XSNamedMap4Types(String[] namespaces, SymbolHash[] maps, int num, short type)
Construct an XSNamedMap implmentation for a list of namespaces

param
namespaces the namespaces to which the components belong
param
maps the maps from local names to components
param
num the number of namespaces
param
type the type of components

        super(namespaces, maps, num);
        fType = type;
    
Methods Summary
public synchronized intgetLength()
The number of XSObjects in the XSObjectList. The range of valid child node indices is 0 to length-1 inclusive.

        if (fLength == -1) {
            // first get the number of components for all types
            int length = 0;
            for (int i = 0; i < fNSNum; i++)
                length += fMaps[i].getLength();
            // then copy all types to an temporary array
            int pos = 0;
            XSObject[] array = new XSObject[length];
            for (int i = 0; i < fNSNum; i++) {
                pos += fMaps[i].getValues(array, pos);
            }
            // then copy either simple or complex types to fArray,
            // depending on which kind is required
            fLength = 0;
            fArray = new XSObject[length];
            XSTypeDefinition type;
            for (int i = 0; i < length; i++) {
                type = (XSTypeDefinition)array[i];
                if (type.getTypeCategory() == fType) {
                    fArray[fLength++] = type;
                }
            }
        }
        return fLength;
    
public synchronized com.sun.org.apache.xerces.internal.xs.XSObjectitem(int index)
Returns the indexth item in the map. The index starts at 0. If index is greater than or equal to the number of nodes in the list, this returns null.

param
index The position in the map from which the item is to be retrieved.
return
The XSObject at the indexth position in the XSNamedMap, or null if that is not a valid index.

        if (fArray == null) {
            getLength();
        }
        if (index < 0 || index >= fLength)
            return null;
        return fArray[index];
    
public com.sun.org.apache.xerces.internal.xs.XSObjectitemByName(java.lang.String namespace, java.lang.String localName)
Retrieves an XSObject specified by local name and namespace URI.

param
namespace The namespace URI of the XSObject to retrieve.
param
localName The local name of the XSObject to retrieve.
return
A XSObject (of any type) with the specified local name and namespace URI, or null if they do not identify any XSObject in this map.

        if (namespace != null)
            namespace = namespace.intern();
        for (int i = 0; i < fNSNum; i++) {
            if (namespace == fNamespaces[i]) {
                XSTypeDefinition type = (XSTypeDefinition)fMaps[i].get(localName);
                // only return it if it mataches the required type
                if (type.getTypeCategory() == fType)
                    return type;
                return null;
            }
        }
        return null;