You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commons-dev@ws.apache.org by bi...@apache.org on 2010/09/05 13:39:14 UTC

svn commit: r992760 - /webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/

Author: bimargulies
Date: Sun Sep  5 11:39:13 2010
New Revision: 992760

URL: http://svn.apache.org/viewvc?rev=992760&view=rev
Log:
WSCOMMONS-559

Modified:
    webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/SchemaBuilder.java
    webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/XmlSchemaAttribute.java
    webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/XmlSchemaAttributeGroupRef.java
    webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/XmlSchemaComplexContentExtension.java
    webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/XmlSchemaComplexContentRestriction.java
    webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/XmlSchemaComplexType.java
    webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/XmlSchemaContent.java
    webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/XmlSchemaSimpleContentExtension.java
    webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/XmlSchemaSimpleContentRestriction.java
    webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/XmlSchemaSimpleType.java

Modified: webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/SchemaBuilder.java
URL: http://svn.apache.org/viewvc/webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/SchemaBuilder.java?rev=992760&r1=992759&r2=992760&view=diff
==============================================================================
--- webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/SchemaBuilder.java (original)
+++ webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/SchemaBuilder.java Sun Sep  5 11:39:13 2010
@@ -666,7 +666,7 @@ public class SchemaBuilder {
 			} else if (el.getLocalName().equals("attribute")) {
 				ct.attributes.add(handleAttribute(schema, el, schemaEl));
 			} else if (el.getLocalName().equals("attributeGroup")) {
-				ct.attributes.add(handleAttributeGroupRef(el));
+				ct.attributes.add(handleAttributeGroupRef(schema, el));
 			} else if (el.getLocalName().equals("group")) {
 				XmlSchemaGroupRef group = handleGroupRef(schema, el, schemaEl);
 				ct.particle = (group.particle == null) ? (XmlSchemaParticle) group
@@ -780,7 +780,7 @@ public class SchemaBuilder {
 	private XmlSchemaSimpleContentRestriction handleSimpleContentRestriction(
 			XmlSchema schema, Element restrictionEl, Element schemaEl) {
 
-		XmlSchemaSimpleContentRestriction restriction = new XmlSchemaSimpleContentRestriction();
+		XmlSchemaSimpleContentRestriction restriction = new XmlSchemaSimpleContentRestriction(schema);
 
 		if (restrictionEl.hasAttribute("base")) {
 			String name = restrictionEl.getAttribute("base");
@@ -799,7 +799,7 @@ public class SchemaBuilder {
 				XmlSchemaAttribute attr = handleAttribute(schema, el, schemaEl);
 				restriction.attributes.add(attr);
 			} else if (el.getLocalName().equals("attributeGroup")) {
-				XmlSchemaAttributeGroupRef attrGroup = handleAttributeGroupRef(el);
+				XmlSchemaAttributeGroupRef attrGroup = handleAttributeGroupRef(schema, el);
 				restriction.attributes.add(attrGroup);
 			} else if (el.getLocalName().equals("simpleType")) {
 				restriction.baseType = handleSimpleType(schema, el, schemaEl);
@@ -823,7 +823,7 @@ public class SchemaBuilder {
 	private XmlSchemaSimpleContentExtension handleSimpleContentExtension(
 			XmlSchema schema, Element extEl, Element schemaEl) {
 
-		XmlSchemaSimpleContentExtension ext = new XmlSchemaSimpleContentExtension();
+		XmlSchemaSimpleContentExtension ext = new XmlSchemaSimpleContentExtension(schema);
 
 		if (extEl.hasAttribute("base")) {
 			String name = extEl.getAttribute("base");
@@ -838,7 +838,7 @@ public class SchemaBuilder {
 				XmlSchemaAttribute attr = handleAttribute(schema, el, schemaEl);
 				ext.attributes.add(attr);
 			} else if (el.getLocalName().equals("attributeGroup")) {
-				XmlSchemaAttributeGroupRef attrGroup = handleAttributeGroupRef(el);
+				XmlSchemaAttributeGroupRef attrGroup = handleAttributeGroupRef(schema, el);
 				ext.attributes.add(attrGroup);
 			} else if (el.getLocalName().equals("anyAttribute")) {
 				ext.anyAttribute = handleAnyAttribute(schema, el, schemaEl);
@@ -853,7 +853,7 @@ public class SchemaBuilder {
 	private XmlSchemaComplexContentRestriction handleComplexContentRestriction(
 			XmlSchema schema, Element restrictionEl, Element schemaEl) {
 
-		XmlSchemaComplexContentRestriction restriction = new XmlSchemaComplexContentRestriction();
+		XmlSchemaComplexContentRestriction restriction = new XmlSchemaComplexContentRestriction(schema);
 
 		if (restrictionEl.hasAttribute("base")) {
 			String name = restrictionEl.getAttribute("base");
@@ -873,7 +873,7 @@ public class SchemaBuilder {
 				restriction.attributes
 						.add(handleAttribute(schema, el, schemaEl));
 			} else if (el.getLocalName().equals("attributeGroup")) {
-				restriction.attributes.add(handleAttributeGroupRef(el));
+				restriction.attributes.add(handleAttributeGroupRef(schema, el));
 			} else if (el.getLocalName().equals("group")) {
 				restriction.particle = handleGroupRef(schema, el, schemaEl);
 			} else if (el.getLocalName().equals("anyAttribute")) {
@@ -889,7 +889,7 @@ public class SchemaBuilder {
 	private XmlSchemaComplexContentExtension handleComplexContentExtension(
 			XmlSchema schema, Element extEl, Element schemaEl) {
 
-		XmlSchemaComplexContentExtension ext = new XmlSchemaComplexContentExtension();
+		XmlSchemaComplexContentExtension ext = new XmlSchemaComplexContentExtension(schema);
 
 		if (extEl.hasAttribute("base")) {
 			String name = extEl.getAttribute("base");
@@ -909,7 +909,7 @@ public class SchemaBuilder {
 			} else if (el.getLocalName().equals("attribute")) {
 				ext.attributes.add(handleAttribute(schema, el, schemaEl));
 			} else if (el.getLocalName().equals("attributeGroup")) {
-				ext.attributes.add(handleAttributeGroupRef(el));
+				ext.attributes.add(handleAttributeGroupRef(schema, el));
 			} else if (el.getLocalName().equals("group")) {
 				ext.particle = handleGroupRef(schema, el, schemaEl);
 			} else if (el.getLocalName().equals("anyAttribute")) {
@@ -921,10 +921,10 @@ public class SchemaBuilder {
 		return ext;
 	}
 
-	private XmlSchemaAttributeGroupRef handleAttributeGroupRef(
+	private XmlSchemaAttributeGroupRef handleAttributeGroupRef(XmlSchema schema,
 			Element attrGroupEl) {
 
-		XmlSchemaAttributeGroupRef attrGroup = new XmlSchemaAttributeGroupRef();
+		XmlSchemaAttributeGroupRef attrGroup = new XmlSchemaAttributeGroupRef(schema);
 
 		if (attrGroupEl.hasAttribute("ref")) {
 			String ref = attrGroupEl.getAttribute("ref");
@@ -1115,7 +1115,7 @@ public class SchemaBuilder {
 				XmlSchemaAttribute attr = handleAttribute(schema, el, schemaEl);
 				attrGroup.attributes.add(attr);
 			} else if (el.getLocalName().equals("attributeGroup")) {
-				XmlSchemaAttributeGroupRef attrGroupRef = handleAttributeGroupRef(el);
+				XmlSchemaAttributeGroupRef attrGroupRef = handleAttributeGroupRef(schema, el);
 				attrGroup.attributes.add(attrGroupRef);
 			} else if (el.getLocalName().equals("anyAttribute")) {
 				attrGroup.anyAttribute = handleAnyAttribute(schema, el,

Modified: webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/XmlSchemaAttribute.java
URL: http://svn.apache.org/viewvc/webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/XmlSchemaAttribute.java?rev=992760&r1=992759&r2=992760&view=diff
==============================================================================
--- webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/XmlSchemaAttribute.java (original)
+++ webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/XmlSchemaAttribute.java Sun Sep  5 11:39:13 2010
@@ -136,4 +136,23 @@ public class XmlSchemaAttribute extends 
 
         return xml;
     }
+
+    static final XmlSchemaAttribute getAttribute(final XmlSchemaObjectCollection attributes, final QName name) {
+        if ((attributes == null) || (name == null)) return null;
+        for (int i = 0; i < attributes.getCount(); i++) {
+            final XmlSchemaObject attrItem = attributes.getItem(i);
+            if (attrItem instanceof XmlSchemaAttributeGroupRef) {
+                final XmlSchemaAttributeGroup attrGroup = ((XmlSchemaAttributeGroupRef)attrItem).resolve();
+                if (attrGroup == null) continue;
+                final XmlSchemaAttribute attr = getAttribute(attrGroup.getAttributes(), name);
+                if (attr != null) return attr;
+            } else if (attrItem instanceof XmlSchemaAttribute) {
+                final XmlSchemaAttribute attr = (XmlSchemaAttribute)attrItem;
+                final QName attrQName = attr.getQName();
+                if ((attrQName != null) && (attrQName.equals(name))) return attr;
+            }
+        }
+        return null;
+    }
+
 }

Modified: webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/XmlSchemaAttributeGroupRef.java
URL: http://svn.apache.org/viewvc/webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/XmlSchemaAttributeGroupRef.java?rev=992760&r1=992759&r2=992760&view=diff
==============================================================================
--- webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/XmlSchemaAttributeGroupRef.java (original)
+++ webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/XmlSchemaAttributeGroupRef.java Sun Sep  5 11:39:13 2010
@@ -28,10 +28,13 @@ import javax.xml.namespace.QName;
  */
 public class XmlSchemaAttributeGroupRef extends XmlSchemaAnnotated {
 
+    XmlSchema schema;
+
     /**
      * Creates new XmlSchemaAttributeGroupRef
      */
-    public XmlSchemaAttributeGroupRef() {
+    public XmlSchemaAttributeGroupRef(XmlSchema schema) {
+      this.schema = schema;
     }
 
     QName refName;
@@ -44,4 +47,8 @@ public class XmlSchemaAttributeGroupRef 
         this.refName = refName;
     }
 
+    public XmlSchemaAttributeGroup resolve() {
+        return (XmlSchemaAttributeGroup)schema.getAttributeGroups().getItem(refName);
+    }
+
 }

Modified: webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/XmlSchemaComplexContentExtension.java
URL: http://svn.apache.org/viewvc/webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/XmlSchemaComplexContentExtension.java?rev=992760&r1=992759&r2=992760&view=diff
==============================================================================
--- webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/XmlSchemaComplexContentExtension.java (original)
+++ webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/XmlSchemaComplexContentExtension.java Sun Sep  5 11:39:13 2010
@@ -33,7 +33,8 @@ public class XmlSchemaComplexContentExte
     /**
      * Creates new XmlSchemaComplexContentExtension
      */
-    public XmlSchemaComplexContentExtension() {
+    public XmlSchemaComplexContentExtension(XmlSchema schema) {
+        super(schema);
         attributes = new XmlSchemaObjectCollection();
 
     }
@@ -96,4 +97,18 @@ public class XmlSchemaComplexContentExte
         xml += "</" + prefix + "extension>\n";
         return xml;
     }
+
+    public XmlSchemaComplexType resolveBaseComplexType() {
+        return (XmlSchemaComplexType)resolveBaseType();
+    }
+
+    XmlSchemaAttribute getAttribute(QName name) {
+        XmlSchemaAttribute attr = super.getAttribute(name);
+        if (attr == null) {
+            XmlSchemaComplexType baseType = resolveBaseComplexType();
+            if (baseType != null) attr = baseType.getAttribute(name);
+        }
+        return attr;
+    }
+
 }

Modified: webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/XmlSchemaComplexContentRestriction.java
URL: http://svn.apache.org/viewvc/webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/XmlSchemaComplexContentRestriction.java?rev=992760&r1=992759&r2=992760&view=diff
==============================================================================
--- webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/XmlSchemaComplexContentRestriction.java (original)
+++ webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/XmlSchemaComplexContentRestriction.java Sun Sep  5 11:39:13 2010
@@ -34,7 +34,8 @@ public class XmlSchemaComplexContentRest
     /**
      * Creates new XmlSchemaComplexContentRestriction
      */
-    public XmlSchemaComplexContentRestriction() {
+    public XmlSchemaComplexContentRestriction(XmlSchema schema) {
+        super(schema);
         attributes = new XmlSchemaObjectCollection();
     }
 
@@ -100,5 +101,19 @@ public class XmlSchemaComplexContentRest
         xml += "</" + prefix + "restriction>\n";
         return xml;
     }
+
+    public XmlSchemaComplexType resolveBaseComplexType() {
+        return (XmlSchemaComplexType)resolveBaseType();
+    }
+
+    XmlSchemaAttribute getAttribute(QName name) {
+        XmlSchemaAttribute attr = super.getAttribute(name);
+        if (attr == null) {
+            XmlSchemaComplexType baseType = resolveBaseComplexType();
+            if (baseType != null) attr = baseType.getAttribute(name);
+        }
+        return attr;
+    }
+
 }
 

Modified: webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/XmlSchemaComplexType.java
URL: http://svn.apache.org/viewvc/webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/XmlSchemaComplexType.java?rev=992760&r1=992759&r2=992760&view=diff
==============================================================================
--- webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/XmlSchemaComplexType.java (original)
+++ webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/XmlSchemaComplexType.java Sun Sep  5 11:39:13 2010
@@ -177,5 +177,11 @@ public class XmlSchemaComplexType extend
 		return ext.getBaseTypeName();
 	}
 
+    public XmlSchemaAttribute getAttribute(QName name) {
+        XmlSchemaAttribute attr = XmlSchemaAttribute.getAttribute(attributes, name);
+        if (attr != null) return attr;
+        if (contentModel != null) return contentModel.getContent().getAttribute(name);
+        return null;
+    }
 
 }

Modified: webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/XmlSchemaContent.java
URL: http://svn.apache.org/viewvc/webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/XmlSchemaContent.java?rev=992760&r1=992759&r2=992760&view=diff
==============================================================================
--- webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/XmlSchemaContent.java (original)
+++ webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/XmlSchemaContent.java Sun Sep  5 11:39:13 2010
@@ -19,6 +19,8 @@
 
 package org.apache.ws.commons.schema;
 
+import javax.xml.namespace.QName;
+
 /**
  * An abstract class for schema content.
  *
@@ -26,10 +28,26 @@ package org.apache.ws.commons.schema;
 
 public abstract class XmlSchemaContent extends XmlSchemaAnnotated {
 
+    XmlSchema schema;
+
     /**
      * Creates new XmlSchemaContent
      */
-    protected XmlSchemaContent() {
+    protected XmlSchemaContent(XmlSchema schema) {
+        this.schema = schema;
+    }
+
+    public abstract XmlSchemaObjectCollection getAttributes();
+
+    public abstract QName getBaseTypeName();
+
+    public XmlSchemaType resolveBaseType() {
+        QName baseTypeName = getBaseTypeName();
+        return (baseTypeName != null) ? schema.getTypeByName(baseTypeName) : null;
+    }
+
+    XmlSchemaAttribute getAttribute(QName name) {
+      return XmlSchemaAttribute.getAttribute(getAttributes(), name);
     }
 
 }

Modified: webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/XmlSchemaSimpleContentExtension.java
URL: http://svn.apache.org/viewvc/webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/XmlSchemaSimpleContentExtension.java?rev=992760&r1=992759&r2=992760&view=diff
==============================================================================
--- webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/XmlSchemaSimpleContentExtension.java (original)
+++ webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/XmlSchemaSimpleContentExtension.java Sun Sep  5 11:39:13 2010
@@ -33,7 +33,8 @@ public class XmlSchemaSimpleContentExten
     /**
      * Creates new XmlSchemaSimpleContentExtension
      */
-    public XmlSchemaSimpleContentExtension() {
+    public XmlSchemaSimpleContentExtension(XmlSchema schema) {
+        super(schema);
         attributes = new XmlSchemaObjectCollection();
 
     }
@@ -67,5 +68,9 @@ public class XmlSchemaSimpleContentExten
         return this.baseTypeName;
     }
 
+    public XmlSchemaSimpleType resolveBaseSimpleType() {
+        return (XmlSchemaSimpleType)resolveBaseType();
+    }
+
 }
 

Modified: webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/XmlSchemaSimpleContentRestriction.java
URL: http://svn.apache.org/viewvc/webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/XmlSchemaSimpleContentRestriction.java?rev=992760&r1=992759&r2=992760&view=diff
==============================================================================
--- webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/XmlSchemaSimpleContentRestriction.java (original)
+++ webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/XmlSchemaSimpleContentRestriction.java Sun Sep  5 11:39:13 2010
@@ -33,7 +33,8 @@ public class XmlSchemaSimpleContentRestr
     /**
      * Creates new XmlSchemaSimpleContentRestriction
      */
-    public XmlSchemaSimpleContentRestriction() {
+    public XmlSchemaSimpleContentRestriction(XmlSchema schema) {
+        super(schema);
         facets = new XmlSchemaObjectCollection();
         attributes = new XmlSchemaObjectCollection();
     }
@@ -85,5 +86,14 @@ public class XmlSchemaSimpleContentRestr
         return this.facets;
     }
 
+    public XmlSchemaType resolveBaseType() {
+        if (baseType != null) return baseType;
+        return resolveBaseType();
+    }
+
+    public XmlSchemaSimpleType resolveBaseSimpleType() {
+        return (XmlSchemaSimpleType)resolveBaseType();
+    }
+
 }
 			

Modified: webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/XmlSchemaSimpleType.java
URL: http://svn.apache.org/viewvc/webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/XmlSchemaSimpleType.java?rev=992760&r1=992759&r2=992760&view=diff
==============================================================================
--- webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/XmlSchemaSimpleType.java (original)
+++ webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/XmlSchemaSimpleType.java Sun Sep  5 11:39:13 2010
@@ -19,6 +19,9 @@
 
 package org.apache.ws.commons.schema;
 
+import javax.xml.namespace.QName;
+
+
 /**
  * Class defines a simple type that determines the information and
  * constraints for the values of attributes or elements with text-only
@@ -66,5 +69,13 @@ public class XmlSchemaSimpleType extends
         return xml;
     }
 
+    public QName getRootTypeName() {
+        if (content == null) return getQName();
+        if (!(content instanceof XmlSchemaSimpleTypeRestriction)) return null;
+        XmlSchemaSimpleTypeRestriction typeRestriction = (XmlSchemaSimpleTypeRestriction)content;
+        if (typeRestriction.getBaseType() != null) return typeRestriction.getBaseType().getRootTypeName();
+        return typeRestriction.getBaseTypeName();
+    }
+
 }