Author: bimargulies
Date: Tue Apr  7 01:54:22 2009
New Revision: 762593

URL: http://svn.apache.org/viewvc?rev=762593&view=rev
Log:
WSCOMMONS-458, WSCOMMONS-430 for attributes.

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/XmlSchemaAttribute.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/AttributeRefTest.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=762593&r1=762592&r2=762593&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:54:22 2009
@@ -1634,12 +1634,7 @@
         } else if (el.getLocalName().equals("attributeGroup")) {
             handleAttributeGroup(currentSchema, el, schemaEl);
         } else if (el.getLocalName().equals("attribute")) {
-            XmlSchemaAttribute attr = handleAttribute(currentSchema, el,
-                    schemaEl, true); // pass true to
-            // indicate that it is
-            // a top level child
-            currentSchema.attributes.collection.put(attr.getQName(), attr);
-            currentSchema.items.add(attr);
+            handleAttribute(currentSchema, el, schemaEl, true); 
         } else if (el.getLocalName().equals("redefine")) {
             handleRedefine(currentSchema, el,  schemaEl);
         } else if (el.getLocalName().equals("notation")) {

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=762593&r1=762592&r2=762593&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:54:22 2009
@@ -50,20 +50,17 @@
 
 /**
  * Contains the definition of a schema. All XML Schema definition language 
(XSD) elements are children of the
- * schema element. Represents the World Wide Web Consortium (W3C) schema 
element
+ * schema element. Represents the World Wide Web Consortium (W3C) schema 
element,
  */
 public class XmlSchema
     extends XmlSchemaAnnotated implements NamespaceContextOwner {
     static final String SCHEMA_NS = XMLConstants.W3C_XML_SCHEMA_NS_URI;
     private static final String UTF_8_ENCODING = "UTF-8";
 
-    XmlSchemaObjectTable attributes;
     XmlSchemaObjectTable elements;
     XmlSchemaObjectTable groups;
     XmlSchemaObjectTable notations;
     XmlSchemaObjectTable schemaTypes;
-    XmlSchemaDerivationMethod blockDefault;
-    XmlSchemaDerivationMethod finalDefault;
     XmlSchemaObjectCollection items;
     boolean isCompiled;
     String syntacticalTargetNamespace;
@@ -72,10 +69,13 @@
     String schemaNamespacePrefix = "";
     XmlSchemaCollection parent;
 
+    private XmlSchemaDerivationMethod blockDefault;
+    private XmlSchemaDerivationMethod finalDefault;
     private XmlSchemaForm elementFormDefault;
     private XmlSchemaForm attributeFormDefault;
     private List<XmlSchemaExternal> externals;
     private Map<QName, XmlSchemaAttributeGroup> attributeGroups;
+    private Map<QName, XmlSchemaAttribute> attributes;
     private NamespacePrefixList namespaceContext;
     // keep the encoding of the input
     private String inputEncoding;
@@ -104,7 +104,7 @@
         externals = new ArrayList<XmlSchemaExternal>();
         elements = new XmlSchemaObjectTable();
         attributeGroups = new HashMap<QName, XmlSchemaAttributeGroup>();
-        attributes = new XmlSchemaObjectTable();
+        attributes = new HashMap<QName, XmlSchemaAttribute>();
         groups = new XmlSchemaObjectTable();
         notations = new XmlSchemaObjectTable();
         schemaTypes = new XmlSchemaObjectTable();
@@ -147,7 +147,7 @@
         return attributeGroups;
     }
 
-    public XmlSchemaObjectTable getAttributes() {
+    public Map<QName, XmlSchemaAttribute> getAttributes() {
         return attributes;
     }
 
@@ -247,7 +247,7 @@
             // recursive schema - just return null
             return null;
         }
-        XmlSchemaAttribute attribute = 
(XmlSchemaAttribute)attributes.getItem(name);
+        XmlSchemaAttribute attribute = 
(XmlSchemaAttribute)attributes.get(name);
         if (deep) {
             if (attribute == null) {
                 // search the imports
@@ -801,5 +801,9 @@
         this.attributeGroups = attributeGroups;
     }
 
+    void setAttributes(Map<QName, XmlSchemaAttribute> attributes) {
+        this.attributes = attributes;
+    }
+
     
 }

Modified: 
webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/XmlSchemaAttribute.java
URL: 
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/XmlSchemaAttribute.java?rev=762593&r1=762592&r2=762593&view=diff
==============================================================================
--- 
webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/XmlSchemaAttribute.java
 (original)
+++ 
webservices/commons/trunk/modules/XmlSchema/src/main/java/org/apache/ws/commons/schema/XmlSchemaAttribute.java
 Tue Apr  7 01:54:22 2009
@@ -49,6 +49,9 @@
         namedDelegate.setRefObject(ref);
         ref.setNamedObject(namedDelegate);
         use = XmlSchemaUse.NONE;
+        if (topLevel) {
+            schema.getItems().add(this);
+        }
     }
 
     public String getDefaultValue() {
@@ -118,10 +121,15 @@
     public boolean isTopLevel() {
         return namedDelegate.isTopLevel();
     }
-    
 
     public void setName(String name) {
+        if (namedDelegate.isTopLevel() && namedDelegate.getName() != null) {
+            namedDelegate.getParent().getAttributes().remove(getQName());
+        }
         namedDelegate.setName(name);
+        if (namedDelegate.isTopLevel()) {
+            namedDelegate.getParent().getAttributes().put(getQName(), this);
+        }
     }
 
     public boolean isFormSpecified() {

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=762593&r1=762592&r2=762593&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:54:22 2009
@@ -1581,12 +1581,14 @@
             serializedSchema.setAttribute("id", schemaObj.getId());
         }
         
-        if (schemaObj.blockDefault != null && schemaObj.blockDefault != 
XmlSchemaDerivationMethod.NONE) {
-            serializedSchema.setAttribute("blockDefault", 
schemaObj.blockDefault.toString());
+        if (schemaObj.getBlockDefault() != null 
+            && schemaObj.getBlockDefault() != XmlSchemaDerivationMethod.NONE) {
+            serializedSchema.setAttribute("blockDefault", 
schemaObj.getBlockDefault().toString());
         }
         
-        if (schemaObj.finalDefault != null && schemaObj.finalDefault != 
XmlSchemaDerivationMethod.NONE) {
-            serializedSchema.setAttribute("finalDefault", 
schemaObj.finalDefault.toString());
+        if (schemaObj.getFinalDefault() != null 
+            && schemaObj.getFinalDefault() != XmlSchemaDerivationMethod.NONE) {
+            serializedSchema.setAttribute("finalDefault", 
schemaObj.getFinalDefault().toString());
         }
 
         if (schemaObj.version != null) {

Modified: 
webservices/commons/trunk/modules/XmlSchema/src/test/java/tests/AttributeRefTest.java
URL: 
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/XmlSchema/src/test/java/tests/AttributeRefTest.java?rev=762593&r1=762592&r2=762593&view=diff
==============================================================================
--- 
webservices/commons/trunk/modules/XmlSchema/src/test/java/tests/AttributeRefTest.java
 (original)
+++ 
webservices/commons/trunk/modules/XmlSchema/src/test/java/tests/AttributeRefTest.java
 Tue Apr  7 01:54:22 2009
@@ -20,7 +20,6 @@
 
 import java.io.FileInputStream;
 import java.io.InputStream;
-import java.util.Iterator;
 
 import javax.xml.namespace.QName;
 import javax.xml.transform.stream.StreamSource;
@@ -69,8 +68,7 @@
         String namspace = qName.getNamespaceURI();
         assertEquals("http://tempuri.org/attribute";, namspace);
 
-        for (Iterator toplevelAttributes = s.getAttributes().getValues(); 
toplevelAttributes.hasNext();) {
-            XmlSchemaAttribute attribute = 
(XmlSchemaAttribute)toplevelAttributes.next();
+        for (XmlSchemaAttribute attribute : s.getAttributes().values()) {
             assertEquals("http://tempuri.org/attribute";, 
attribute.getQName().getNamespaceURI());
         }
 


Reply via email to