Author: jkaputin
Date: Thu Jul 21 07:45:03 2005
New Revision: 220098
URL: http://svn.apache.org/viewcvs?rev=220098&view=rev
Log:
Types work in progress
Added:
incubator/woden/java/src/org/apache/woden/internal/wsdl20/DocumentationImpl.java
incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/SchemaConstants.java
incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/SchemaImpl.java
Modified:
incubator/woden/java/src/org/apache/woden/internal/DOMWSDLReader.java
incubator/woden/java/src/org/apache/woden/internal/wsdl20/DescriptionImpl.java
incubator/woden/java/src/org/apache/woden/internal/wsdl20/TypesImpl.java
incubator/woden/java/src/org/apache/woden/wsdl20/extensions/Schema.java
incubator/woden/java/src/org/apache/woden/wsdl20/xml/DescriptionElement.java
incubator/woden/java/src/org/apache/woden/wsdl20/xml/TypesElement.java
Modified: incubator/woden/java/src/org/apache/woden/internal/DOMWSDLReader.java
URL:
http://svn.apache.org/viewcvs/incubator/woden/java/src/org/apache/woden/internal/DOMWSDLReader.java?rev=220098&r1=220097&r2=220098&view=diff
==============================================================================
--- incubator/woden/java/src/org/apache/woden/internal/DOMWSDLReader.java
(original)
+++ incubator/woden/java/src/org/apache/woden/internal/DOMWSDLReader.java Thu
Jul 21 07:45:03 2005
@@ -17,6 +17,8 @@
import org.apache.woden.internal.util.dom.DOMUtils;
import org.apache.woden.internal.util.dom.QNameUtils;
import org.apache.woden.internal.wsdl20.Constants;
+import org.apache.woden.internal.wsdl20.extensions.*;
+import org.apache.woden.wsdl20.extensions.*;
import org.apache.woden.wsdl20.xml.*;
import org.w3c.dom.Attr;
import org.w3c.dom.Document;
@@ -134,8 +136,12 @@
while (tempEl != null)
{
//TODO validate that the elements are in correct order
-
- if (QNameUtils.matches(Constants.Q_ELEM_TYPES, tempEl))
+
+ if (QNameUtils.matches(Constants.Q_ELEM_DOCUMENTATION, tempEl))
+ {
+ desc.setDocumentationElement(parseDocumentation(tempEl, desc));
+ }
+ else if (QNameUtils.matches(Constants.Q_ELEM_TYPES, tempEl))
{
desc.setTypesElement(parseTypes(tempEl, desc));
}
@@ -154,6 +160,14 @@
return desc;
}
+ private DocumentationElement parseDocumentation(Element docEl,
+ DescriptionElement desc)
+ {
+ DocumentationElement documentation = desc.createDocumentationElement();
+ documentation.setContentModel(docEl);
+ return documentation;
+ }
+
private ImportElement parseImport(Element importEl,
DescriptionElement desc,
Map importedDescs)
@@ -170,14 +184,90 @@
//TODO complete this method
return null;
}
+
+ /*
+ * TODO Initial schema parsing is specific to XML Schema.
+ * Need generic support for other type systems.
+ * Consider extension architecture with serializer/deserializer.
+ */
+ private Schema parseSchemaInline(Element schemaEl,
+ TypesElement desc)
+ throws WSDLException
+ {
+ Schema schema = new SchemaImpl();
+
+ schema.setTargetNamespace(
+ DOMUtils.getAttribute(schemaEl, Constants.ATTR_TARGET_NAMESPACE));
+
+ schema.setContentModel(schemaEl);
+
+ return schema;
+ }
+ /*
+ * TODO Initial schema parsing is specific to XML Schema.
+ * Need generic support for other type systems.
+ * Consider extension architecture with serializer/deserializer.
+ */
+ private SchemaImport parseSchemaImport(Element schemaEl,
+ TypesElement types)
+ throws WSDLException
+ {
+ SchemaImport schemaImport = new SchemaImportImpl();
+
+ schemaImport.setNamespace(
+ DOMUtils.getAttribute(schemaEl, Constants.ATTR_NAMESPACE));
+
+ schemaImport.setSchemaLocation(
+ DOMUtils.getAttribute(schemaEl,
SchemaConstants.ATTR_SCHEMA_LOCATION));
+
+ return schemaImport;
+ }
+
+ /*
+ * TODO Initial schema parsing is specific to XML Schema.
+ * Need generic support for other type systems.
+ * Consider extension architecture with serializer/deserializer.
+ */
private TypesElement parseTypes(Element typesEl,
DescriptionElement desc)
throws WSDLException
{
TypesElement types = desc.createTypesElement();
- return null;
+
+
+
+ Element tempEl = DOMUtils.getFirstChildElement(typesEl);
+
+
+ while (tempEl != null)
+ {
+ QName tempElType = QNameUtils.newQName(tempEl);
+
+ //TODO validate element order? <documentation> must be first.
+
+ if (QNameUtils.matches(Constants.Q_ELEM_DOCUMENTATION, tempEl))
+ {
+ types.setDocumentationElement(parseDocumentation(tempEl,
desc));
+ }
+ else if
(SchemaConstants.XSD_IMPORT_QNAME_LIST.contains(tempElType))
+ {
+ types.addSchemaImport(parseSchemaImport(tempEl, types));
+ }
+ else if
(SchemaConstants.XSD_SCHEMA_QNAME_LIST.contains(tempElType))
+ {
+ types.addSchema(parseSchemaInline(tempEl, types));
+ }
+ else
+ {
+ //TODO extensions for non-XML and non-XMLSchema type systems
+ }
+
+ tempEl = DOMUtils.getNextSiblingElement(tempEl);
+ }
+
+ return types;
}
/**
Modified:
incubator/woden/java/src/org/apache/woden/internal/wsdl20/DescriptionImpl.java
URL:
http://svn.apache.org/viewcvs/incubator/woden/java/src/org/apache/woden/internal/wsdl20/DescriptionImpl.java?rev=220098&r1=220097&r2=220098&view=diff
==============================================================================
---
incubator/woden/java/src/org/apache/woden/internal/wsdl20/DescriptionImpl.java
(original)
+++
incubator/woden/java/src/org/apache/woden/internal/wsdl20/DescriptionImpl.java
Thu Jul 21 07:45:03 2005
@@ -20,24 +20,30 @@
private DocumentationElement fDocumentationElement;
private String fTargetNamespace;
private Map fNamespaces;
+ private TypesElement fTypesElement;
- public void setDocumentBaseURI(String documentBaseURI) {
+ public void setDocumentBaseURI(String documentBaseURI)
+ {
this.fDocumentBaseURI = documentBaseURI;
}
- public String getDocumentBaseURI() {
+ public String getDocumentBaseURI()
+ {
return this.fDocumentBaseURI;
}
- public void setTargetNamespace(String namespace) {
+ public void setTargetNamespace(String namespace)
+ {
this.fTargetNamespace = namespace;
}
- public String getTargetNamespace() {
+ public String getTargetNamespace()
+ {
return null;
}
- public void addNamespace(String prefix, String namespace) {
+ public void addNamespace(String prefix, String namespace)
+ {
//ignores duplicate prefixes in the WSDL - earlier namespace gets
overwritten.
String pfx = (prefix != null) ? prefix : "";
@@ -57,21 +63,29 @@
fNamespaces.remove(pfx);
}
- public String getNamespace(String prefix) {
-
+ public String getNamespace(String prefix)
+ {
String pfx = (prefix != null) ? prefix : "";
return (String) fNamespaces.get(pfx);
}
- public Map getNamespaces() {
+ public Map getNamespaces()
+ {
return fNamespaces;
}
- public void setDocumentationElement(DocumentationElement docEl) {
+ public DocumentationElement createDocumentationElement()
+ {
+ return new DocumentationImpl();
+ }
+
+ public void setDocumentationElement(DocumentationElement docEl)
+ {
this.fDocumentationElement = docEl;
}
- public DocumentationElement getDocumentationElement() {
+ public DocumentationElement getDocumentationElement()
+ {
return this.fDocumentationElement;
}
@@ -102,7 +116,7 @@
public void setTypesElement(TypesElement typesEl)
{
-
+ fTypesElement = typesEl;
}
public TypesElement getTypesElement() {
Added:
incubator/woden/java/src/org/apache/woden/internal/wsdl20/DocumentationImpl.java
URL:
http://svn.apache.org/viewcvs/incubator/woden/java/src/org/apache/woden/internal/wsdl20/DocumentationImpl.java?rev=220098&view=auto
==============================================================================
---
incubator/woden/java/src/org/apache/woden/internal/wsdl20/DocumentationImpl.java
(added)
+++
incubator/woden/java/src/org/apache/woden/internal/wsdl20/DocumentationImpl.java
Thu Jul 21 07:45:03 2005
@@ -0,0 +1,37 @@
+/*
+ * TODO Apache boiler plate
+ */
+package org.apache.woden.internal.wsdl20;
+
+import org.apache.woden.wsdl20.xml.DocumentationElement;
+
+/**
+ * This class implements support for parsing, creating and manipulating a
+ * WSDL 2.0 <wsdl:documentation> XML element.
+ * The <wsdl:documentation> element may contain mixed content, but this
+ * class does not attempt to understand that content. Instead it just wraps
+ * the <wsdl:documentation> element's content model as a
java.lang.Object.
+ *
+ * @author [EMAIL PROTECTED]
+ */
+public class DocumentationImpl implements DocumentationElement {
+
+ private Object fContentModel;
+
+ /* (non-Javadoc)
+ * @see
org.apache.woden.wsdl20.xml.DocumentationElement#setContentModel(java.lang.Object)
+ */
+ public void setContentModel(Object docEl)
+ {
+ this.fContentModel = docEl;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.woden.wsdl20.xml.DocumentationElement#getContentModel()
+ */
+ public Object getContentModel()
+ {
+ return this.fContentModel;
+ }
+
+}
Modified:
incubator/woden/java/src/org/apache/woden/internal/wsdl20/TypesImpl.java
URL:
http://svn.apache.org/viewcvs/incubator/woden/java/src/org/apache/woden/internal/wsdl20/TypesImpl.java?rev=220098&r1=220097&r2=220098&view=diff
==============================================================================
--- incubator/woden/java/src/org/apache/woden/internal/wsdl20/TypesImpl.java
(original)
+++ incubator/woden/java/src/org/apache/woden/internal/wsdl20/TypesImpl.java
Thu Jul 21 07:45:03 2005
@@ -3,9 +3,7 @@
*/
package org.apache.woden.internal.wsdl20;
-import java.util.List;
import java.util.Map;
-import java.util.Vector;
import org.apache.woden.wsdl20.extensions.Schema;
import org.apache.woden.wsdl20.extensions.SchemaImport;
import org.apache.woden.wsdl20.xml.DocumentationElement;
@@ -30,6 +28,8 @@
private DocumentationElement fDocumentation;
private Map fSchemaImports;
private Map fSchemas;
+
+ //TODO extension attributes and elements
public void setDocumentationElement(DocumentationElement docEl)
{
@@ -45,41 +45,38 @@
* Schema imports <xs:import>
*
* We store a SchemaImport for each <xs:import> element in a Map
- * with a key of namespace and a value of SchemaImport array.
- *
- * TODO Decide on List impl versus Array impl.
+ * of SchemaImport[] keyed by namespace.
*/
public void addSchemaImport(SchemaImport schemaImport)
{
+ SchemaImport[] oldArray, newArray;
String namespace = schemaImport.getNamespace();
- SchemaImport[] schemaImportArray =
- (SchemaImport[]) this.fSchemaImports.get(namespace);
+ Object schemaImports = this.fSchemaImports.get(namespace);
- if(schemaImportArray == null)
+ if(schemaImports == null)
{
- schemaImportArray = new SchemaImport[] {schemaImport};
- this.fSchemaImports.put(namespace, schemaImportArray);
+ newArray = new SchemaImport[] {schemaImport};
}
else
{
- int len = schemaImportArray.length;
- SchemaImport[] newArray = new SchemaImport[len+1];
+ oldArray = (SchemaImport[]) schemaImports;
+ int len = oldArray.length;
+ newArray = new SchemaImport[len+1];
for(int i=0; i < len; i++)
{
- newArray[i] = schemaImportArray[i];
+ newArray[i] = oldArray[i];
}
- newArray[len+1] = schemaImport;
-
- this.fSchemaImports.put(namespace, newArray);
+ newArray[len] = schemaImport;
}
+ this.fSchemaImports.put(namespace, newArray);
}
//TODO what if schemaLoc is null and there is more than one import for
this namespace?
- //Delete all or raise an error?
+
public void removeSchemaImport(String namespace, String schemaLoc)
{
//TODO tbc
@@ -105,28 +102,39 @@
* Inline schemas <xs:schema>
*
* We store a Schema for each <xs:schema> element in a Map
- * with a key of namespace and a value of Schema array.
- *
- * TODO Decide on List impl versus Array impl.
+ * of Schema[] keyed by targetNamespace.
*/
public void addSchema(Schema schema)
{
- String namespace = schema.getTargetNamespace();
- List schemaList = (List) this.fSchemas.get(namespace);
+ Schema[] oldArray, newArray;
+ String targetNamespace = schema.getTargetNamespace();
+ Object schemas = this.fSchemas.get(targetNamespace);
- if(schemaList == null)
+ if(schemas == null)
{
- schemaList = new Vector();
- this.fSchemas.put(namespace, schemaList);
+ newArray = new Schema[] {schema};
+ }
+ else
+ {
+ oldArray = (Schema[]) schemas;
+ int len = oldArray.length;
+ newArray = new Schema[len+1];
+
+ for(int i=0; i < len; i++)
+ {
+ newArray[i] = oldArray[i];
+ }
+ newArray[len] = schema;
}
- schemaList.add(schema);
+ this.fSchemas.put(targetNamespace, newArray);
}
- //TODO what if schemaLoc is null and there is more than one import for
this namespace?
- //Delete all or raise an error?
+
+ //TODO what if id is null and there is more than one inline schema for
this namespace?
+
public void removeSchema(String namespace, String id)
{
//TODO tbc
Added:
incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/SchemaConstants.java
URL:
http://svn.apache.org/viewcvs/incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/SchemaConstants.java?rev=220098&view=auto
==============================================================================
---
incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/SchemaConstants.java
(added)
+++
incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/SchemaConstants.java
Thu Jul 21 07:45:03 2005
@@ -0,0 +1,79 @@
+/*
+ * TODO Apache boiler plate
+ */
+
+package org.apache.woden.internal.wsdl20.extensions;
+
+import java.util.Arrays;
+import java.util.List;
+import javax.xml.namespace.QName;
+
+/**
+ * Constants for XML Schema elements, attributes and URIs.
+ *
+ * @author [EMAIL PROTECTED]
+ */
+public class SchemaConstants {
+
+ //Schema attribute names
+ public static final String ATTR_ID = "id";
+ public static final String ATTR_SCHEMA_LOCATION = "schemaLocation";
+
+ //Schema element names
+ public static final String ELEM_SCHEMA = "schema";
+ public static final String ELEM_SCHEMA_IMPORT = "import";
+ public static final String ELEM_SCHEMA_INCLUDE = "include";
+ public static final String ELEM_SCHEMA_REDEFINE = "redefine";
+
+ //Schema uri
+ public static final String NS_URI_XSD_1999 =
+ "http://www.w3.org/1999/XMLSchema";
+ public static final String NS_URI_XSD_2000 =
+ "http://www.w3.org/2000/10/XMLSchema";
+ public static final String NS_URI_XSD_2001 =
+ "http://www.w3.org/2001/XMLSchema";
+
+ //<xs:schema> qnames
+ public static final QName Q_ELEM_XSD_1999 =
+ new QName(NS_URI_XSD_1999, ELEM_SCHEMA);
+ public static final QName Q_ELEM_XSD_2000 =
+ new QName(NS_URI_XSD_2000, ELEM_SCHEMA);
+ public static final QName Q_ELEM_XSD_2001 =
+ new QName(NS_URI_XSD_2001, ELEM_SCHEMA);
+ public static final List XSD_SCHEMA_QNAME_LIST = Arrays.asList(new QName[]
+ {Q_ELEM_XSD_1999, Q_ELEM_XSD_2000, Q_ELEM_XSD_2001});
+
+ //<xs:import> qnames
+ public static final QName Q_ELEM_IMPORT_XSD_1999 = new QName(
+ NS_URI_XSD_1999, ELEM_SCHEMA_IMPORT);
+ public static final QName Q_ELEM_IMPORT_XSD_2000 = new QName(
+ NS_URI_XSD_2000, ELEM_SCHEMA_IMPORT);
+ public static final QName Q_ELEM_IMPORT_XSD_2001 = new QName(
+ NS_URI_XSD_2001, ELEM_SCHEMA_IMPORT);
+ public static final List XSD_IMPORT_QNAME_LIST = Arrays.asList(new QName[]
+ { Q_ELEM_IMPORT_XSD_1999, Q_ELEM_IMPORT_XSD_2000,
Q_ELEM_IMPORT_XSD_2001 });
+
+ //TODO remove <include> if not used in Woden
+ //<xs:include> qnames
+ public static final QName Q_ELEM_INCLUDE_XSD_1999 = new QName(
+ NS_URI_XSD_1999, ELEM_SCHEMA_INCLUDE);
+ public static final QName Q_ELEM_INCLUDE_XSD_2000 = new QName(
+ NS_URI_XSD_2000, ELEM_SCHEMA_INCLUDE);
+ public static final QName Q_ELEM_INCLUDE_XSD_2001 = new QName(
+ NS_URI_XSD_2001, ELEM_SCHEMA_INCLUDE);
+ public static final List XSD_INCLUDE_QNAME_LIST = Arrays.asList(new QName[]
+ { Q_ELEM_INCLUDE_XSD_1999, Q_ELEM_INCLUDE_XSD_2000,
Q_ELEM_INCLUDE_XSD_2001 });
+
+ //TODO remove <redefine> if not used in Woden
+ //<xs:redefine> qnames
+ public static final QName Q_ELEM_REDEFINE_XSD_1999 = new QName(
+ NS_URI_XSD_1999, ELEM_SCHEMA_REDEFINE);
+ public static final QName Q_ELEM_REDEFINE_XSD_2000 = new QName(
+ NS_URI_XSD_2000, ELEM_SCHEMA_REDEFINE);
+ public static final QName Q_ELEM_REDEFINE_XSD_2001 = new QName(
+ NS_URI_XSD_2001, ELEM_SCHEMA_REDEFINE);
+ public static final List XSD_REDEFINE_QNAME_LIST = Arrays.asList(new
QName[]
+ { Q_ELEM_REDEFINE_XSD_1999, Q_ELEM_REDEFINE_XSD_2000,
Q_ELEM_REDEFINE_XSD_2001 });
+
+
+}
Added:
incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/SchemaImpl.java
URL:
http://svn.apache.org/viewcvs/incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/SchemaImpl.java?rev=220098&view=auto
==============================================================================
---
incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/SchemaImpl.java
(added)
+++
incubator/woden/java/src/org/apache/woden/internal/wsdl20/extensions/SchemaImpl.java
Thu Jul 21 07:45:03 2005
@@ -0,0 +1,44 @@
+/*
+ * TODO Apache boiler plate
+ */
+package org.apache.woden.internal.wsdl20.extensions;
+
+import org.apache.woden.wsdl20.extensions.Schema;
+
+/**
+ * A wrapper for a <xs:schema> element.
+ *
+ * @author [EMAIL PROTECTED]
+ */
+public class SchemaImpl implements Schema {
+
+ private String fTargetNamespace;
+ private Object fContentModel;
+
+ /* (non-Javadoc)
+ * @see
org.apache.woden.wsdl20.extensions.Schema#setTargetNamespace(java.lang.String)
+ */
+ public void setTargetNamespace(String namespace)
+ {
+ fTargetNamespace = namespace;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.woden.wsdl20.extensions.Schema#getTargetNamespace()
+ */
+ public String getTargetNamespace()
+ {
+ return fTargetNamespace;
+ }
+
+ public void setContentModel(Object schemaEl)
+ {
+ fContentModel = schemaEl;
+ }
+
+ public Object getContentModel()
+ {
+ return fContentModel;
+ }
+
+}
Modified:
incubator/woden/java/src/org/apache/woden/wsdl20/extensions/Schema.java
URL:
http://svn.apache.org/viewcvs/incubator/woden/java/src/org/apache/woden/wsdl20/extensions/Schema.java?rev=220098&r1=220097&r2=220098&view=diff
==============================================================================
--- incubator/woden/java/src/org/apache/woden/wsdl20/extensions/Schema.java
(original)
+++ incubator/woden/java/src/org/apache/woden/wsdl20/extensions/Schema.java Thu
Jul 21 07:45:03 2005
@@ -5,8 +5,9 @@
/**
* This interface represents the XML element information item for
- * a <xs:schema> element. It declares the behaviour required to
- * support parsing, creating and manipulating a <xs:schema> element.
+ * a <xs:schema> element. It exposes the targetNamespace
+ * attribute, but just wraps the remaining schema content as a
+ * java.lang.Object.
*
* @author [EMAIL PROTECTED]
*/
@@ -15,4 +16,9 @@
public void setTargetNamespace(String namespace);
public String getTargetNamespace();
+
+ public void setContentModel(Object schemaEl);
+
+ public Object getContentModel();
+
}
Modified:
incubator/woden/java/src/org/apache/woden/wsdl20/xml/DescriptionElement.java
URL:
http://svn.apache.org/viewcvs/incubator/woden/java/src/org/apache/woden/wsdl20/xml/DescriptionElement.java?rev=220098&r1=220097&r2=220098&view=diff
==============================================================================
---
incubator/woden/java/src/org/apache/woden/wsdl20/xml/DescriptionElement.java
(original)
+++
incubator/woden/java/src/org/apache/woden/wsdl20/xml/DescriptionElement.java
Thu Jul 21 07:45:03 2005
@@ -14,6 +14,11 @@
*/
public interface DescriptionElement extends WSDL20Element
{
+
+ /*
+ * Attributes and namespaces
+ */
+
public void setDocumentBaseURI(String documentBaseURI);
public String getDocumentBaseURI();
@@ -25,18 +30,30 @@
public String getNamespace(String prefix);
public Map getNamespaces();
+ /*
+ * Element factory methods
+ */
+
+ public DocumentationElement createDocumentationElement();
+ public TypesElement createTypesElement();
+
+
+ /*
+ * Element accessor methods
+ *
+ * TODO removeXXX, getXXX methods for the elements with an addXXX method
+ *
+ */
+
public void setDocumentationElement(DocumentationElement docEl);
public DocumentationElement getDocumentationElement();
- //TODO removeXXX, getXXX methods for the elements with an addXXX method
-
public void addImportElement(ImportElement importEl);
public ImportElement[] getImports();
public void addIncludeElement(IncludeElement includeEl);
public IncludeElement[] getIncludes();
- public TypesElement createTypesElement();
public void setTypesElement(TypesElement typesEl);
public TypesElement getTypesElement();
Modified: incubator/woden/java/src/org/apache/woden/wsdl20/xml/TypesElement.java
URL:
http://svn.apache.org/viewcvs/incubator/woden/java/src/org/apache/woden/wsdl20/xml/TypesElement.java?rev=220098&r1=220097&r2=220098&view=diff
==============================================================================
--- incubator/woden/java/src/org/apache/woden/wsdl20/xml/TypesElement.java
(original)
+++ incubator/woden/java/src/org/apache/woden/wsdl20/xml/TypesElement.java Thu
Jul 21 07:45:03 2005
@@ -20,6 +20,9 @@
* schema elements or types share the same names), so the id attribute
* will distinguish them.
*
+ * TODO Initial type system support is specific to XML Schema.
+ * Need generic support for other type systems.
+ *
* @author [EMAIL PROTECTED]
*/
public interface TypesElement extends WSDL20Element {
@@ -29,22 +32,34 @@
public DocumentationElement getDocumentationElement();
/*
- * Schema imports <xs:import>
- *
- * We store a SchemaImport for each <xs:import> element in a Map
- * with a key of namespace and a value of SchemaImport array.
+ * Schema imports <xs:import> are stored in a Map of SchemaImport[]
+ * keyed by namespace. The schemaLocation attribute will distinguish
+ * schemas imported with the same namespace.
*/
-
+
public void addSchemaImport(SchemaImport schemaImport);
//TODO what if schemaLoc is null and there is more than one import for
this namespace?
//Delete all or raise an error?
+
+ /**
+ * Add a SchemaImport to the schemas imported within the <types>
element.
+ */
public void removeSchemaImport(String namespace, String schemaLoc);
+ /**
+ * @return the SchemaImport with the specified namespace and
schemaLocation.
+ */
public SchemaImport getSchemaImport(String namespace, String schemaLoc);
+ /**
+ * @return a map of SchemaImport[] keyed by namespace.
+ */
public Map getSchemaImports();
+ /**
+ * Stores schema imports as map of SchemaImport[] keyed by namespace.
+ */
public void setSchemaImports(Map imports);
//TODO is there a use case to get or remove all imports for a given
namespace?
@@ -52,23 +67,40 @@
//public SchemaImport[] getSchemaImports(String namespace);
//public void removeSchemaImports(String namespace);
+
+
/*
- * Inline schemas <xs:schema>
- *
- * We store a Schema for each <xs:schema> element in a Map
- * with a key of namespace and a value of Schema array.
+ * Inline schemas <xs:schema> are stored in a Map of Schema[] keyed
+ * by targetNamespace. The id attribute will distinguish multiple
+ * Schemas with the same targetNamespace.
*/
+ /**
+ * Add a Schema to the schemas defined inline within the <types>
element.
+ */
public void addSchema(Schema schema);
- //TODO what if schemaLoc is null and there is more than one import for
this namespace?
+ //TODO what if id is null and there is more than one inline schema for
this namespace?
//Delete all or raise an error?
- public void removeSchema(String namespace, String id);
- public Schema getSchema(String namespace, String id);
+ /**
+ * Delete the Schema with the specified targetNamespace and (optionally)
id.
+ */
+ public void removeSchema(String targetNamespace, String id);
+
+ /**
+ * @return the Schema with the specified targetNamespace and (optionally)
id.
+ */
+ public Schema getSchema(String targetNamespace, String id);
+ /**
+ * @return a map of Schema[] keyed by targetNamespace.
+ */
public Map getSchemas();
+ /**
+ * Stores schemas as map of Schema[] keyed by targetNamespace.
+ */
public void setSchemas(Map schemas);
//TODO is there a use case to get or remove all inline schemas for a given
namespace?
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]