Modified: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDKeyrefTraverser.java URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDKeyrefTraverser.java?rev=884566&r1=884565&r2=884566&view=diff ============================================================================== --- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDKeyrefTraverser.java (original) +++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDKeyrefTraverser.java Thu Nov 26 14:30:01 2009 @@ -83,17 +83,37 @@ KeyRef keyRef = new KeyRef(schemaDoc.fTargetNamespace, krName, key); - // add to element decl - traverseIdentityConstraint(keyRef, krElem, schemaDoc, attrValues); + // If errors occurred in traversing the identity constraint, then don't + // add it to the schema, to avoid errors when processing the instance. + if (traverseIdentityConstraint(keyRef, krElem, schemaDoc, attrValues)) { + //Schema Component Constraint: Identity-constraint Definition Properties Correct + //2 If the {identity-constraint category} is keyref, the cardinality of the {fields} must equal that of the {fields} of the {referenced key}. + if(key.getFieldCount() != keyRef.getFieldCount()) { + reportSchemaError("c-props-correct.2" , new Object [] {krName,key.getIdentityConstraintName()}, krElem); + } else { + // add key reference to element decl + // and stuff this in the grammar + if (grammar.getIDConstraintDecl(keyRef.getIdentityConstraintName()) == null) { + grammar.addIDConstraintDecl(element, keyRef); + } - //Schema Component Constraint: Identity-constraint Definition Properties Correct - //2 If the {identity-constraint category} is keyref, the cardinality of the {fields} must equal that of the {fields} of the {referenced key}. - if(key.getFieldCount() != keyRef.getFieldCount()) { - reportSchemaError("c-props-correct.2" , new Object [] {krName,key.getIdentityConstraintName()}, krElem); - } else { - // add key reference to element decl - // and stuff this in the grammar - grammar.addIDConstraintDecl(element, keyRef); + // also add it to extended map + final String loc = fSchemaHandler.schemaDocument2SystemId(schemaDoc); + final IdentityConstraint idc = grammar.getIDConstraintDecl(keyRef.getIdentityConstraintName(), loc); + if (idc == null) { + grammar.addIDConstraintDecl(element, keyRef, loc); + } + + // handle duplicates + if (fSchemaHandler.fTolerateDuplicates) { + if (idc != null) { + if (idc instanceof KeyRef) { + keyRef = (KeyRef) idc; + } + } + fSchemaHandler.addIDConstraintDecl(keyRef); + } + } } // and put back attributes
Modified: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDNotationTraverser.java URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDNotationTraverser.java?rev=884566&r1=884565&r2=884566&view=diff ============================================================================== --- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDNotationTraverser.java (original) +++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDNotationTraverser.java Thu Nov 26 14:30:01 2009 @@ -68,8 +68,10 @@ return null; } - if (systemAttr == null && publicAttr == null) + if (systemAttr == null && publicAttr == null) { reportSchemaError("PublicSystemOnNotation", null, elmNode); + publicAttr = "missing"; + } XSNotationDecl notation = new XSNotationDecl(); notation.fName = nameAttr; @@ -104,7 +106,24 @@ reportSchemaError("s4s-elt-must-match.1", args, content); } - grammar.addGlobalNotationDecl(notation); + if (grammar.getGlobalNotationDecl(notation.fName) == null) { + grammar.addGlobalNotationDecl(notation); + } + + // also add it to extended map + final String loc = fSchemaHandler.schemaDocument2SystemId(schemaDoc); + final XSNotationDecl notation2 = grammar.getGlobalNotationDecl(notation.fName, loc); + if (notation2 == null) { + grammar.addGlobalNotationDecl(notation, loc); + } + + // handle duplicates + if (fSchemaHandler.fTolerateDuplicates) { + if (notation2 != null) { + notation = notation2; + } + fSchemaHandler.addGlobalNotationDecl(notation); + } fAttrChecker.returnAttrArray(attrValues, schemaDoc); return notation; Modified: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDSimpleTypeTraverser.java URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDSimpleTypeTraverser.java?rev=884566&r1=884565&r2=884566&view=diff ============================================================================== --- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDSimpleTypeTraverser.java (original) +++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDSimpleTypeTraverser.java Thu Nov 26 14:30:01 2009 @@ -22,9 +22,7 @@ import org.apache.xerces.impl.Constants; import org.apache.xerces.impl.dv.InvalidDatatypeFacetException; -import org.apache.xerces.impl.dv.SchemaDVFactory; import org.apache.xerces.impl.dv.XSSimpleType; -import org.apache.xerces.impl.dv.xs.SchemaDVFactoryImpl; import org.apache.xerces.impl.dv.xs.XSSimpleTypeDecl; import org.apache.xerces.impl.xs.SchemaGrammar; import org.apache.xerces.impl.xs.SchemaSymbols; @@ -79,12 +77,6 @@ * @version $Id$ */ class XSDSimpleTypeTraverser extends XSDAbstractTraverser { - - private static final String EXTENDED_SCHEMA_FACTORY_CLASS = "org.apache.xerces.impl.dv.xs.ExtendedSchemaDVFactoryImpl"; - private static final String SCHEMA11_FACTORY_CLASS = "org.apache.xerces.impl.dv.xs.Schema11DVFactoryImpl"; - - // the factory used to query/create simple types - private final SchemaDVFactory schemaFactory; // whether the type being parsed is a S4S built-in type. private boolean fIsBuiltIn = false; @@ -92,10 +84,6 @@ XSDSimpleTypeTraverser (XSDHandler handler, XSAttributeChecker gAttrCheck) { super(handler, gAttrCheck); - schemaFactory = getSchemaDVFactory(handler.fSchemaVersion); - if (schemaFactory instanceof SchemaDVFactoryImpl) { - ((SchemaDVFactoryImpl)schemaFactory).setDeclPool(handler.fDeclPool); - } } //return qualified name of simpleType or empty string if error occured @@ -106,6 +94,9 @@ // General Attribute Checking Object[] attrValues = fAttrChecker.checkAttributes(elmNode, true, schemaDoc); String nameAtt = (String)attrValues[XSAttributeChecker.ATTIDX_NAME]; + if (nameAtt == null) { + attrValues[XSAttributeChecker.ATTIDX_NAME] = NO_NAME; + } XSSimpleType type = traverseSimpleTypeDecl(elmNode, attrValues, schemaDoc, grammar); fAttrChecker.returnAttrArray(attrValues, schemaDoc); @@ -117,9 +108,28 @@ // don't add global components without name to the grammar if (type != null) { - grammar.addGlobalSimpleTypeDecl(type); + if (grammar.getGlobalTypeDecl(type.getName()) == null) { + grammar.addGlobalSimpleTypeDecl(type); + } + + // also add it to extended map + final String loc = fSchemaHandler.schemaDocument2SystemId(schemaDoc); + final XSTypeDefinition type2 = grammar.getGlobalTypeDecl(type.getName(), loc); + if (type2 == null) { + grammar.addGlobalSimpleTypeDecl(type, loc); + } + + // handle duplicates + if (fSchemaHandler.fTolerateDuplicates) { + if (type2 != null) { + if (type2 instanceof XSSimpleType) { + type = (XSSimpleType) type2; + } + } + fSchemaHandler.addGlobalTypeDecl(type); + } } - + return type; } @@ -149,16 +159,6 @@ return getSimpleType(name, simpleTypeDecl, attrValues, schemaDoc, grammar); } - private SchemaDVFactory getSchemaDVFactory(short schemaVersion) { - if (schemaVersion == Constants.SCHEMA_VERSION_1_0) { - return SchemaDVFactory.getInstance(); - } - else if (schemaVersion == Constants.SCHEMA_VERSION_1_1) { - return SchemaDVFactory.getInstance(SCHEMA11_FACTORY_CLASS); - } - - return SchemaDVFactory.getInstance(EXTENDED_SCHEMA_FACTORY_CLASS); - } /* * Generate a name for an anonymous type */ @@ -309,10 +309,7 @@ } } } - // when there is an error finding the base type of a restriction - // we use anySimpleType as the base, then we should skip the facets, - // because anySimpleType doesn't recognize any facet. - boolean skipFacets = false; + // check if there is a child "simpleType" if (content != null && DOMUtil.getLocalName(content).equals(SchemaSymbols.ELT_SIMPLETYPE)) { if (restriction || list) { @@ -320,7 +317,7 @@ if (baseTypeName != null) { reportSchemaError(list ? "src-simple-type.3.a" : "src-simple-type.2.a", null, content); } - else { + if (baseValidator == null) { // traverse this child to get the base type baseValidator = traverseLocal(content, schemaDoc, grammar); } @@ -353,46 +350,47 @@ } } else if ((restriction || list) && baseTypeName == null) { - // it's an error if neither "base" nor "simpleType" appears + // it's an error if neither "base/itemType" nor "simpleType" appears reportSchemaError(list ? "src-simple-type.3.b" : "src-simple-type.2.b", null, child); - // base can't be found, skip the facets. - skipFacets = true; - baseValidator = SchemaGrammar.fAnySimpleType; } else if (union && (memberTypes == null || memberTypes.size() == 0)) { // it's an error if "memberTypes" is empty and no "simpleType" appears reportSchemaError("src-union-memberTypes-or-simpleTypes", null, child); - dTValidators = new ArrayList(1); - dTValidators.add(SchemaGrammar.fAnySimpleType); } // error finding "base" or error traversing "simpleType". // don't need to report an error, since some error has been reported. if ((restriction || list) && baseValidator == null) { - baseValidator = SchemaGrammar.fAnySimpleType; + fAttrChecker.returnAttrArray(contentAttrs, schemaDoc); + return errorType(name, schemaDoc.fTargetNamespace, + restriction ? XSConstants.DERIVATION_RESTRICTION : XSConstants.DERIVATION_LIST); } // error finding "memberTypes" or error traversing "simpleType". // don't need to report an error, since some error has been reported. if (union && (dTValidators == null || dTValidators.size() == 0)) { - dTValidators = new ArrayList(1); - dTValidators.add(SchemaGrammar.fAnySimpleType); + fAttrChecker.returnAttrArray(contentAttrs, schemaDoc); + return errorType(name, schemaDoc.fTargetNamespace, + XSConstants.DERIVATION_UNION); } // item type of list types can't have list content if (list && isListDatatype(baseValidator)) { reportSchemaError("cos-st-restricts.2.1", new Object[]{name, baseValidator.getName()}, child); + fAttrChecker.returnAttrArray(contentAttrs, schemaDoc); + return errorType(name, schemaDoc.fTargetNamespace, + XSConstants.DERIVATION_LIST); } // create the simple type based on the "base" type XSSimpleType newDecl = null; if (restriction) { - newDecl = schemaFactory.createTypeRestriction(name, schemaDoc.fTargetNamespace, (short)finalProperty, baseValidator, + newDecl = fSchemaHandler.fDVFactory.createTypeRestriction(name, schemaDoc.fTargetNamespace, (short)finalProperty, baseValidator, annotations == null? null : new XSObjectListImpl(annotations, annotations.length)); } else if (list) { - newDecl = schemaFactory.createTypeList(name, schemaDoc.fTargetNamespace, (short)finalProperty, baseValidator, + newDecl = fSchemaHandler.fDVFactory.createTypeList(name, schemaDoc.fTargetNamespace, (short)finalProperty, baseValidator, annotations == null? null : new XSObjectListImpl(annotations, annotations.length)); } else if (union) { XSSimpleType[] memberDecls = (XSSimpleType[]) dTValidators.toArray(new XSSimpleType[dTValidators.size()]); - newDecl = schemaFactory.createTypeUnion(name, schemaDoc.fTargetNamespace, (short)finalProperty, memberDecls, + newDecl = fSchemaHandler.fDVFactory.createTypeUnion(name, schemaDoc.fTargetNamespace, (short)finalProperty, memberDecls, annotations == null? null : new XSObjectListImpl(annotations, annotations.length)); } // now traverse facets, if it's derived by restriction @@ -400,16 +398,17 @@ FacetInfo fi = traverseFacets(content, newDecl, baseValidator, schemaDoc); content = fi.nodeAfterFacets; - if (!skipFacets) { - try { - fValidationState.setNamespaceSupport(schemaDoc.fNamespaceSupport); - newDecl.applyFacets(fi.facetdata, fi.fPresentFacets, fi.fFixedFacets, fValidationState); - } catch (InvalidDatatypeFacetException ex) { - reportSchemaError(ex.getKey(), ex.getArgs(), child); - } + try { + fValidationState.setNamespaceSupport(schemaDoc.fNamespaceSupport); + newDecl.applyFacets(fi.facetdata, fi.fPresentFacets, fi.fFixedFacets, fValidationState); + } catch (InvalidDatatypeFacetException ex) { + reportSchemaError(ex.getKey(), ex.getArgs(), child); + // Recreate the type, ignoring the facets + newDecl = fSchemaHandler.fDVFactory.createTypeRestriction(name, schemaDoc.fTargetNamespace, (short)finalProperty, baseValidator, + annotations == null? null : new XSObjectListImpl(annotations, annotations.length)); } } - // now element should appear after this point + // no element should appear after this point if (content != null) { if (restriction) { reportSchemaError("s4s-elt-must-match.1", new Object[]{SchemaSymbols.ELT_RESTRICTION, "(annotation?, (simpleType?, (minExclusive | minInclusive | maxExclusive | maxInclusive | totalDigits | fractionDigits | length | minLength | maxLength | enumeration | whiteSpace | pattern)*))", DOMUtil.getLocalName(content)}, content); @@ -439,31 +438,37 @@ return null; XSTypeDefinition baseType = (XSTypeDefinition)fSchemaHandler.getGlobalDecl(schemaDoc, XSDHandler.TYPEDECL_TYPE, baseTypeStr, elm); - if (baseType != null) { - // if it's a complex type, or if its restriction of anySimpleType - if (baseType.getTypeCategory() != XSTypeDefinition.SIMPLE_TYPE || - baseType == SchemaGrammar.fAnySimpleType && - baseRefContext == XSConstants.DERIVATION_RESTRICTION) { - // if the base type is anySimpleType and the current type is - // a S4S built-in type, return null. (not an error). - if (baseType == SchemaGrammar.fAnySimpleType && - checkBuiltIn(refName, schemaDoc.fTargetNamespace)) { - return null; - } - reportSchemaError("cos-st-restricts.1.1", new Object[]{baseTypeStr.rawname, refName}, elm); - return SchemaGrammar.fAnySimpleType; - } - if ((baseType.getFinal() & baseRefContext) != 0) { - if (baseRefContext == XSConstants.DERIVATION_RESTRICTION) { - reportSchemaError("st-props-correct.3", new Object[]{refName, baseTypeStr.rawname}, elm); - } - else if (baseRefContext == XSConstants.DERIVATION_LIST) { - reportSchemaError("cos-st-restricts.2.3.1.1", new Object[]{baseTypeStr.rawname, refName}, elm); - } - else if (baseRefContext == XSConstants.DERIVATION_UNION) { - reportSchemaError("cos-st-restricts.3.3.1.1", new Object[]{baseTypeStr.rawname, refName}, elm); - } + if (baseType == null) { + return null; + } + if (baseType.getTypeCategory() != XSTypeDefinition.SIMPLE_TYPE) { + reportSchemaError("cos-st-restricts.1.1", new Object[]{baseTypeStr.rawname, refName}, elm); + return null; + } + + // if it's a complex type, or if its restriction of anySimpleType + if (baseType == SchemaGrammar.fAnySimpleType && + baseRefContext == XSConstants.DERIVATION_RESTRICTION) { + // if the base type is anySimpleType and the current type is + // a S4S built-in type, return null. (not an error). + if (checkBuiltIn(refName, schemaDoc.fTargetNamespace)) { + return null; } + reportSchemaError("cos-st-restricts.1.1", new Object[]{baseTypeStr.rawname, refName}, elm); + return null; + } + + if ((baseType.getFinal() & baseRefContext) != 0) { + if (baseRefContext == XSConstants.DERIVATION_RESTRICTION) { + reportSchemaError("st-props-correct.3", new Object[]{refName, baseTypeStr.rawname}, elm); + } + else if (baseRefContext == XSConstants.DERIVATION_LIST) { + reportSchemaError("cos-st-restricts.2.3.1.1", new Object[]{baseTypeStr.rawname, refName}, elm); + } + else if (baseRefContext == XSConstants.DERIVATION_UNION) { + reportSchemaError("cos-st-restricts.3.3.1.1", new Object[]{baseTypeStr.rawname, refName}, elm); + } + return null; } return (XSSimpleType)baseType; @@ -509,16 +514,17 @@ }//isListDatatype(XSSimpleTypeDecl):boolean private XSSimpleType errorType(String name, String namespace, short refType) { + XSSimpleType stringType = (XSSimpleType)SchemaGrammar.getS4SGrammar(fSchemaHandler.fSchemaVersion).getTypeDefinition("string"); switch (refType) { case XSConstants.DERIVATION_RESTRICTION: - return schemaFactory.createTypeRestriction(name, namespace, (short)0, - SchemaGrammar.fAnySimpleType, null); + return fSchemaHandler.fDVFactory.createTypeRestriction(name, namespace, (short)0, + stringType, null); case XSConstants.DERIVATION_LIST: - return schemaFactory.createTypeList(name, namespace, (short)0, - SchemaGrammar.fAnySimpleType, null); + return fSchemaHandler.fDVFactory.createTypeList(name, namespace, (short)0, + stringType, null); case XSConstants.DERIVATION_UNION: - return schemaFactory.createTypeUnion(name, namespace, (short)0, - new XSSimpleType[]{SchemaGrammar.fAnySimpleType}, null); + return fSchemaHandler.fDVFactory.createTypeUnion(name, namespace, (short)0, + new XSSimpleType[]{stringType}, null); } return null; Modified: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDUniqueOrKeyTraverser.java URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDUniqueOrKeyTraverser.java?rev=884566&r1=884565&r2=884566&view=diff ============================================================================== --- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDUniqueOrKeyTraverser.java (original) +++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDUniqueOrKeyTraverser.java Thu Nov 26 14:30:01 2009 @@ -68,11 +68,30 @@ // duplication (or if there is that restriction is involved // and there's identity). - // get selector and fields - traverseIdentityConstraint(uniqueOrKey, uElem, schemaDoc, attrValues); + // If errors occurred in traversing the identity constraint, then don't + // add it to the schema, to avoid errors when processing the instance. + if (traverseIdentityConstraint(uniqueOrKey, uElem, schemaDoc, attrValues)) { + // and stuff this in the grammar + if (grammar.getIDConstraintDecl(uniqueOrKey.getIdentityConstraintName()) == null) { + grammar.addIDConstraintDecl(element, uniqueOrKey); + } - // and stuff this in the grammar - grammar.addIDConstraintDecl(element, uniqueOrKey); + final String loc = fSchemaHandler.schemaDocument2SystemId(schemaDoc); + final IdentityConstraint idc = grammar.getIDConstraintDecl(uniqueOrKey.getIdentityConstraintName(), loc); + if (idc == null) { + grammar.addIDConstraintDecl(element, uniqueOrKey, loc); + } + + // handle duplicates + if (fSchemaHandler.fTolerateDuplicates) { + if (idc != null) { + if (idc instanceof UniqueOrKey) { + uniqueOrKey = (UniqueOrKey) uniqueOrKey; + } + } + fSchemaHandler.addIDConstraintDecl(uniqueOrKey); + } + } // and fix up attributeChecker fAttrChecker.returnAttrArray(attrValues, schemaDoc); Added: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/util/ObjectListImpl.java URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/util/ObjectListImpl.java?rev=884566&view=auto ============================================================================== --- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/util/ObjectListImpl.java (added) +++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/util/ObjectListImpl.java Thu Nov 26 14:30:01 2009 @@ -0,0 +1,115 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.xerces.impl.xs.util; + +import java.lang.reflect.Array; +import java.util.AbstractList; + +import org.apache.xerces.xs.datatypes.ObjectList; + +/** + * Contains a list of Objects. + * + * @xerces.internal + * + * @version $Id$ + */ +public final class ObjectListImpl extends AbstractList implements ObjectList { + + /** + * An immutable empty list. + */ + public static final ObjectListImpl EMPTY_LIST = new ObjectListImpl(new Object[0], 0); + + // The array to hold all data + private final Object[] fArray; + + // Number of elements in this list + private final int fLength; + + public ObjectListImpl(Object[] array, int length) { + fArray = array; + fLength = length; + } + + public int getLength() { + return fLength; + } + + public boolean contains(Object item) { + if (item == null) { + for (int i = 0; i < fLength; i++) { + if (fArray[i] == null) + return true; + } + } + else { + for (int i = 0; i < fLength; i++) { + if (item.equals(fArray[i])) + return true; + } + } + return false; + } + + public Object item(int index) { + if (index < 0 || index >= fLength) { + return null; + } + return fArray[index]; + } + + /* + * List methods + */ + public Object get(int index) { + if (index >= 0 && index < fLength) { + return fArray[index]; + } + throw new IndexOutOfBoundsException("Index: " + index); + } + + public int size() { + return getLength(); + } + + public Object[] toArray() { + Object[] a = new Object[fLength]; + toArray0(a); + return a; + } + + public Object[] toArray(Object[] a) { + if (a.length < fLength) { + Class arrayClass = a.getClass(); + Class componentType = arrayClass.getComponentType(); + a = (Object[]) Array.newInstance(componentType, fLength); + } + toArray0(a); + if (a.length > fLength) { + a[fLength] = null; + } + return a; + } + + private void toArray0(Object[] a) { + if (fLength > 0) { + System.arraycopy(fArray, 0, a, 0, fLength); + } + } +} Propchange: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/util/ObjectListImpl.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/util/ObjectListImpl.java ------------------------------------------------------------------------------ svn:keywords = Author Date Id Revision Added: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/util/XSInputSource.java URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/util/XSInputSource.java?rev=884566&view=auto ============================================================================== --- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/util/XSInputSource.java (added) +++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/util/XSInputSource.java Thu Nov 26 14:30:01 2009 @@ -0,0 +1,61 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.xerces.impl.xs.util; + +import org.apache.xerces.impl.xs.SchemaGrammar; +import org.apache.xerces.xni.parser.XMLInputSource; +import org.apache.xerces.xs.XSObject; + +/** + * @xerces.internal + * + * @version $Id$ + */ +public final class XSInputSource extends XMLInputSource { + + private SchemaGrammar[] fGrammars; + private XSObject[] fComponents; + + public XSInputSource(SchemaGrammar[] grammars) { + super(null, null, null); + fGrammars = grammars; + fComponents = null; + } + + public XSInputSource(XSObject[] component) { + super(null, null, null); + fGrammars = null; + fComponents = component; + } + + public SchemaGrammar[] getGrammars() { + return fGrammars; + } + + public void setGrammars(SchemaGrammar[] grammars) { + fGrammars = grammars; + } + + public XSObject[] getComponents() { + return fComponents; + } + + public void setComponents(XSObject[] components) { + fComponents = components; + } +} Propchange: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/util/XSInputSource.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/util/XSInputSource.java ------------------------------------------------------------------------------ svn:keywords = Author Date Id Revision Modified: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/parsers/DOMParserImpl.java URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/parsers/DOMParserImpl.java?rev=884566&r1=884565&r2=884566&view=diff ============================================================================== --- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/parsers/DOMParserImpl.java (original) +++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/parsers/DOMParserImpl.java Thu Nov 26 14:30:01 2009 @@ -114,6 +114,14 @@ protected static final String HONOUR_ALL_SCHEMALOCATIONS = Constants.XERCES_FEATURE_PREFIX + Constants.HONOUR_ALL_SCHEMALOCATIONS_FEATURE; + /** Feature identifier: namespace growth */ + protected static final String NAMESPACE_GROWTH = + Constants.XERCES_FEATURE_PREFIX + Constants.NAMESPACE_GROWTH_FEATURE; + + /** Feature identifier: tolerate duplicates */ + protected static final String TOLERATE_DUPLICATES = + Constants.XERCES_FEATURE_PREFIX + Constants.TOLERATE_DUPLICATES_FEATURE; + // internal properties protected static final String SYMBOL_TABLE = Constants.XERCES_PROPERTY_PREFIX + Constants.SYMBOL_TABLE_PROPERTY; @@ -451,6 +459,12 @@ if (name.equalsIgnoreCase(HONOUR_ALL_SCHEMALOCATIONS)) { normalizedName = HONOUR_ALL_SCHEMALOCATIONS; } + else if (name.equals(NAMESPACE_GROWTH)) { + normalizedName = NAMESPACE_GROWTH; + } + else if (name.equals(TOLERATE_DUPLICATES)) { + normalizedName = TOLERATE_DUPLICATES; + } else { normalizedName = name.toLowerCase(Locale.ENGLISH); } @@ -586,6 +600,12 @@ if (name.equalsIgnoreCase(HONOUR_ALL_SCHEMALOCATIONS)) { normalizedName = HONOUR_ALL_SCHEMALOCATIONS; } + else if (name.equals(NAMESPACE_GROWTH)) { + normalizedName = NAMESPACE_GROWTH; + } + else if (name.equals(TOLERATE_DUPLICATES)) { + normalizedName = TOLERATE_DUPLICATES; + } fConfiguration.getFeature(normalizedName); throw newTypeMismatchError(name); @@ -716,6 +736,12 @@ if (name.equalsIgnoreCase(HONOUR_ALL_SCHEMALOCATIONS)) { normalizedName = HONOUR_ALL_SCHEMALOCATIONS; } + else if (name.equals(NAMESPACE_GROWTH)) { + normalizedName = NAMESPACE_GROWTH; + } + else if (name.equals(TOLERATE_DUPLICATES)) { + normalizedName = TOLERATE_DUPLICATES; + } else { normalizedName = name.toLowerCase(Locale.ENGLISH); } @@ -778,6 +804,12 @@ if (name.equalsIgnoreCase(HONOUR_ALL_SCHEMALOCATIONS)) { normalizedName = HONOUR_ALL_SCHEMALOCATIONS; } + else if (name.equalsIgnoreCase(NAMESPACE_GROWTH)) { + normalizedName = NAMESPACE_GROWTH; + } + else if (name.equalsIgnoreCase(TOLERATE_DUPLICATES)) { + normalizedName = TOLERATE_DUPLICATES; + } else { normalizedName = name.toLowerCase(Locale.ENGLISH); } Modified: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/parsers/StandardParserConfiguration.java URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/parsers/StandardParserConfiguration.java?rev=884566&r1=884565&r2=884566&view=diff ============================================================================== --- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/parsers/StandardParserConfiguration.java (original) +++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/parsers/StandardParserConfiguration.java Thu Nov 26 14:30:01 2009 @@ -104,6 +104,14 @@ protected static final String HONOUR_ALL_SCHEMALOCATIONS = Constants.XERCES_FEATURE_PREFIX + Constants.HONOUR_ALL_SCHEMALOCATIONS_FEATURE; + /** Feature identifier: namespace growth */ + protected static final String NAMESPACE_GROWTH = + Constants.XERCES_FEATURE_PREFIX + Constants.NAMESPACE_GROWTH_FEATURE; + + /** Feature identifier: tolerate duplicates */ + protected static final String TOLERATE_DUPLICATES = + Constants.XERCES_FEATURE_PREFIX + Constants.TOLERATE_DUPLICATES_FEATURE; + /** Feature identifier: whether to ignore xsi:type attributes until a global element declaration is encountered */ protected static final String IGNORE_XSI_TYPE = Constants.XERCES_FEATURE_PREFIX + Constants.IGNORE_XSI_TYPE_FEATURE; @@ -146,6 +154,10 @@ protected static final String ROOT_ELEMENT_DECL = Constants.XERCES_PROPERTY_PREFIX + Constants.ROOT_ELEMENT_DECLARATION_PROPERTY; + /** Property identifier: Schema DV Factory */ + protected static final String SCHEMA_DV_FACTORY = + Constants.XERCES_PROPERTY_PREFIX + Constants.SCHEMA_DV_FACTORY_PROPERTY; + // // Data // @@ -214,6 +226,8 @@ GENERATE_SYNTHETIC_ANNOTATIONS, VALIDATE_ANNOTATIONS, HONOUR_ALL_SCHEMALOCATIONS, + NAMESPACE_GROWTH, + TOLERATE_DUPLICATES, // NOTE: These shouldn't really be here but since the XML Schema // validator is constructed dynamically, its recognized // features might not have been set and it would cause a @@ -235,7 +249,9 @@ setFeature(GENERATE_SYNTHETIC_ANNOTATIONS, false); setFeature(VALIDATE_ANNOTATIONS, false); setFeature(HONOUR_ALL_SCHEMALOCATIONS, false); - + setFeature(NAMESPACE_GROWTH, false); + setFeature(TOLERATE_DUPLICATES, false); + setFeature(IGNORE_XSI_TYPE, false); setFeature(ID_IDREF_CHECKING, true); setFeature(IDENTITY_CONSTRAINT_CHECKING, true); @@ -253,6 +269,7 @@ SCHEMA_NONS_LOCATION, ROOT_TYPE_DEF, ROOT_ELEMENT_DECL, + SCHEMA_DV_FACTORY, }; addRecognizedProperties(recognizedProperties); Modified: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/parsers/XML11Configuration.java URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/parsers/XML11Configuration.java?rev=884566&r1=884565&r2=884566&view=diff ============================================================================== --- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/parsers/XML11Configuration.java (original) +++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/parsers/XML11Configuration.java Thu Nov 26 14:30:01 2009 @@ -145,11 +145,19 @@ /** Feature identifier: honour all schemaLocations */ protected static final String HONOUR_ALL_SCHEMALOCATIONS = Constants.XERCES_FEATURE_PREFIX + Constants.HONOUR_ALL_SCHEMALOCATIONS_FEATURE; + + /** Feature identifier: namespace growth */ + protected static final String NAMESPACE_GROWTH = + Constants.XERCES_FEATURE_PREFIX + Constants.NAMESPACE_GROWTH_FEATURE; + + /** Feature identifier: tolerate duplicates */ + protected static final String TOLERATE_DUPLICATES = + Constants.XERCES_FEATURE_PREFIX + Constants.TOLERATE_DUPLICATES_FEATURE; /** Feature identifier: use grammar pool only */ protected static final String USE_GRAMMAR_POOL_ONLY = Constants.XERCES_FEATURE_PREFIX + Constants.USE_GRAMMAR_POOL_ONLY_FEATURE; - + // feature identifiers /** Feature identifier: validation. */ @@ -282,6 +290,10 @@ protected static final String ROOT_ELEMENT_DECL = Constants.XERCES_PROPERTY_PREFIX + Constants.ROOT_ELEMENT_DECLARATION_PROPERTY; + /** Property identifier: Schema DV Factory */ + protected static final String SCHEMA_DV_FACTORY = + Constants.XERCES_PROPERTY_PREFIX + Constants.SCHEMA_DV_FACTORY_PROPERTY; + // debugging /** Set to true and recompile to print exception stack trace. */ @@ -482,7 +494,8 @@ NAMESPACES, NORMALIZE_DATA, SCHEMA_ELEMENT_DEFAULT, SCHEMA_AUGMENT_PSVI, GENERATE_SYNTHETIC_ANNOTATIONS, VALIDATE_ANNOTATIONS, - HONOUR_ALL_SCHEMALOCATIONS, IGNORE_XSI_TYPE, + HONOUR_ALL_SCHEMALOCATIONS, NAMESPACE_GROWTH, + TOLERATE_DUPLICATES, IGNORE_XSI_TYPE, ID_IDREF_CHECKING, IDENTITY_CONSTRAINT_CHECKING, UNPARSED_ENTITY_CHECKING, USE_GRAMMAR_POOL_ONLY, TYPE_ALTERNATIVES_CHECKING, @@ -510,6 +523,8 @@ fFeatures.put(GENERATE_SYNTHETIC_ANNOTATIONS, Boolean.FALSE); fFeatures.put(VALIDATE_ANNOTATIONS, Boolean.FALSE); fFeatures.put(HONOUR_ALL_SCHEMALOCATIONS, Boolean.FALSE); + fFeatures.put(NAMESPACE_GROWTH, Boolean.FALSE); + fFeatures.put(TOLERATE_DUPLICATES, Boolean.FALSE); fFeatures.put(IGNORE_XSI_TYPE, Boolean.FALSE); fFeatures.put(ID_IDREF_CHECKING, Boolean.TRUE); fFeatures.put(IDENTITY_CONSTRAINT_CHECKING, Boolean.TRUE); @@ -546,6 +561,7 @@ LOCALE, ROOT_TYPE_DEF, ROOT_ELEMENT_DECL, + SCHEMA_DV_FACTORY, }; addRecognizedProperties(recognizedProperties); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
