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();
+ }
+
}