mrglavas 2004/05/15 15:13:12 Modified: java/src/org/apache/xerces/impl/xs SchemaGrammar.java XSModelImpl.java java/src/org/apache/xerces/impl/xs/util XSNamedMapImpl.java Log: Fixing Jira Bug #960:
http://nagoya.apache.org/jira/browse/XERCESJ-960 Two new kinds of components (XSFacet & XSMultiValueFacet) were added to the XML Schema API some time ago, but the array in SchemaGrammar was't updated to reflect such change. Fixing another bug where we returned null where an empty XSNamedMap is expected for getComponents and getComponentsByNamespace. This wasn't updated when the spec changed. Revision Changes Path 1.37 +28 -25 xml-xerces/java/src/org/apache/xerces/impl/xs/SchemaGrammar.java Index: SchemaGrammar.java =================================================================== RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/xs/SchemaGrammar.java,v retrieving revision 1.36 retrieving revision 1.37 diff -u -r1.36 -r1.37 --- SchemaGrammar.java 24 Feb 2004 22:59:11 -0000 1.36 +++ SchemaGrammar.java 15 May 2004 22:13:12 -0000 1.37 @@ -18,10 +18,23 @@ import java.util.Vector; +import org.apache.xerces.impl.Constants; import org.apache.xerces.impl.dv.SchemaDVFactory; import org.apache.xerces.impl.dv.ValidatedInfo; import org.apache.xerces.impl.dv.XSSimpleType; import org.apache.xerces.impl.xs.identity.IdentityConstraint; +import org.apache.xerces.impl.xs.util.SimpleLocator; +import org.apache.xerces.impl.xs.util.StringListImpl; +import org.apache.xerces.impl.xs.util.XSNamedMap4Types; +import org.apache.xerces.impl.xs.util.XSNamedMapImpl; +import org.apache.xerces.impl.xs.util.XSObjectListImpl; +import org.apache.xerces.parsers.DOMParser; +import org.apache.xerces.parsers.IntegratedParserConfiguration; +import org.apache.xerces.parsers.SAXParser; +import org.apache.xerces.util.SymbolHash; +import org.apache.xerces.util.SymbolTable; +import org.apache.xerces.xni.grammars.XMLGrammarDescription; +import org.apache.xerces.xni.grammars.XSGrammar; import org.apache.xerces.xs.StringList; import org.apache.xerces.xs.XSAnnotation; import org.apache.xerces.xs.XSAttributeDeclaration; @@ -37,19 +50,6 @@ import org.apache.xerces.xs.XSParticle; import org.apache.xerces.xs.XSTypeDefinition; import org.apache.xerces.xs.XSWildcard; -import org.apache.xerces.impl.xs.util.SimpleLocator; -import org.apache.xerces.impl.xs.util.StringListImpl; -import org.apache.xerces.impl.xs.util.XSNamedMap4Types; -import org.apache.xerces.impl.xs.util.XSNamedMapImpl; -import org.apache.xerces.impl.xs.util.XSObjectListImpl; -import org.apache.xerces.impl.Constants; -import org.apache.xerces.parsers.DOMParser; -import org.apache.xerces.parsers.SAXParser; -import org.apache.xerces.parsers.IntegratedParserConfiguration; -import org.apache.xerces.util.SymbolHash; -import org.apache.xerces.util.SymbolTable; -import org.apache.xerces.xni.grammars.XMLGrammarDescription; -import org.apache.xerces.xni.grammars.XSGrammar; /** * This class is to hold all schema component declaration that are declared @@ -695,6 +695,8 @@ false, // idc true, // notation false, // annotation + false, // facet + false, // multi value facet true, // complex type true // simple type }; @@ -755,21 +757,22 @@ } /** - * Returns a list of top-level components, i.e. element declarations, - * attribute declarations, etc.<p> - * Note that <code>XSTypeDefinition#SIMPLE_TYPE</code> and - * <code>XSTypeDefinition#COMPLEX_TYPE</code> can also be used as the - * <code>objectType</code> to retrieve only complex types or simple types, - * instead of all types. - * @param objectType The type of the declaration, i.e. - * ELEMENT_DECLARATION, ATTRIBUTE_DECLARATION, etc. - * @return A list of top-level definition of the specified type in - * <code>objectType</code> or <code>null</code>. + * [schema components]: a list of top-level components, i.e. element + * declarations, attribute declarations, etc. + * @param objectType The type of the declaration, i.e. + * <code>ELEMENT_DECLARATION</code>. Note that + * <code>XSTypeDefinition.SIMPLE_TYPE</code> and + * <code>XSTypeDefinition.COMPLEX_TYPE</code> can also be used as the + * <code>objectType</code> to retrieve only complex types or simple + * types, instead of all types. + * @return A list of top-level definition of the specified type in + * <code>objectType</code> or an empty <code>XSNamedMap</code> if no + * such definitions exist. */ public synchronized XSNamedMap getComponents(short objectType) { if (objectType <= 0 || objectType > MAX_COMP_IDX || !GLOBAL_COMP[objectType]) { - return null; + return XSNamedMapImpl.EMPTY_MAP; } if (fComponents == null) 1.14 +24 -19 xml-xerces/java/src/org/apache/xerces/impl/xs/XSModelImpl.java Index: XSModelImpl.java =================================================================== RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/xs/XSModelImpl.java,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- XSModelImpl.java 24 Feb 2004 22:59:12 -0000 1.13 +++ XSModelImpl.java 15 May 2004 22:13:12 -0000 1.14 @@ -219,17 +219,22 @@ } /** - * Returns a list of top-level components, i.e. element declarations, - * attribute declarations, etc. - * @param objectType The type of the declaration, i.e. - * ELEMENT_DECLARATION, ATTRIBUTE_DECLARATION, etc. - * @return A list of top-level definition of the specified type in - * <code>objectType</code> or <code>null</code>. + * Returns a list of top-level components, i.e. element declarations, + * attribute declarations, etc. + * @param objectType The type of the declaration, i.e. + * <code>ELEMENT_DECLARATION</code>. Note that + * <code>XSTypeDefinition.SIMPLE_TYPE</code> and + * <code>XSTypeDefinition.COMPLEX_TYPE</code> can also be used as the + * <code>objectType</code> to retrieve only complex types or simple + * types, instead of all types. + * @return A list of top-level definitions of the specified type in + * <code>objectType</code> or an empty <code>XSNamedMap</code> if no + * such definitions exist. */ public synchronized XSNamedMap getComponents(short objectType) { if (objectType <= 0 || objectType > MAX_COMP_IDX || !GLOBAL_COMP[objectType]) { - return null; + return XSNamedMapImpl.EMPTY_MAP; } SymbolHash[] tables = new SymbolHash[fGrammarCount]; @@ -274,22 +279,22 @@ } /** - * Convenience method. Returns a list of top-level component declarations - * that are defined within the specified namespace, i.e. element - * declarations, attribute declarations, etc. - * @param objectType The type of the declaration, i.e. - * ELEMENT_DECLARATION, ATTRIBUTE_DECLARATION, etc. - * @param namespace The namespace to which declaration belong or - * <code>null</code> (for components with no targetNamespace). - * @return A list of top-level definition of the specified type in - * <code>objectType</code> and defined in the specified - * <code>namespace</code> or <code>null</code>. + * Convenience method. Returns a list of top-level component declarations + * that are defined within the specified namespace, i.e. element + * declarations, attribute declarations, etc. + * @param objectType The type of the declaration, i.e. + * <code>ELEMENT_DECLARATION</code>. + * @param namespace The namespace to which the declaration belongs or + * <code>null</code> (for components with no target namespace). + * @return A list of top-level definitions of the specified type in + * <code>objectType</code> and defined in the specified + * <code>namespace</code> or an empty <code>XSNamedMap</code>. */ public synchronized XSNamedMap getComponentsByNamespace(short objectType, String namespace) { if (objectType <= 0 || objectType > MAX_COMP_IDX || !GLOBAL_COMP[objectType]) { - return null; + return XSNamedMapImpl.EMPTY_MAP; } // try to find the grammar 1.7 +16 -1 xml-xerces/java/src/org/apache/xerces/impl/xs/util/XSNamedMapImpl.java Index: XSNamedMapImpl.java =================================================================== RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/xs/util/XSNamedMapImpl.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- XSNamedMapImpl.java 24 Feb 2004 22:59:13 -0000 1.6 +++ XSNamedMapImpl.java 15 May 2004 22:13:12 -0000 1.7 @@ -29,6 +29,21 @@ */ public class XSNamedMapImpl implements XSNamedMap { + /** + * An immutable empty map. + */ + public static final XSNamedMap EMPTY_MAP = new XSNamedMap () { + public int getLength() { + return 0; + } + public XSObject itemByName(String namespace, String localName) { + return null; + } + public XSObject item(int index) { + return null; + } + }; + // components of these namespaces are stored in this map String[] fNamespaces; // number of namespaces --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]