Author: bimargulies Date: Wed Apr 8 17:11:52 2009 New Revision: 763321 URL: http://svn.apache.org/viewvc?rev=763321&view=rev Log: XmlSchemaGroup refactoring.
Modified: webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/SchemaBuilder.java webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/XmlSchema.java webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/XmlSchemaGroup.java webservices/commons/trunk/modules/XmlSchema/src/test/java/tests/GroupTest.java Modified: webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/SchemaBuilder.java URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/SchemaBuilder.java?rev=763321&r1=763320&r2=763321&view=diff ============================================================================== --- webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/SchemaBuilder.java (original) +++ webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/SchemaBuilder.java Wed Apr 8 17:11:52 2009 @@ -1619,9 +1619,7 @@ } else if (el.getLocalName().equals("import")) { handleImport(currentSchema, el, schemaEl); } else if (el.getLocalName().equals("group")) { - XmlSchemaGroup group = handleGroup(currentSchema, el, schemaEl); - currentSchema.groups.collection.put(group.getQName(), group); - currentSchema.items.add(group); + handleGroup(currentSchema, el, schemaEl); } else if (el.getLocalName().equals("attributeGroup")) { handleAttributeGroup(currentSchema, el, schemaEl); } else if (el.getLocalName().equals("attribute")) { Modified: webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/XmlSchema.java URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/XmlSchema.java?rev=763321&r1=763320&r2=763321&view=diff ============================================================================== --- webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/XmlSchema.java (original) +++ webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/XmlSchema.java Wed Apr 8 17:11:52 2009 @@ -57,7 +57,6 @@ static final String SCHEMA_NS = XMLConstants.W3C_XML_SCHEMA_NS_URI; private static final String UTF_8_ENCODING = "UTF-8"; - XmlSchemaObjectTable groups; XmlSchemaObjectTable notations; XmlSchemaObjectTable schemaTypes; XmlSchemaObjectCollection items; @@ -76,6 +75,8 @@ private Map<QName, XmlSchemaAttributeGroup> attributeGroups; private Map<QName, XmlSchemaAttribute> attributes; private Map<QName, XmlSchemaElement> elements; + private Map<QName, XmlSchemaGroup> groups; + private NamespacePrefixList namespaceContext; // keep the encoding of the input private String inputEncoding; @@ -105,7 +106,7 @@ elements = new HashMap<QName, XmlSchemaElement>(); attributeGroups = new HashMap<QName, XmlSchemaAttributeGroup>(); attributes = new HashMap<QName, XmlSchemaAttribute>(); - groups = new XmlSchemaObjectTable(); + groups = new HashMap<QName, XmlSchemaGroup>(); notations = new XmlSchemaObjectTable(); schemaTypes = new XmlSchemaObjectTable(); @@ -283,7 +284,7 @@ // recursive schema - just return null return null; } - XmlSchemaGroup group = (XmlSchemaGroup)groups.getItem(name); + XmlSchemaGroup group = groups.get(name); if (deep) { if (group == null) { // search the imports @@ -501,7 +502,7 @@ this.finalDefault = finalDefault; } - public XmlSchemaObjectTable getGroups() { + public Map<QName, XmlSchemaGroup> getGroups() { return groups; } @@ -809,5 +810,9 @@ this.elements = elements; } + void setGroups(Map<QName, XmlSchemaGroup> groups) { + this.groups = groups; + } + } Modified: webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/XmlSchemaGroup.java URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/XmlSchemaGroup.java?rev=763321&r1=763320&r2=763321&view=diff ============================================================================== --- webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/XmlSchemaGroup.java (original) +++ webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/XmlSchemaGroup.java Wed Apr 8 17:11:52 2009 @@ -39,6 +39,7 @@ public XmlSchemaGroup(XmlSchema parent) { namedDelegate = new XmlSchemaNamedImpl(parent, true); + parent.items.add(this); } @@ -71,7 +72,13 @@ } public void setName(String name) { + if (namedDelegate.getQName() != null) { + namedDelegate.getParent().getGroups().remove(namedDelegate.getQName()); + } namedDelegate.setName(name); + if (name != null) { + namedDelegate.getParent().getGroups().put(namedDelegate.getQName(), this); + } } } Modified: webservices/commons/trunk/modules/XmlSchema/src/test/java/tests/GroupTest.java URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/XmlSchema/src/test/java/tests/GroupTest.java?rev=763321&r1=763320&r2=763321&view=diff ============================================================================== --- webservices/commons/trunk/modules/XmlSchema/src/test/java/tests/GroupTest.java (original) +++ webservices/commons/trunk/modules/XmlSchema/src/test/java/tests/GroupTest.java Wed Apr 8 17:11:52 2009 @@ -23,6 +23,7 @@ import java.io.InputStream; import java.util.HashSet; import java.util.Iterator; +import java.util.Map; import java.util.Set; import javax.xml.namespace.QName; @@ -36,7 +37,6 @@ import org.apache.ws.commons.schema.XmlSchemaGroup; import org.apache.ws.commons.schema.XmlSchemaGroupRef; import org.apache.ws.commons.schema.XmlSchemaObjectCollection; -import org.apache.ws.commons.schema.XmlSchemaObjectTable; import org.junit.Assert; import org.junit.Test; @@ -79,13 +79,13 @@ XmlSchemaGroupRef ref = (XmlSchemaGroupRef)cType.getParticle(); assertEquals(new QName("http://soapinterop.org/types", "priceGroup"), ref.getRefName()); - XmlSchemaObjectTable t = schema.getGroups(); - assertEquals(1, t.getCount()); + Map<QName, XmlSchemaGroup> t = schema.getGroups(); + assertEquals(1, t.size()); Set<String> s = new HashSet<String>(); s.add("priceGroup"); - for (Iterator i = t.getNames(); i.hasNext();) { - String name = ((QName)i.next()).getLocalPart(); + for (QName qname : t.keySet()) { + String name = qname.getLocalPart(); assertEquals("priceGroup", name); s.remove(name); } @@ -94,7 +94,8 @@ s.clear(); s.add("org.apache.ws.commons.schema.XmlSchemaGroup"); XmlSchemaGroup xsg = null; - for (Iterator i = t.getValues(); i.hasNext();) { + Iterator<XmlSchemaGroup> i = t.values().iterator(); + while (i.hasNext()) { xsg = (XmlSchemaGroup)i.next(); s.remove(xsg.getClass().getName()); }