Author: bimargulies Date: Tue Apr 7 01:36:35 2009 New Revision: 762589 URL: http://svn.apache.org/viewvc?rev=762589&view=rev Log: WSCOMMONS-430, WSCOMMONS-458 for Attribute Groups.
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/XmlSchemaAttributeGroup.java webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/XmlSchemaSerializer.java webservices/commons/trunk/modules/XmlSchema/src/test/java/tests/AttributeGroupTest.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=762589&r1=762588&r2=762589&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 Tue Apr 7 01:36:35 2009 @@ -1632,11 +1632,7 @@ currentSchema.groups.collection.put(group.getQName(), group); currentSchema.items.add(group); } else if (el.getLocalName().equals("attributeGroup")) { - XmlSchemaAttributeGroup group = handleAttributeGroup(currentSchema, - el, schemaEl); - currentSchema.attributeGroups.collection.put(group.getQName(), - group); - currentSchema.items.add(group); + handleAttributeGroup(currentSchema, el, schemaEl); } else if (el.getLocalName().equals("attribute")) { XmlSchemaAttribute attr = handleAttribute(currentSchema, el, schemaEl, true); // pass true to 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=762589&r1=762588&r2=762589&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 Tue Apr 7 01:36:35 2009 @@ -57,10 +57,8 @@ static final String SCHEMA_NS = XMLConstants.W3C_XML_SCHEMA_NS_URI; private static final String UTF_8_ENCODING = "UTF-8"; - XmlSchemaForm attributeFormDefault; - XmlSchemaForm elementFormDefault; - XmlSchemaObjectTable attributeGroups; + Map<QName, XmlSchemaAttributeGroup> attributeGroups; XmlSchemaObjectTable attributes; XmlSchemaObjectTable elements; XmlSchemaObjectTable groups; @@ -76,6 +74,8 @@ String schemaNamespacePrefix = ""; XmlSchemaCollection parent; + private XmlSchemaForm elementFormDefault; + private XmlSchemaForm attributeFormDefault; private List<XmlSchemaExternal> externals; private NamespacePrefixList namespaceContext; // keep the encoding of the input @@ -104,7 +104,7 @@ items = new XmlSchemaObjectCollection(); externals = new ArrayList<XmlSchemaExternal>(); elements = new XmlSchemaObjectTable(); - attributeGroups = new XmlSchemaObjectTable(); + attributeGroups = new HashMap<QName, XmlSchemaAttributeGroup>(); attributes = new XmlSchemaObjectTable(); groups = new XmlSchemaObjectTable(); notations = new XmlSchemaObjectTable(); @@ -144,7 +144,7 @@ attributeFormDefault = value; } - public XmlSchemaObjectTable getAttributeGroups() { + public Map<QName, XmlSchemaAttributeGroup> getAttributeGroups() { return attributeGroups; } @@ -214,7 +214,7 @@ return null; } - XmlSchemaAttributeGroup group = (XmlSchemaAttributeGroup)attributeGroups.getItem(name); + XmlSchemaAttributeGroup group = attributeGroups.get(name); if (deep) { if (group == null) { // search the imports Modified: webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/XmlSchemaAttributeGroup.java URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/XmlSchemaAttributeGroup.java?rev=762589&r1=762588&r2=762589&view=diff ============================================================================== --- webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/XmlSchemaAttributeGroup.java (original) +++ webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/XmlSchemaAttributeGroup.java Tue Apr 7 01:36:35 2009 @@ -42,6 +42,8 @@ */ public XmlSchemaAttributeGroup(XmlSchema parent) { namedDelegate = new XmlSchemaNamedImpl(parent, true); + parent.getItems().add(this); + // we can't be put in the map until we have a name. Perhaps we should be forced to have a name ? attributes = new XmlSchemaObjectCollection(); } @@ -82,6 +84,10 @@ } public void setName(String name) { + if (name != null) { + namedDelegate.getParent().getAttributeGroups().remove(getQName()); + } namedDelegate.setName(name); + namedDelegate.getParent().getAttributeGroups().put(getQName(), this); } } Modified: webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/XmlSchemaSerializer.java URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/XmlSchemaSerializer.java?rev=762589&r1=762588&r2=762589&view=diff ============================================================================== --- webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/XmlSchemaSerializer.java (original) +++ webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/XmlSchemaSerializer.java Tue Apr 7 01:36:35 2009 @@ -1560,13 +1560,15 @@ } // todo: implement xml:lang, - if (schemaObj.attributeFormDefault != null && schemaObj.attributeFormDefault != XmlSchemaForm.NONE) { + if (schemaObj.getAttributeFormDefault() != null + && schemaObj.getAttributeFormDefault() != XmlSchemaForm.NONE) { serializedSchema.setAttribute("attributeFormDefault", - schemaObj.attributeFormDefault.toString()); + schemaObj.getAttributeFormDefault().toString()); } - if (schemaObj.elementFormDefault != null && schemaObj.elementFormDefault != XmlSchemaForm.NONE) { - serializedSchema.setAttribute("elementFormDefault", schemaObj.elementFormDefault.toString()); + if (schemaObj.getElementFormDefault() != null + && schemaObj.getElementFormDefault() != XmlSchemaForm.NONE) { + serializedSchema.setAttribute("elementFormDefault", schemaObj.getElementFormDefault().toString()); } if (schemaObj.getAnnotation() != null) { Modified: webservices/commons/trunk/modules/XmlSchema/src/test/java/tests/AttributeGroupTest.java URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/XmlSchema/src/test/java/tests/AttributeGroupTest.java?rev=762589&r1=762588&r2=762589&view=diff ============================================================================== --- webservices/commons/trunk/modules/XmlSchema/src/test/java/tests/AttributeGroupTest.java (original) +++ webservices/commons/trunk/modules/XmlSchema/src/test/java/tests/AttributeGroupTest.java Tue Apr 7 01:36:35 2009 @@ -22,6 +22,7 @@ import java.io.FileInputStream; import java.io.InputStream; import java.util.Iterator; +import java.util.Map; import javax.xml.namespace.QName; import javax.xml.transform.stream.StreamSource; @@ -34,7 +35,6 @@ import org.apache.ws.commons.schema.XmlSchemaComplexType; import org.apache.ws.commons.schema.XmlSchemaElement; import org.apache.ws.commons.schema.XmlSchemaObjectCollection; -import org.apache.ws.commons.schema.XmlSchemaObjectTable; import org.junit.Assert; import org.junit.Test; @@ -56,7 +56,8 @@ * limitations under the License. * */ -public class AttributeGroupTest extends Assert { +public class AttributeGroupTest + extends Assert { /** * This method will test the list. @@ -90,48 +91,40 @@ XmlSchemaObjectCollection c = t.getAttributes(); for (Iterator i = c.getIterator(); i.hasNext();) { XmlSchemaAttributeGroupRef agrn = (XmlSchemaAttributeGroupRef)i.next(); - assertEquals(new QName("http://soapinterop.org/types", "department"), - agrn.getRef().getTargetQName()); + assertEquals(new QName("http://soapinterop.org/types", "department"), agrn.getRef() + .getTargetQName()); } - XmlSchemaObjectTable attG = schema.getAttributeGroups(); + Map<QName, XmlSchemaAttributeGroup> attG = schema.getAttributeGroups(); assertNotNull(attG); - assertEquals(1, attG.getCount()); + assertEquals(1, attG.size()); - for (Iterator i = attG.getNames(); i.hasNext();) { - assertEquals("department", ((QName)i.next()).getLocalPart()); + for (QName name : attG.keySet()) { + assertEquals("department", name.getLocalPart()); } - for (Iterator i = attG.getValues(); i.hasNext();) { - Object obj1 = i.next(); - if (obj1 instanceof XmlSchemaAttributeGroup) { - assertEquals("department", ((XmlSchemaAttributeGroup)obj1).getName()); - XmlSchemaObjectCollection attributes = ((XmlSchemaAttributeGroup)obj1).getAttributes(); - assertNotNull(attributes); - assertEquals(2, attributes.getCount()); - for (Iterator j = attributes.getIterator(); j.hasNext();) { - XmlSchemaAttribute obj2 = (XmlSchemaAttribute)j.next(); - String name = obj2.getName(); - if ("id".equals(name)) { - assertEquals(new QName("http://soapinterop.org/types", "id"), obj2.getQName()); - assertEquals(new QName("http://www.w3.org/2001/XMLSchema", "integer"), obj2 - .getSchemaTypeName()); - } else if ("name".equals(name)) { - assertEquals(new QName("http://soapinterop.org/types", "name"), obj2.getQName()); - assertEquals(new QName("http://www.w3.org/2001/XMLSchema", "string"), obj2 - .getSchemaTypeName()); - } else { - fail("The name \"" + name + "\" should not have been found " + "for an attribute."); + for (XmlSchemaAttributeGroup group : attG.values()) { + assertEquals("department", group.getName()); + XmlSchemaObjectCollection attributes = group.getAttributes(); + assertNotNull(attributes); + assertEquals(2, attributes.getCount()); + for (Iterator j = attributes.getIterator(); j.hasNext();) { + XmlSchemaAttribute obj2 = (XmlSchemaAttribute)j.next(); + String name = obj2.getName(); + if ("id".equals(name)) { + assertEquals(new QName("http://soapinterop.org/types", "id"), obj2.getQName()); + assertEquals(new QName("http://www.w3.org/2001/XMLSchema", "integer"), obj2 + .getSchemaTypeName()); + } else if ("name".equals(name)) { + assertEquals(new QName("http://soapinterop.org/types", "name"), obj2.getQName()); + assertEquals(new QName("http://www.w3.org/2001/XMLSchema", "string"), obj2 + .getSchemaTypeName()); + } else { + fail("The name \"" + name + "\" should not have been found " + "for an attribute."); - } } - } else { - fail("There should have been one instance of the " + "class " - + XmlSchemaAttributeGroup.class.getName() + " , but instead " - + obj1.getClass().getName() + " was" + " found."); } } } - }