summaryrefslogtreecommitdiff
path: root/gnu/xml/validation/xmlschema
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/xml/validation/xmlschema')
-rw-r--r--gnu/xml/validation/xmlschema/ComplexType.java12
-rw-r--r--gnu/xml/validation/xmlschema/XMLSchema.java15
-rw-r--r--gnu/xml/validation/xmlschema/XMLSchemaBuilder.java18
-rw-r--r--gnu/xml/validation/xmlschema/XMLSchemaValidatorHandler.java21
4 files changed, 37 insertions, 29 deletions
diff --git a/gnu/xml/validation/xmlschema/ComplexType.java b/gnu/xml/validation/xmlschema/ComplexType.java
index 826ba32d9..f92212b50 100644
--- a/gnu/xml/validation/xmlschema/ComplexType.java
+++ b/gnu/xml/validation/xmlschema/ComplexType.java
@@ -37,10 +37,12 @@ exception statement from your version. */
package gnu.xml.validation.xmlschema;
+import gnu.xml.validation.datatype.Annotation;
+import gnu.xml.validation.datatype.Type;
+
import java.util.LinkedHashSet;
import java.util.Set;
import javax.xml.namespace.QName;
-import gnu.xml.validation.datatype.Type;
/**
* A complex type definition.
@@ -68,7 +70,9 @@ class ComplexType
final boolean isAbstract;
- Set attributeUses;
+ // Currently both AttributeUse and QName objects
+ // are added to this.
+ Set<Object> attributeUses;
AnyAttribute attributeWildcard;
@@ -84,7 +88,7 @@ class ComplexType
final int prohibitedSubstitutions;
- Set annotations;
+ Set<Annotation> annotations;
ComplexType(QName name,
boolean isAbstract,
@@ -95,7 +99,7 @@ class ComplexType
this.isAbstract = isAbstract;
this.prohibitedSubstitutions = prohibitedSubstitutions;
this.finality = finality;
- attributeUses = new LinkedHashSet();
+ attributeUses = new LinkedHashSet<Object>();
}
}
diff --git a/gnu/xml/validation/xmlschema/XMLSchema.java b/gnu/xml/validation/xmlschema/XMLSchema.java
index fb8eb88b1..1df378385 100644
--- a/gnu/xml/validation/xmlschema/XMLSchema.java
+++ b/gnu/xml/validation/xmlschema/XMLSchema.java
@@ -37,8 +37,11 @@ exception statement from your version. */
package gnu.xml.validation.xmlschema;
+import gnu.xml.validation.datatype.Type;
+
import java.util.LinkedHashMap;
import java.util.Map;
+import javax.xml.namespace.QName;
import javax.xml.validation.Schema;
import javax.xml.validation.Validator;
import javax.xml.validation.ValidatorHandler;
@@ -88,17 +91,17 @@ final class XMLSchema
/**
* The element declarations in this schema.
*/
- final Map elementDeclarations;
+ final Map<QName,ElementDeclaration> elementDeclarations;
/**
* The attribute declarations in this schema.
*/
- final Map attributeDeclarations;
+ final Map<QName,AttributeDeclaration> attributeDeclarations;
/**
* The type declarations in this schema.
*/
- final Map types;
+ final Map <QName,Type> types;
XMLSchema(String targetNamespace, String version,
int finalDefault, int blockDefault,
@@ -111,9 +114,9 @@ final class XMLSchema
this.blockDefault = blockDefault;
this.attributeFormQualified = attributeFormQualified;
this.elementFormQualified = elementFormQualified;
- elementDeclarations = new LinkedHashMap();
- attributeDeclarations = new LinkedHashMap();
- types = new LinkedHashMap();
+ elementDeclarations = new LinkedHashMap<QName,ElementDeclaration>();
+ attributeDeclarations = new LinkedHashMap<QName,AttributeDeclaration>();
+ types = new LinkedHashMap<QName,Type>();
}
public Validator newValidator()
diff --git a/gnu/xml/validation/xmlschema/XMLSchemaBuilder.java b/gnu/xml/validation/xmlschema/XMLSchemaBuilder.java
index a7bad3129..3cfcfdedb 100644
--- a/gnu/xml/validation/xmlschema/XMLSchemaBuilder.java
+++ b/gnu/xml/validation/xmlschema/XMLSchemaBuilder.java
@@ -48,6 +48,7 @@ import org.relaxng.datatype.helpers.DatatypeLibraryLoader;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import gnu.xml.validation.datatype.Annotation;
+import gnu.xml.validation.datatype.Facet;
import gnu.xml.validation.datatype.SimpleType;
import gnu.xml.validation.datatype.Type;
@@ -525,10 +526,14 @@ class XMLSchemaBuilder
throws DatatypeException
{
SimpleType type = (SimpleType) schema.types.get(typeName);
+ if (type != null)
+ return type;
if (!XMLConstants.W3C_XML_SCHEMA_NS_URI.equals(typeName.getNamespaceURI()))
return null;
String localName = typeName.getLocalPart();
- return (SimpleType) typeLibrary.createDatatype(localName);
+ type = (SimpleType) typeLibrary.createDatatype(localName);
+ schema.types.put(typeName, type);
+ return type;
}
SimpleType parseSimpleType(Node simpleType)
@@ -549,10 +554,10 @@ class XMLSchemaBuilder
typeFinal = getAttribute(schemaAttrs, "finalDefault");
}
}
- int typeFinality = parseSimpleTypeDerivationSet(typeFinal);
+ parseSimpleTypeDerivationSet(typeFinal); // TODO: Make use of typeFinality
QName typeName = asQName(getAttribute(attrs, "name"), simpleType);
int variety = 0;
- Set facets = new LinkedHashSet();
+ Set<Facet> facets = new LinkedHashSet<Facet>();
int fundamentalFacets = 0; // TODO
SimpleType baseType = null; // TODO
Annotation annotation = null;
@@ -661,8 +666,7 @@ class XMLSchemaBuilder
{
NamedNodeMap attrs = restriction.getAttributes();
String base = getAttribute(attrs, "base");
- QName baseType = asQName(base, restriction);
- SimpleType simpleType = null;
+ asQName(base, restriction); // TODO: make use of basetype
for (Node child = restriction.getFirstChild(); child != null;
child = child.getNextSibling())
{
@@ -678,7 +682,7 @@ class XMLSchemaBuilder
else if ("simpleType".equals(name))
{
type.contentType = XMLSchema.CONTENT_SIMPLE;
- simpleType = parseSimpleType(child);
+ parseSimpleType(child); // TODO: make use of SimpleType
}
else if ("minExclusive".equals(name))
{
@@ -744,7 +748,7 @@ class XMLSchemaBuilder
{
NamedNodeMap attrs = extension.getAttributes();
String base = getAttribute(attrs, "base");
- QName baseType = asQName(base, extension);
+ asQName(base, extension); // TODO: make use of basetype
for (Node child = extension.getFirstChild(); child != null;
child = child.getNextSibling())
{
diff --git a/gnu/xml/validation/xmlschema/XMLSchemaValidatorHandler.java b/gnu/xml/validation/xmlschema/XMLSchemaValidatorHandler.java
index 6c4f1f392..1991432a2 100644
--- a/gnu/xml/validation/xmlschema/XMLSchemaValidatorHandler.java
+++ b/gnu/xml/validation/xmlschema/XMLSchemaValidatorHandler.java
@@ -75,16 +75,16 @@ final class XMLSchemaValidatorHandler
ContentHandler contentHandler;
ErrorHandler errorHandler;
LSResourceResolver resourceResolver;
- final LinkedList context; // element context
- final ArrayList attributes; // attribute context;
+ final LinkedList<XMLSchemaElementTypeInfo> context; // element context
+ final ArrayList<XMLSchemaAttributeTypeInfo> attributes; // attribute context;
XMLSchemaValidatorHandler(XMLSchema schema)
{
this.schema = schema;
typeInfoProvider = new XMLSchemaTypeInfoProvider(this);
namespaceSupport = new NamespaceSupport();
- context = new LinkedList();
- attributes = new ArrayList();
+ context = new LinkedList<XMLSchemaElementTypeInfo>();
+ attributes = new ArrayList<XMLSchemaAttributeTypeInfo>();
final String ns = XMLConstants.W3C_XML_SCHEMA_NS_URI;
typeLibrary = new DatatypeLibraryLoader().createDatatypeLibrary(ns);
}
@@ -126,25 +126,23 @@ final class XMLSchemaValidatorHandler
TypeInfo getElementTypeInfo()
{
- return (XMLSchemaElementTypeInfo) context.getFirst();
+ return context.getFirst();
}
TypeInfo getAttributeTypeInfo(int index)
{
- return (XMLSchemaAttributeTypeInfo) attributes.get(index);
+ return attributes.get(index);
}
boolean isIdAttribute(int index)
{
- XMLSchemaAttributeTypeInfo typeInfo =
- (XMLSchemaAttributeTypeInfo) attributes.get(index);
+ XMLSchemaAttributeTypeInfo typeInfo = attributes.get(index);
return typeInfo.id;
}
boolean isSpecified(int index)
{
- XMLSchemaAttributeTypeInfo typeInfo =
- (XMLSchemaAttributeTypeInfo) attributes.get(index);
+ XMLSchemaAttributeTypeInfo typeInfo = attributes.get(index);
return typeInfo.specified;
}
@@ -203,8 +201,7 @@ final class XMLSchemaValidatorHandler
{
namespaceSupport.pushContext();
QName name = new QName(uri, localName);
- ElementDeclaration decl =
- (ElementDeclaration) schema.elementDeclarations.get(name);
+ ElementDeclaration decl = schema.elementDeclarations.get(name);
// Validation Rule: Element Locally Valid (Element)
String xsiType =
atts.getValue(XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI, "type");