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.");
}
}
}
-
}