Author: knoaman
Date: Wed Nov 17 20:43:35 2010
New Revision: 1036217
URL: http://svn.apache.org/viewvc?rev=1036217&view=rev
Log:
Fixing another bug in xs:override where we did not report an error for
duplicate children components
Modified:
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/override/DOMOverrideImpl.java
Modified:
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/override/DOMOverrideImpl.java
URL:
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/override/DOMOverrideImpl.java?rev=1036217&r1=1036216&r2=1036217&view=diff
==============================================================================
---
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/override/DOMOverrideImpl.java
(original)
+++
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/override/DOMOverrideImpl.java
Wed Nov 17 20:43:35 2010
@@ -18,6 +18,7 @@
package org.apache.xerces.impl.xs.traversers.override;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.Iterator;
import org.apache.xerces.impl.xs.SchemaSymbols;
@@ -38,6 +39,10 @@ public final class DOMOverrideImpl exten
// records all the override schema components and it's properties
private final ArrayList fOverrideComponents = new ArrayList();
+ private final HashMap[] fOverrideComponentsMap = new HashMap[] {
+ null, new HashMap(), new HashMap(), new HashMap(),
+ new HashMap(), new HashMap(), new HashMap()
+ };
// overridden schema document
private Document fOverridenDoc;
@@ -78,6 +83,9 @@ public final class DOMOverrideImpl exten
public void clearState(){
fOverrideComponents.clear();
+ for (int i=1; i <fOverrideComponentsMap.length; i++) {
+ fOverrideComponentsMap[i].clear();
+ }
fOverridenDoc = null;
fOverrideElem = null;
hasPerformedTransformations = false;
@@ -214,9 +222,16 @@ public final class DOMOverrideImpl exten
* Create a new OverrideElemnt and record it into <override> components
*/
private void addOverrideElement(int componentType, Element elem) {
- String cName = DOMUtil.getAttrValue(elem, SchemaSymbols.ATT_NAME);
- OverrideElement e = new OverrideElement(componentType, elem,cName);
- fOverrideComponents.add(e);
+ final String cName = DOMUtil.getAttrValue(elem,
SchemaSymbols.ATT_NAME);
+ final HashMap cMap = fOverrideComponentsMap[componentType];
+ if (cMap.get(cName) != null) {
+ fSchemaHandler.reportSchemaError("sch-props-correct.2", new Object
[]{cName}, elem);
+ }
+ else {
+ OverrideElement e = new OverrideElement(componentType, elem,cName);
+ fOverrideComponents.add(e);
+ cMap.put(cName, e);
+ }
}
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]