use generics instead of rawtypes
git-svn-id: https://svn.apache.org/repos/asf/xmlbeans/trunk@1881161 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/xmlbeans/impl/schema/SchemaContainer.java b/src/main/java/org/apache/xmlbeans/impl/schema/SchemaContainer.java
index e3fe3f5..7a48ead 100644
--- a/src/main/java/org/apache/xmlbeans/impl/schema/SchemaContainer.java
+++ b/src/main/java/org/apache/xmlbeans/impl/schema/SchemaContainer.java
@@ -15,34 +15,24 @@
package org.apache.xmlbeans.impl.schema;
+import org.apache.xmlbeans.*;
+
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+import java.util.stream.Collectors;
-import org.apache.xmlbeans.SchemaAnnotation;
-import org.apache.xmlbeans.SchemaAttributeGroup;
-import org.apache.xmlbeans.SchemaComponent;
-import org.apache.xmlbeans.SchemaGlobalAttribute;
-import org.apache.xmlbeans.SchemaGlobalElement;
-import org.apache.xmlbeans.SchemaIdentityConstraint;
-import org.apache.xmlbeans.SchemaModelGroup;
-import org.apache.xmlbeans.SchemaType;
-import org.apache.xmlbeans.SchemaTypeSystem;
-
-/*package*/ class SchemaContainer
-{
+/*package*/ class SchemaContainer {
// The namespace that this is the container for
// TODO(radup) In the future, I think the right approach is one container
// per file instead of per namespace, but per namespace is easier for now
- private String _namespace;
+ private final String _namespace;
- SchemaContainer(String namespace)
- {
+ SchemaContainer(String namespace) {
_namespace = namespace;
}
- String getNamespace()
- {
+ String getNamespace() {
return _namespace;
}
@@ -55,13 +45,11 @@
// at the same time providing the mechanism through which
// we can "move" SchemaTypes from one SchemaTypeSystem to another
// via incremental compilation
- synchronized SchemaTypeSystem getTypeSystem()
- {
+ synchronized SchemaTypeSystem getTypeSystem() {
return _typeSystem;
}
- synchronized void setTypeSystem(SchemaTypeSystem typeSystem)
- {
+ synchronized void setTypeSystem(SchemaTypeSystem typeSystem) {
_typeSystem = typeSystem;
}
@@ -73,138 +61,164 @@
// between typesystems.
boolean _immutable;
- synchronized void setImmutable()
- {
+ synchronized void setImmutable() {
_immutable = true;
}
- synchronized void unsetImmutable()
- {
+ synchronized void unsetImmutable() {
_immutable = false;
}
- private void check_immutable()
- {
- if (_immutable)
+ private void check_immutable() {
+ if (_immutable) {
throw new IllegalStateException("Cannot add components to immutable SchemaContainer");
+ }
}
// Data
// TODO(radup) unmodifiableList() is not really necessary, since this
// is package-level access and code in this package should do the "right thing"
// Global Elements
- private List/*<SchemaGlobalElement.Ref>*/ _globalElements = new ArrayList();
+ private final List<SchemaGlobalElement.Ref> _globalElements = new ArrayList<>();
- void addGlobalElement(SchemaGlobalElement.Ref e)
- { check_immutable(); _globalElements.add(e); }
+ void addGlobalElement(SchemaGlobalElement.Ref e) {
+ check_immutable();
+ _globalElements.add(e);
+ }
- List globalElements()
- { return getComponentList(_globalElements); }
+ List<SchemaGlobalElement> globalElements() {
+ return _globalElements.stream().map(SchemaGlobalElement.Ref::get).collect(Collectors.toList());
+ }
// Global Attributes
- private List/*<SchemaGlobalAttribute.Ref>*/ _globalAttributes = new ArrayList();
+ private final List<SchemaGlobalAttribute.Ref> _globalAttributes = new ArrayList<>();
- void addGlobalAttribute(SchemaGlobalAttribute.Ref a)
- { check_immutable(); _globalAttributes.add(a); }
+ void addGlobalAttribute(SchemaGlobalAttribute.Ref a) {
+ check_immutable();
+ _globalAttributes.add(a);
+ }
- List globalAttributes()
- { return getComponentList(_globalAttributes); }
+ List<SchemaGlobalAttribute> globalAttributes() {
+ return _globalAttributes.stream().map(SchemaGlobalAttribute.Ref::get).collect(Collectors.toList());
+ }
// Model Groups
- private List/*<SchemaModelGroup.Ref>*/ _modelGroups = new ArrayList();
+ private final List<SchemaModelGroup.Ref> _modelGroups = new ArrayList<>();
- void addModelGroup(SchemaModelGroup.Ref g)
- { check_immutable(); _modelGroups.add(g); }
+ void addModelGroup(SchemaModelGroup.Ref g) {
+ check_immutable();
+ _modelGroups.add(g);
+ }
- List modelGroups()
- { return getComponentList(_modelGroups); }
+ List<SchemaModelGroup> modelGroups() {
+ return _modelGroups.stream().map(SchemaModelGroup.Ref::get).collect(Collectors.toList());
+ }
// Redefined Model Groups
- private List/*<SchemaModelGroup.Ref>*/ _redefinedModelGroups = new ArrayList();
+ private final List<SchemaModelGroup.Ref> _redefinedModelGroups = new ArrayList<>();
- void addRedefinedModelGroup(SchemaModelGroup.Ref g)
- { check_immutable(); _redefinedModelGroups.add(g); }
+ void addRedefinedModelGroup(SchemaModelGroup.Ref g) {
+ check_immutable();
+ _redefinedModelGroups.add(g);
+ }
- List redefinedModelGroups()
- { return getComponentList(_redefinedModelGroups); }
+ List<SchemaModelGroup> redefinedModelGroups() {
+ return _redefinedModelGroups.stream().map(SchemaModelGroup.Ref::get).collect(Collectors.toList());
+ }
// Attribute Groups
- private List/*<SchemaAttributeGroup.Ref>*/ _attributeGroups = new ArrayList();
+ private final List<SchemaAttributeGroup.Ref> _attributeGroups = new ArrayList<>();
- void addAttributeGroup(SchemaAttributeGroup.Ref g)
- { check_immutable(); _attributeGroups.add(g); }
+ void addAttributeGroup(SchemaAttributeGroup.Ref g) {
+ check_immutable();
+ _attributeGroups.add(g);
+ }
- List attributeGroups()
- { return getComponentList(_attributeGroups); }
+ List<SchemaAttributeGroup> attributeGroups() {
+ return _attributeGroups.stream().map(SchemaAttributeGroup.Ref::get).collect(Collectors.toList());
+ }
// Redefined Attribute Groups
- private List/*<SchemaAttributeGroup.Ref>*/ _redefinedAttributeGroups = new ArrayList();
+ private final List<SchemaAttributeGroup.Ref> _redefinedAttributeGroups = new ArrayList<>();
- void addRedefinedAttributeGroup(SchemaAttributeGroup.Ref g)
- { check_immutable(); _redefinedAttributeGroups.add(g); }
+ void addRedefinedAttributeGroup(SchemaAttributeGroup.Ref g) {
+ check_immutable();
+ _redefinedAttributeGroups.add(g);
+ }
- List redefinedAttributeGroups()
- { return getComponentList(_redefinedAttributeGroups); }
+ List<SchemaAttributeGroup> redefinedAttributeGroups() {
+ return _redefinedAttributeGroups.stream().map(SchemaAttributeGroup.Ref::get).collect(Collectors.toList());
+ }
// Global Types
- private List/*<SchemaType.Ref>*/ _globalTypes = new ArrayList();
+ private final List<SchemaType.Ref> _globalTypes = new ArrayList<>();
- void addGlobalType(SchemaType.Ref t)
- { check_immutable(); _globalTypes.add(t); }
+ void addGlobalType(SchemaType.Ref t) {
+ check_immutable();
+ _globalTypes.add(t);
+ }
- List globalTypes()
- { return getComponentList(_globalTypes); }
+ List<SchemaType> globalTypes() {
+ return _globalTypes.stream().map(SchemaType.Ref::get).collect(Collectors.toList());
+ }
// Redefined Global Types
- private List/*<SchemaType.Ref>*/ _redefinedGlobalTypes = new ArrayList();
+ private final List<SchemaType.Ref> _redefinedGlobalTypes = new ArrayList<>();
- void addRedefinedType(SchemaType.Ref t)
- { check_immutable(); _redefinedGlobalTypes.add(t); }
+ void addRedefinedType(SchemaType.Ref t) {
+ check_immutable();
+ _redefinedGlobalTypes.add(t);
+ }
- List redefinedGlobalTypes()
- { return getComponentList(_redefinedGlobalTypes); }
+ List<SchemaType> redefinedGlobalTypes() {
+ return _redefinedGlobalTypes.stream().map(SchemaType.Ref::get).collect(Collectors.toList());
+ }
// Document Types
- private List/*<SchemaType.Ref>*/ _documentTypes = new ArrayList();
+ private final List<SchemaType.Ref> _documentTypes = new ArrayList<>();
- void addDocumentType(SchemaType.Ref t)
- { check_immutable(); _documentTypes.add(t); }
+ void addDocumentType(SchemaType.Ref t) {
+ check_immutable();
+ _documentTypes.add(t);
+ }
- List documentTypes()
- { return getComponentList(_documentTypes); }
+ List<SchemaType> documentTypes() {
+ return _documentTypes.stream().map(SchemaType.Ref::get).collect(Collectors.toList());
+ }
// Attribute Types
- private List/*<SchemaType.Ref>*/ _attributeTypes = new ArrayList();
+ private final List<SchemaType.Ref> _attributeTypes = new ArrayList<>();
- void addAttributeType(SchemaType.Ref t)
- { check_immutable(); _attributeTypes.add(t); }
+ void addAttributeType(SchemaType.Ref t) {
+ check_immutable();
+ _attributeTypes.add(t);
+ }
- List attributeTypes()
- { return getComponentList(_attributeTypes); }
+ List<SchemaType> attributeTypes() {
+ return _attributeTypes.stream().map(SchemaType.Ref::get).collect(Collectors.toList());
+ }
// Identity Constraints
- private List/*<SchemaIdentityConstraint.Ref>*/ _identityConstraints = new ArrayList();
+ private final List<SchemaIdentityConstraint.Ref> _identityConstraints = new ArrayList<>();
- void addIdentityConstraint(SchemaIdentityConstraint.Ref c)
- { check_immutable(); _identityConstraints.add(c); }
+ void addIdentityConstraint(SchemaIdentityConstraint.Ref c) {
+ check_immutable();
+ _identityConstraints.add(c);
+ }
- List identityConstraints()
- { return getComponentList(_identityConstraints); }
+ List<SchemaIdentityConstraint> identityConstraints() {
+ return _identityConstraints.stream().map(SchemaIdentityConstraint.Ref::get).collect(Collectors.toList());
+ }
// Annotations
- private List/*<SchemaAnnotation>*/ _annotations = new ArrayList();
+ private final List<SchemaAnnotation> _annotations = new ArrayList<>();
- void addAnnotation(SchemaAnnotation a)
- { check_immutable(); _annotations.add(a); }
+ void addAnnotation(SchemaAnnotation a) {
+ check_immutable();
+ _annotations.add(a);
+ }
- List annotations()
- { return Collections.unmodifiableList(_annotations); }
-
- private List getComponentList(List referenceList)
- {
- List result = new ArrayList();
- for (int i = 0; i < referenceList.size(); i ++)
- result.add(((SchemaComponent.Ref) referenceList.get(i)).getComponent());
- return Collections.unmodifiableList(result);
+ List<SchemaAnnotation> annotations() {
+ return Collections.unmodifiableList(_annotations);
}
}
diff --git a/src/main/java/org/apache/xmlbeans/impl/schema/StscChecker.java b/src/main/java/org/apache/xmlbeans/impl/schema/StscChecker.java
index caf6ceb..375f37f 100644
--- a/src/main/java/org/apache/xmlbeans/impl/schema/StscChecker.java
+++ b/src/main/java/org/apache/xmlbeans/impl/schema/StscChecker.java
@@ -15,39 +15,16 @@
package org.apache.xmlbeans.impl.schema;
-import org.apache.xmlbeans.SchemaType;
-import org.apache.xmlbeans.SchemaParticle;
-import org.apache.xmlbeans.XmlError;
-import org.apache.xmlbeans.XmlObject;
-import org.apache.xmlbeans.XmlOptions;
-import org.apache.xmlbeans.SchemaLocalElement;
-import org.apache.xmlbeans.SchemaIdentityConstraint;
-import org.apache.xmlbeans.SchemaAttributeModel;
-import org.apache.xmlbeans.SchemaLocalAttribute;
-import org.apache.xmlbeans.SchemaGlobalElement;
-import org.apache.xmlbeans.XmlID;
-import org.apache.xmlbeans.XmlAnySimpleType;
-import org.apache.xmlbeans.XmlErrorCodes;
-import org.apache.xmlbeans.XmlNOTATION;
-import org.apache.xmlbeans.XmlString;
-import org.apache.xmlbeans.impl.common.XBeanDebug;
+import org.apache.xmlbeans.*;
import org.apache.xmlbeans.impl.common.QNameHelper;
+import org.apache.xmlbeans.impl.common.XBeanDebug;
import javax.xml.namespace.QName;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
import java.math.BigInteger;
+import java.util.*;
-public class StscChecker
-{
- public static void checkAll()
- {
+public class StscChecker {
+ public static void checkAll() {
// walk the tree of types
StscState state = StscState.get();
@@ -57,138 +34,123 @@
allSeenTypes.addAll(Arrays.asList(state.redefinedGlobalTypes()));
allSeenTypes.addAll(Arrays.asList(state.globalTypes()));
- for (int i = 0; i < allSeenTypes.size(); i++)
- {
- SchemaType gType = (SchemaType)allSeenTypes.get(i);
+ for (int i = 0; i < allSeenTypes.size(); i++) {
+ SchemaType gType = (SchemaType) allSeenTypes.get(i);
if (!state.noPvr() && // option to turn off particle restriction checking
- !gType.isDocumentType()) // Don't check doc types for restriction.
+ !gType.isDocumentType()) // Don't check doc types for restriction.
{
- checkRestriction((SchemaTypeImpl)gType);
+ checkRestriction((SchemaTypeImpl) gType);
}
- checkFields((SchemaTypeImpl)gType);
+ checkFields((SchemaTypeImpl) gType);
allSeenTypes.addAll(Arrays.asList(gType.getAnonymousTypes()));
}
checkSubstitutionGroups(state.globalElements());
}
-
+
/**
* The following code checks rule #5 of http://www.w3.org/TR/xmlschema-1/#coss-ct
* as well as attribute + element default/fixed validity. <p/>
* Checks that xs:NOTATION is not used directly
*/
- public static void checkFields(SchemaTypeImpl sType)
- {
- if (sType.isSimpleType())
+ public static void checkFields(SchemaTypeImpl sType) {
+ if (sType.isSimpleType()) {
return;
-
+ }
+
XmlObject location = sType.getParseObject();
-
+
SchemaAttributeModel sAttrModel = sType.getAttributeModel();
- if (sAttrModel != null)
- {
- SchemaLocalAttribute[] sAttrs = sAttrModel.getAttributes();
+ if (sAttrModel != null) {
+ SchemaLocalAttribute[] sAttrs = sAttrModel.getAttributes();
QName idAttr = null;
- for (int i = 0; i < sAttrs.length; i++)
- {
- XmlObject attrLocation = ((SchemaLocalAttributeImpl)sAttrs[i])._parseObject;
- if (XmlID.type.isAssignableFrom(sAttrs[i].getType()))
- {
- if (idAttr == null)
- {
+ for (int i = 0; i < sAttrs.length; i++) {
+ XmlObject attrLocation = ((SchemaLocalAttributeImpl) sAttrs[i])._parseObject;
+ if (XmlID.type.isAssignableFrom(sAttrs[i].getType())) {
+ if (idAttr == null) {
idAttr = sAttrs[i].getName();
- }
- else
- {
+ } else {
StscState.get().error(XmlErrorCodes.ATTR_GROUP_PROPERTIES$TWO_IDS,
- new Object[]{ QNameHelper.pretty(idAttr), sAttrs[i].getName() },
+ new Object[]{QNameHelper.pretty(idAttr), sAttrs[i].getName()},
attrLocation != null ? attrLocation : location);
}
- if (sAttrs[i].getDefaultText() != null)
- {
+ if (sAttrs[i].getDefaultText() != null) {
StscState.get().error(XmlErrorCodes.ATTR_PROPERTIES$ID_FIXED_OR_DEFAULT,
null, attrLocation != null ? attrLocation : location);
}
- }
- else if (XmlNOTATION.type.isAssignableFrom(sAttrs[i].getType()))
- {
- if (sAttrs[i].getType().getBuiltinTypeCode() == SchemaType.BTC_NOTATION)
- {
+ } else if (XmlNOTATION.type.isAssignableFrom(sAttrs[i].getType())) {
+ if (sAttrs[i].getType().getBuiltinTypeCode() == SchemaType.BTC_NOTATION) {
StscState.get().recover(XmlErrorCodes.ATTR_NOTATION_TYPE_FORBIDDEN,
- new Object[]{ QNameHelper.pretty(sAttrs[i].getName()) },
+ new Object[]{QNameHelper.pretty(sAttrs[i].getName())},
attrLocation != null ? attrLocation : location);
- }
- else
- {
- if (sAttrs[i].getType().getSimpleVariety() == SchemaType.UNION)
- {
+ } else {
+ if (sAttrs[i].getType().getSimpleVariety() == SchemaType.UNION) {
SchemaType[] members = sAttrs[i].getType().getUnionConstituentTypes();
- for (int j = 0; j < members.length; j++)
- if (members[j].getBuiltinTypeCode() == SchemaType.BTC_NOTATION)
+ for (int j = 0; j < members.length; j++) {
+ if (members[j].getBuiltinTypeCode() == SchemaType.BTC_NOTATION) {
StscState.get().recover(XmlErrorCodes.ATTR_NOTATION_TYPE_FORBIDDEN,
- new Object[]{ QNameHelper.pretty(sAttrs[i].getName()) },
+ new Object[]{QNameHelper.pretty(sAttrs[i].getName())},
attrLocation != null ? attrLocation : location);
+ }
+ }
}
// Check that the Schema in which this is present doesn't have a targetNS
boolean hasNS;
- if (sType.isAttributeType())
+ if (sType.isAttributeType()) {
hasNS = sAttrs[i].getName().getNamespaceURI().length() > 0;
- else
- {
+ } else {
SchemaType t = sType;
- while (t.getOuterType() != null)
+ while (t.getOuterType() != null) {
t = t.getOuterType();
- if (t.isDocumentType())
+ }
+ if (t.isDocumentType()) {
hasNS = t.getDocumentElementName().getNamespaceURI().length() > 0;
- else hasNS = t.getName().getNamespaceURI().length() > 0;
- }
- if (hasNS)
- StscState.get().warning(XmlErrorCodes.ATTR_COMPATIBILITY_TARGETNS,
- new Object[] {QNameHelper.pretty(sAttrs[i].getName()) },
- attrLocation != null ? attrLocation : location);
- }
- }
- else
- {
- String valueConstraint = sAttrs[i].getDefaultText();
- if (valueConstraint != null)
- {
- try
- {
- XmlAnySimpleType val = sAttrs[i].getDefaultValue();
- if (!val.validate())
- throw new Exception();
-
- SchemaPropertyImpl sProp = (SchemaPropertyImpl)sType.getAttributeProperty(sAttrs[i].getName());
- if (sProp != null && sProp.getDefaultText() != null)
- {
- sProp.setDefaultValue(new XmlValueRef(val));
+ } else {
+ hasNS = t.getName().getNamespaceURI().length() > 0;
}
}
- catch (Exception e)
- {
+ if (hasNS) {
+ StscState.get().warning(XmlErrorCodes.ATTR_COMPATIBILITY_TARGETNS,
+ new Object[]{QNameHelper.pretty(sAttrs[i].getName())},
+ attrLocation != null ? attrLocation : location);
+ }
+ }
+ } else {
+ String valueConstraint = sAttrs[i].getDefaultText();
+ if (valueConstraint != null) {
+ try {
+ XmlAnySimpleType val = sAttrs[i].getDefaultValue();
+ if (!val.validate()) {
+ throw new Exception();
+ }
+
+ SchemaPropertyImpl sProp = (SchemaPropertyImpl) sType.getAttributeProperty(sAttrs[i].getName());
+ if (sProp != null && sProp.getDefaultText() != null) {
+ sProp.setDefaultValue(new XmlValueRef(val));
+ }
+ } catch (Exception e) {
// move to 'fixed' or 'default' attribute on the attribute definition
String constraintName = (sAttrs[i].isFixed() ? "fixed" : "default");
XmlObject constraintLocation = location;
- if (attrLocation != null)
- {
+ if (attrLocation != null) {
constraintLocation = attrLocation.selectAttribute("", constraintName);
- if (constraintLocation == null)
+ if (constraintLocation == null) {
constraintLocation = attrLocation;
+ }
}
StscState.get().error(XmlErrorCodes.ATTR_PROPERTIES$CONSTRAINT_VALID,
- new Object[] { QNameHelper.pretty(sAttrs[i].getName()),
- constraintName,
- valueConstraint,
- QNameHelper.pretty(sAttrs[i].getType().getName()) },
+ new Object[]{QNameHelper.pretty(sAttrs[i].getName()),
+ constraintName,
+ valueConstraint,
+ QNameHelper.pretty(sAttrs[i].getType().getName())},
constraintLocation);
}
}
}
}
}
-
+
checkElementDefaults(sType.getContentModel(), location, sType);
}
@@ -196,134 +158,115 @@
* Checks the default values of elements.<p/>
* Also checks that the type of elements is not one of ID, IDREF, IDREFS, ENTITY, ENTITIES or
* NOTATION as per XMLSchema part 2.
+ *
* @param model
* @param location
* @param parentType
*/
- private static void checkElementDefaults(SchemaParticle model, XmlObject location, SchemaType parentType)
- {
- if (model == null)
+ private static void checkElementDefaults(SchemaParticle model, XmlObject location, SchemaType parentType) {
+ if (model == null) {
return;
- switch (model.getParticleType())
- {
+ }
+ switch (model.getParticleType()) {
case SchemaParticle.SEQUENCE:
case SchemaParticle.CHOICE:
case SchemaParticle.ALL:
SchemaParticle[] children = model.getParticleChildren();
- for (int i = 0; i < children.length; i++)
- {
+ for (int i = 0; i < children.length; i++) {
checkElementDefaults(children[i], location, parentType);
}
break;
- case SchemaParticle.ELEMENT:
+ case SchemaParticle.ELEMENT:
String valueConstraint = model.getDefaultText();
- if (valueConstraint != null)
- {
- if (model.getType().isSimpleType() || model.getType().getContentType() == SchemaType.SIMPLE_CONTENT)
- {
- try
- {
+ if (valueConstraint != null) {
+ if (model.getType().isSimpleType() || model.getType().getContentType() == SchemaType.SIMPLE_CONTENT) {
+ try {
XmlAnySimpleType val = model.getDefaultValue();
XmlOptions opt = new XmlOptions();
opt.put(XmlOptions.VALIDATE_TEXT_ONLY);
- if (!val.validate(opt))
+ if (!val.validate(opt)) {
throw new Exception();
+ }
- SchemaPropertyImpl sProp = (SchemaPropertyImpl)parentType.getElementProperty(model.getName());
- if (sProp != null && sProp.getDefaultText() != null)
- {
+ SchemaPropertyImpl sProp = (SchemaPropertyImpl) parentType.getElementProperty(model.getName());
+ if (sProp != null && sProp.getDefaultText() != null) {
sProp.setDefaultValue(new XmlValueRef(val));
}
- }
- catch (Exception e)
- {
+ } catch (Exception e) {
// move to 'fixed' or 'default' attribute on the element definition
String constraintName = (model.isFixed() ? "fixed" : "default");
XmlObject constraintLocation = location.selectAttribute("", constraintName);
StscState.get().error(XmlErrorCodes.ELEM_PROPERTIES$CONSTRAINT_VALID,
- new Object[] { QNameHelper.pretty(model.getName()),
- constraintName,
- valueConstraint,
- QNameHelper.pretty(model.getType().getName()) },
- (constraintLocation==null ? location : constraintLocation));
+ new Object[]{QNameHelper.pretty(model.getName()),
+ constraintName,
+ valueConstraint,
+ QNameHelper.pretty(model.getType().getName())},
+ (constraintLocation == null ? location : constraintLocation));
}
- }
- else if (model.getType().getContentType() == SchemaType.MIXED_CONTENT)
- {
- if (!model.getType().getContentModel().isSkippable())
- {
+ } else if (model.getType().getContentType() == SchemaType.MIXED_CONTENT) {
+ if (!model.getType().getContentModel().isSkippable()) {
String constraintName = (model.isFixed() ? "fixed" : "default");
XmlObject constraintLocation = location.selectAttribute("", constraintName);
StscState.get().error(XmlErrorCodes.ELEM_DEFAULT_VALID$MIXED_AND_EMPTIABLE,
- new Object[] { QNameHelper.pretty(model.getName()),
- constraintName,
- valueConstraint },
- (constraintLocation==null ? location : constraintLocation));
- }
- else
- {
+ new Object[]{QNameHelper.pretty(model.getName()),
+ constraintName,
+ valueConstraint},
+ (constraintLocation == null ? location : constraintLocation));
+ } else {
// Element Default Valid (Immediate): cos-valid-default.2.2.2
// no need to validate the value; type is a xs:string
- SchemaPropertyImpl sProp = (SchemaPropertyImpl)parentType.getElementProperty(model.getName());
- if (sProp != null && sProp.getDefaultText() != null)
- {
+ SchemaPropertyImpl sProp = (SchemaPropertyImpl) parentType.getElementProperty(model.getName());
+ if (sProp != null && sProp.getDefaultText() != null) {
sProp.setDefaultValue(new XmlValueRef(XmlString.type.newValue(valueConstraint)));
}
}
- }
- else if (model.getType().getContentType() == SchemaType.ELEMENT_CONTENT)
- {
+ } else if (model.getType().getContentType() == SchemaType.ELEMENT_CONTENT) {
XmlObject constraintLocation = location.selectAttribute("", "default");
StscState.get().error(XmlErrorCodes.ELEM_DEFAULT_VALID$SIMPLE_TYPE_OR_MIXED,
- new Object[] { QNameHelper.pretty(model.getName()),
- valueConstraint,
- "element" },
- (constraintLocation==null ? location : constraintLocation));
- }
- else if (model.getType().getContentType() == SchemaType.EMPTY_CONTENT)
- {
+ new Object[]{QNameHelper.pretty(model.getName()),
+ valueConstraint,
+ "element"},
+ (constraintLocation == null ? location : constraintLocation));
+ } else if (model.getType().getContentType() == SchemaType.EMPTY_CONTENT) {
XmlObject constraintLocation = location.selectAttribute("", "default");
StscState.get().error(XmlErrorCodes.ELEM_DEFAULT_VALID$SIMPLE_TYPE_OR_MIXED,
- new Object[] { QNameHelper.pretty(model.getName()),
- valueConstraint,
- "empty" },
- (constraintLocation==null ? location : constraintLocation));
+ new Object[]{QNameHelper.pretty(model.getName()),
+ valueConstraint,
+ "empty"},
+ (constraintLocation == null ? location : constraintLocation));
}
}
// Checks if the type is one of the "attribute-specific" types
String warningType = null;
- if (BuiltinSchemaTypeSystem.ST_ID.isAssignableFrom(model.getType()))
+ if (BuiltinSchemaTypeSystem.ST_ID.isAssignableFrom(model.getType())) {
warningType = BuiltinSchemaTypeSystem.ST_ID.getName().getLocalPart();
- else if (BuiltinSchemaTypeSystem.ST_IDREF.isAssignableFrom(model.getType()))
+ } else if (BuiltinSchemaTypeSystem.ST_IDREF.isAssignableFrom(model.getType())) {
warningType = BuiltinSchemaTypeSystem.ST_IDREF.getName().getLocalPart();
- else if (BuiltinSchemaTypeSystem.ST_IDREFS.isAssignableFrom(model.getType()))
+ } else if (BuiltinSchemaTypeSystem.ST_IDREFS.isAssignableFrom(model.getType())) {
warningType = BuiltinSchemaTypeSystem.ST_IDREFS.getName().getLocalPart();
- else if (BuiltinSchemaTypeSystem.ST_ENTITY.isAssignableFrom(model.getType()))
+ } else if (BuiltinSchemaTypeSystem.ST_ENTITY.isAssignableFrom(model.getType())) {
warningType = BuiltinSchemaTypeSystem.ST_ENTITY.getName().getLocalPart();
- else if (BuiltinSchemaTypeSystem.ST_ENTITIES.isAssignableFrom(model.getType()))
+ } else if (BuiltinSchemaTypeSystem.ST_ENTITIES.isAssignableFrom(model.getType())) {
warningType = BuiltinSchemaTypeSystem.ST_ENTITIES.getName().getLocalPart();
- else if (BuiltinSchemaTypeSystem.ST_NOTATION.isAssignableFrom(model.getType()))
- {
- if (model.getType().getBuiltinTypeCode() == SchemaType.BTC_NOTATION)
- {
+ } else if (BuiltinSchemaTypeSystem.ST_NOTATION.isAssignableFrom(model.getType())) {
+ if (model.getType().getBuiltinTypeCode() == SchemaType.BTC_NOTATION) {
StscState.get().recover(XmlErrorCodes.ELEM_NOTATION_TYPE_FORBIDDEN,
- new Object[]{ QNameHelper.pretty(model.getName()) },
+ new Object[]{QNameHelper.pretty(model.getName())},
((SchemaLocalElementImpl) model)._parseObject == null ? location :
- ((SchemaLocalElementImpl) model)._parseObject.selectAttribute("", "type"));
- }
- else
- {
- if (model.getType().getSimpleVariety() == SchemaType.UNION)
- {
+ ((SchemaLocalElementImpl) model)._parseObject.selectAttribute("", "type"));
+ } else {
+ if (model.getType().getSimpleVariety() == SchemaType.UNION) {
SchemaType[] members = model.getType().getUnionConstituentTypes();
- for (int i = 0; i < members.length; i++)
- if (members[i].getBuiltinTypeCode() == SchemaType.BTC_NOTATION)
+ for (int i = 0; i < members.length; i++) {
+ if (members[i].getBuiltinTypeCode() == SchemaType.BTC_NOTATION) {
StscState.get().recover(XmlErrorCodes.ELEM_NOTATION_TYPE_FORBIDDEN,
- new Object[]{ QNameHelper.pretty(model.getName()) },
+ new Object[]{QNameHelper.pretty(model.getName())},
((SchemaLocalElementImpl) model)._parseObject == null ? location :
- ((SchemaLocalElementImpl) model)._parseObject.selectAttribute("", "type"));
+ ((SchemaLocalElementImpl) model)._parseObject.selectAttribute("", "type"));
+ }
+ }
}
warningType = BuiltinSchemaTypeSystem.ST_NOTATION.getName().getLocalPart();
}
@@ -331,195 +274,185 @@
// Check that the Schema in which this is present doesn't have a targetNS
boolean hasNS;
SchemaType t = parentType;
- while (t.getOuterType() != null)
+ while (t.getOuterType() != null) {
t = t.getOuterType();
- if (t.isDocumentType())
+ }
+ if (t.isDocumentType()) {
hasNS = t.getDocumentElementName().getNamespaceURI().length() > 0;
- else
+ } else {
hasNS = t.getName().getNamespaceURI().length() > 0;
- if (hasNS)
+ }
+ if (hasNS) {
StscState.get().warning(XmlErrorCodes.ELEM_COMPATIBILITY_TARGETNS,
- new Object[] {QNameHelper.pretty(model.getName()) },
+ new Object[]{QNameHelper.pretty(model.getName())},
((SchemaLocalElementImpl) model)._parseObject == null ? location :
- ((SchemaLocalElementImpl) model)._parseObject);
+ ((SchemaLocalElementImpl) model)._parseObject);
+ }
}
- if (warningType != null)
+ if (warningType != null) {
StscState.get().warning(XmlErrorCodes.ELEM_COMPATIBILITY_TYPE, new Object[]
- { QNameHelper.pretty(model.getName()), warningType },
+ {QNameHelper.pretty(model.getName()), warningType},
((SchemaLocalElementImpl) model)._parseObject == null ? location :
- ((SchemaLocalElementImpl) model)._parseObject.selectAttribute("", "type"));
+ ((SchemaLocalElementImpl) model)._parseObject.selectAttribute("", "type"));
+ }
break;
- default:
+ default:
// nothing to do.
break;
}
}
-
+
/**
* The following code only checks rule #5 of http://www.w3.org/TR/xmlschema-1/#derivation-ok-restriction
- * (Everything else can and should be done in StscResolver, because we can give more detailed line # info there
+ * (Everything else can and should be done in StscResolver, because we can give more detailed line # info there
*/
- public static boolean checkRestriction(SchemaTypeImpl sType)
- {
- if (sType.getDerivationType() == SchemaType.DT_RESTRICTION && !sType.isSimpleType())
- {
+ public static boolean checkRestriction(SchemaTypeImpl sType) {
+ if (sType.getDerivationType() == SchemaType.DT_RESTRICTION && !sType.isSimpleType()) {
StscState state = StscState.get();
-
+
// we don't remember very precise line number information, but it's better than nothin.
XmlObject location = sType.getParseObject();
-
+
SchemaType baseType = sType.getBaseType();
- if (baseType.isSimpleType())
- {
+ if (baseType.isSimpleType()) {
state.error(XmlErrorCodes.SCHEMA_COMPLEX_TYPE$COMPLEX_CONTENT,
- new Object[] { QNameHelper.pretty(baseType.getName()) },
+ new Object[]{QNameHelper.pretty(baseType.getName())},
location);
return false;
}
-
+
// 5 The appropriate case among the following must be true:
- switch (sType.getContentType())
- {
+ switch (sType.getContentType()) {
case SchemaType.SIMPLE_CONTENT:
// 5.1 If the {content type} of the complex type definition is a simple type definition, then one of the following must be true:
- switch (baseType.getContentType())
- {
+ switch (baseType.getContentType()) {
case SchemaType.SIMPLE_CONTENT:
// 5.1.1 The {content type} of the {base type definition} must be a simple type definition of which the {content type} is a �valid restriction� as defined in Derivation Valid (Restriction, Simple) (�3.14.6).
SchemaType cType = sType.getContentBasedOnType();
- if (cType != baseType)
- {
+ if (cType != baseType) {
// We have to check that the contentType is legally derived
// from the base simple type in the hierarchy
SchemaType bType = baseType;
- while (bType != null && !bType.isSimpleType())
+ while (bType != null && !bType.isSimpleType()) {
bType = bType.getContentBasedOnType();
- if (bType != null && !bType.isAssignableFrom(cType))
- {
+ }
+ if (bType != null && !bType.isAssignableFrom(cType)) {
state.error(XmlErrorCodes.COMPLEX_TYPE_RESTRICTION$SC_NOT_DERIVED,
null, location);
return false;
}
}
break;
-
+
case SchemaType.MIXED_CONTENT:
// 5.1.2 The {base type definition} must be mixed and have a particle which is �emptiable� as defined in Particle Emptiable (�3.9.6).
- if (baseType.getContentModel() != null && !baseType.getContentModel().isSkippable())
- {
+ if (baseType.getContentModel() != null && !baseType.getContentModel().isSkippable()) {
state.error(XmlErrorCodes.COMPLEX_TYPE_RESTRICTION$SC_AND_MIXED_EMPTIABLE,
null, location);
return false;
}
break;
-
+
default:
state.error(XmlErrorCodes.COMPLEX_TYPE_RESTRICTION$SC_AND_SIMPLE_TYPE_OR_MIXED,
null, location);
return false;
}
break;
-
+
case SchemaType.EMPTY_CONTENT:
// 5.2 If the {content type} of the complex type itself is empty , then one of the following must be true:
- switch (baseType.getContentType())
- {
+ switch (baseType.getContentType()) {
case SchemaType.EMPTY_CONTENT:
// 5.2.1 The {content type} of the {base type definition} must also be empty.
break;
case SchemaType.MIXED_CONTENT:
case SchemaType.ELEMENT_CONTENT:
// 5.2.2 The {content type} of the {base type definition} must be elementOnly or mixed and have a particle which is �emptiable� as defined in Particle Emptiable (�3.9.6).
- if (baseType.getContentModel() != null && !baseType.getContentModel().isSkippable())
- {
+ if (baseType.getContentModel() != null && !baseType.getContentModel().isSkippable()) {
state.error(XmlErrorCodes.COMPLEX_TYPE_RESTRICTION$EMPTY_AND_ELEMENT_OR_MIXED_EMPTIABLE,
null, location);
return false;
}
break;
- default:
+ default:
state.error(XmlErrorCodes.COMPLEX_TYPE_RESTRICTION$EMPTY_AND_NOT_SIMPLE,
null, location);
return false;
}
break;
-
+
case SchemaType.MIXED_CONTENT:
// 5.3 If the {content type} of the {base type definition} is mixed...
- if (baseType.getContentType() != SchemaType.MIXED_CONTENT)
- {
+ if (baseType.getContentType() != SchemaType.MIXED_CONTENT) {
state.error(XmlErrorCodes.COMPLEX_TYPE_RESTRICTION$ELEMENT_OR_MIXED_AND_MIXED,
null, location);
return false;
}
-
+
// FALLTHROUGH
case SchemaType.ELEMENT_CONTENT:
// 5.3 ... or the {content type} of the complex type definition itself is element-only,...
- if (baseType.getContentType() == SchemaType.EMPTY_CONTENT)
- {
+ if (baseType.getContentType() == SchemaType.EMPTY_CONTENT) {
state.error(XmlErrorCodes.COMPLEX_TYPE_RESTRICTION$ELEMENT_OR_MIXED_AND_EMPTY,
null, location);
return false;
}
- if (baseType.getContentType() == SchemaType.SIMPLE_CONTENT)
- {
+ if (baseType.getContentType() == SchemaType.SIMPLE_CONTENT) {
state.error(XmlErrorCodes.COMPLEX_TYPE_RESTRICTION$ELEMENT_OR_MIXED_AND_SIMPLE,
null, location);
return false;
}
-
+
// 5.3 ... then the particle of the complex type definition itself must be a �valid restriction� of the particle of the {content type} of the {base type definition}
SchemaParticle baseModel = baseType.getContentModel();
SchemaParticle derivedModel = sType.getContentModel();
-
- if ( derivedModel == null && sType.getDerivationType()==SchemaType.DT_RESTRICTION )
- {
+
+ if (derivedModel == null && sType.getDerivationType() == SchemaType.DT_RESTRICTION) {
// it is ok to have an empty contentModel if it's a restriction
// see Particle Valid (Restriction) (3.9.6) all three bulets 2.2.1
return true;
- }
- else if (baseModel == null || derivedModel == null)
- {
+ } else if (baseModel == null || derivedModel == null) {
XBeanDebug.logStackTrace("Null models that weren't caught by EMPTY_CONTENT: " + baseType + " (" + baseModel + "), " + sType + " (" + derivedModel + ")");
state.error(XmlErrorCodes.COMPLEX_TYPE_RESTRICTION$ELEMENT_OR_MIXED_AND_VALID, null, location);
return false;
}
-
+
// 5.3 ... as defined in Particle Valid (Restriction) (�3.9.6).
- List errors = new ArrayList();
+ List<XmlError> errors = new ArrayList<>();
boolean isValid = isParticleValidRestriction(baseModel, derivedModel, errors, location);
- if (!isValid)
- {
+ if (!isValid) {
// we only add the last error, because isParticleValidRestriction may add errors
// to the collection that it later changes its mind about, or it may (inadvertently)
// forget to describe an error into the collection....
- if (errors.size() == 0)
+ if (errors.size() == 0) {
state.error(XmlErrorCodes.COMPLEX_TYPE_RESTRICTION$ELEMENT_OR_MIXED_AND_VALID, null, location);
- else
+ } else {
state.getErrorListener().add(errors.get(errors.size() - 1));
- //state.getErrorListener().addAll(errors);
+ }
+ //state.getErrorListener().addAll(errors);
return false; // KHK: should return false, right?
}
}
}
return true;
}
-
+
/**
* This function takes in two schema particle types, a baseModel, and a derived model and returns true if the
* derivedModel can be egitimately be used for restriction. Errors are put into the errors collections.
- * @param baseModel - The base schema particle
+ *
+ * @param baseModel - The base schema particle
* @param derivedModel - The derived (restricted) schema particle
- * @param errors - Invalid restriction errors are put into this collection
+ * @param errors - Invalid restriction errors are put into this collection
* @param context
* @return boolean, true if valid restruction, false if invalid restriction
* @
*/
- public static boolean isParticleValidRestriction(SchemaParticle baseModel, SchemaParticle derivedModel, Collection errors, XmlObject context) {
+ public static boolean isParticleValidRestriction(SchemaParticle baseModel, SchemaParticle derivedModel, Collection<XmlError> errors, XmlObject context) {
boolean restrictionValid = false;
// 1 They are the same particle.
if (baseModel.equals(derivedModel)) {
@@ -538,7 +471,7 @@
case SchemaParticle.CHOICE:
case SchemaParticle.SEQUENCE:
errors.add(XmlError.forObject(XmlErrorCodes.PARTICLE_RESTRICTION$INVALID_RESTRICTION,
- new Object[] { printParticle(derivedModel), printParticle(baseModel) }, context));
+ new Object[]{printParticle(derivedModel), printParticle(baseModel)}, context));
restrictionValid = false;
break;
default:
@@ -574,7 +507,7 @@
case SchemaParticle.WILDCARD:
case SchemaParticle.CHOICE:
errors.add(XmlError.forObject(XmlErrorCodes.PARTICLE_RESTRICTION$INVALID_RESTRICTION,
- new Object[] { printParticle(derivedModel), printParticle(baseModel) }, context));
+ new Object[]{printParticle(derivedModel), printParticle(baseModel)}, context));
restrictionValid = false;
break;
case SchemaParticle.ALL:
@@ -595,7 +528,7 @@
case SchemaParticle.WILDCARD:
case SchemaParticle.ALL:
errors.add(XmlError.forObject(XmlErrorCodes.PARTICLE_RESTRICTION$INVALID_RESTRICTION,
- new Object[] { printParticle(derivedModel), printParticle(baseModel) }, context));
+ new Object[]{printParticle(derivedModel), printParticle(baseModel)}, context));
restrictionValid = false;
break;
case SchemaParticle.CHOICE:
@@ -617,7 +550,7 @@
case SchemaParticle.ALL:
case SchemaParticle.CHOICE:
errors.add(XmlError.forObject(XmlErrorCodes.PARTICLE_RESTRICTION$INVALID_RESTRICTION,
- new Object[] { printParticle(derivedModel), printParticle(baseModel) }, context));
+ new Object[]{printParticle(derivedModel), printParticle(baseModel)}, context));
restrictionValid = false;
break;
case SchemaParticle.SEQUENCE:
@@ -636,7 +569,7 @@
return restrictionValid;
}
- private static boolean mapAndSum(SchemaParticle baseModel, SchemaParticle derivedModel, Collection errors, XmlObject context) {
+ private static boolean mapAndSum(SchemaParticle baseModel, SchemaParticle derivedModel, Collection<XmlError> errors, XmlObject context) {
// mapAndSum is call if base: CHOICE, derived: SEQUENCE
assert baseModel.getParticleType() == SchemaParticle.CHOICE;
assert derivedModel.getParticleType() == SchemaParticle.SEQUENCE;
@@ -675,7 +608,7 @@
if (!foundMatch) {
mapAndSumValid = false;
errors.add(XmlError.forObject(XmlErrorCodes.PARTICLE_DERIVATION_MAP_AND_SUM$MAP,
- new Object[] { printParticle(derivedParticle) },
+ new Object[]{printParticle(derivedParticle)},
context));
// KHK: if we don't return false now, this error may get swallowed by an error produced below
return false;
@@ -704,26 +637,26 @@
if (derivedRangeMin.compareTo(baseModel.getMinOccurs()) < 0) {
mapAndSumValid = false;
errors.add(XmlError.forObject(XmlErrorCodes.PARTICLE_DERIVATION_MAP_AND_SUM$SUM_MIN_OCCURS_GTE_MIN_OCCURS,
- new Object[] { derivedRangeMin.toString(), baseModel.getMinOccurs().toString() },
+ new Object[]{derivedRangeMin.toString(), baseModel.getMinOccurs().toString()},
context));
} else if (baseModel.getMaxOccurs() != UNBOUNDED && (derivedRangeMax == UNBOUNDED || derivedRangeMax.compareTo(baseModel.getMaxOccurs()) > 0)) {
mapAndSumValid = false;
errors.add(XmlError.forObject(XmlErrorCodes.PARTICLE_DERIVATION_MAP_AND_SUM$SUM_MAX_OCCURS_LTE_MAX_OCCURS,
- new Object[] { derivedRangeMax == UNBOUNDED ? "unbounded" : derivedRangeMax.toString(), baseModel.getMaxOccurs().toString() },
+ new Object[]{derivedRangeMax == UNBOUNDED ? "unbounded" : derivedRangeMax.toString(), baseModel.getMaxOccurs().toString()},
context));
}
return mapAndSumValid;
}
- private static boolean recurseAsIfGroup(SchemaParticle baseModel, SchemaParticle derivedModel, Collection errors, XmlObject context) {
+ private static boolean recurseAsIfGroup(SchemaParticle baseModel, SchemaParticle derivedModel, Collection<XmlError> errors, XmlObject context) {
// recurseAsIfGroup is called if:
// base: ALL, derived: ELEMENT
// base: CHOICE, derived: ELEMENT
// base: SEQUENCE, derived: ELEMENT
assert (baseModel.getParticleType() == SchemaParticle.ALL && derivedModel.getParticleType() == SchemaParticle.ELEMENT)
- || (baseModel.getParticleType() == SchemaParticle.CHOICE && derivedModel.getParticleType() == SchemaParticle.ELEMENT)
- || (baseModel.getParticleType() == SchemaParticle.SEQUENCE && derivedModel.getParticleType() == SchemaParticle.ELEMENT);
+ || (baseModel.getParticleType() == SchemaParticle.CHOICE && derivedModel.getParticleType() == SchemaParticle.ELEMENT)
+ || (baseModel.getParticleType() == SchemaParticle.SEQUENCE && derivedModel.getParticleType() == SchemaParticle.ELEMENT);
// Schema Component Constraint: Particle Derivation OK (Elt:All/Choice/Sequence -- RecurseAsIfGroup)
// For an element declaration particle to be a �valid restriction� of a group particle
@@ -739,13 +672,13 @@
asIfPart.setParticleType(baseModel.getParticleType());
asIfPart.setMinOccurs(BigInteger.ONE);
asIfPart.setMaxOccurs(BigInteger.ONE);
- asIfPart.setParticleChildren(new SchemaParticle[] { derivedModel });
-
+ asIfPart.setParticleChildren(new SchemaParticle[]{derivedModel});
+
// the recurse
- return isParticleValidRestriction(baseModel, asIfPart, errors, context);
+ return isParticleValidRestriction(baseModel, asIfPart, errors, context);
}
- private static boolean recurseLax(SchemaParticle baseModel, SchemaParticle derivedModel, Collection errors, XmlObject context) {
+ private static boolean recurseLax(SchemaParticle baseModel, SchemaParticle derivedModel, Collection<XmlError> errors, XmlObject context) {
// recurseLax is called if base: CHOICE, derived: CHOICE
assert baseModel.getParticleType() == SchemaParticle.CHOICE && derivedModel.getParticleType() == SchemaParticle.CHOICE;
boolean recurseLaxValid = true;
@@ -773,7 +706,7 @@
SchemaParticle[] derivedParticleArray = derivedModel.getParticleChildren();
SchemaParticle[] baseParticleArray = baseModel.getParticleChildren();
int i = 0, j = 0;
- for (; i < derivedParticleArray.length && j < baseParticleArray.length;) {
+ for (; i < derivedParticleArray.length && j < baseParticleArray.length; ) {
SchemaParticle derivedParticle = derivedParticleArray[i];
SchemaParticle baseParticle = baseParticleArray[j];
// try to match the two particles by recursing
@@ -796,7 +729,7 @@
//String message = "Found derived particles that are not matched in the base content model.";
//errors.add(XmlError.forObject(formatDerivedMappingError(message, baseModel, derivedModel), context));
errors.add(XmlError.forObject(XmlErrorCodes.PARTICLE_DERIVATION_RECURSE_LAX$MAP,
- new Object[] { printParticles(baseParticleArray, i) },
+ new Object[]{printParticles(baseParticleArray, i)},
context));
}
@@ -804,7 +737,7 @@
return recurseLaxValid;
}
- private static boolean recurseUnordered(SchemaParticle baseModel, SchemaParticle derivedModel, Collection errors, XmlObject context) {
+ private static boolean recurseUnordered(SchemaParticle baseModel, SchemaParticle derivedModel, Collection<XmlError> errors, XmlObject context) {
// recurseUnorder is called when base: ALL and derived: SEQ
assert baseModel.getParticleType() == SchemaParticle.ALL && derivedModel.getParticleType() == SchemaParticle.SEQUENCE;
boolean recurseUnorderedValid = true;
@@ -834,9 +767,10 @@
HashMap baseParticleMap = new HashMap(10);
Object MAPPED = new Object();
// Initialize the hashmap
- for (int i = 0; i < baseParticles.length; i++)
+ for (int i = 0; i < baseParticles.length; i++) {
baseParticleMap.put(baseParticles[i].getName(), baseParticles[i]);
-
+ }
+
// go thru the sequence (derived model's children) and check off from base particle map
SchemaParticle[] derivedParticles = derivedModel.getParticleChildren();
for (int i = 0; i < derivedParticles.length; i++) {
@@ -844,7 +778,7 @@
if (baseParticle == null) {
recurseUnorderedValid = false;
errors.add(XmlError.forObject(XmlErrorCodes.PARTICLE_DERIVATION_RECURSE_UNORDERED$MAP,
- new Object[] { printParticle(derivedParticles[i]) }, context ));
+ new Object[]{printParticle(derivedParticles[i])}, context));
break;
} else {
// got a match
@@ -852,21 +786,20 @@
// whoa, this base particle has already been matched (see 2.1 above)
recurseUnorderedValid = false;
errors.add(XmlError.forObject(XmlErrorCodes.PARTICLE_DERIVATION_RECURSE_UNORDERED$MAP_UNIQUE,
- new Object[] { printParticle(derivedParticles[i]) }, context ));
+ new Object[]{printParticle(derivedParticles[i])}, context));
break;
} else {
- SchemaParticle matchedBaseParticle = (SchemaParticle)baseParticle;
+ SchemaParticle matchedBaseParticle = (SchemaParticle) baseParticle;
if (derivedParticles[i].getMaxOccurs() == null ||
- derivedParticles[i].getMaxOccurs().compareTo(BigInteger.ONE) > 0) {
+ derivedParticles[i].getMaxOccurs().compareTo(BigInteger.ONE) > 0) {
// no derived particles can have a max occurs greater than 1
recurseUnorderedValid = false;
errors.add(XmlError.forObject(XmlErrorCodes.PARTICLE_DERIVATION_RECURSE_UNORDERED$MAP_MAX_OCCURS_1,
- new Object[] { printParticle(derivedParticles[i]), printMaxOccurs(derivedParticles[i].getMinOccurs()) },
+ new Object[]{printParticle(derivedParticles[i]), printMaxOccurs(derivedParticles[i].getMinOccurs())},
context));
break;
}
- if (!isParticleValidRestriction(matchedBaseParticle, derivedParticles[i], errors, context))
- {
+ if (!isParticleValidRestriction(matchedBaseParticle, derivedParticles[i], errors, context)) {
// already have an error
recurseUnorderedValid = false;
break;
@@ -881,13 +814,13 @@
if (recurseUnorderedValid) {
// get all the hashmap keys and loop thru looking for NOT_MAPPED
Set baseParticleCollection = baseParticleMap.keySet();
- for (Iterator iterator = baseParticleCollection.iterator(); iterator.hasNext();) {
+ for (Iterator iterator = baseParticleCollection.iterator(); iterator.hasNext(); ) {
QName baseParticleQName = (QName) iterator.next();
- if (baseParticleMap.get(baseParticleQName) != MAPPED && !((SchemaParticle)baseParticleMap.get(baseParticleQName)).isSkippable()) {
+ if (baseParticleMap.get(baseParticleQName) != MAPPED && !((SchemaParticle) baseParticleMap.get(baseParticleQName)).isSkippable()) {
// this base particle was not mapped and is not "particle emptiable" (skippable)
recurseUnorderedValid = false;
errors.add(XmlError.forObject(XmlErrorCodes.PARTICLE_DERIVATION_RECURSE_UNORDERED$UNMAPPED_ARE_EMPTIABLE,
- new Object[] { printParticle((SchemaParticle)baseParticleMap.get(baseParticleQName)) },
+ new Object[]{printParticle((SchemaParticle) baseParticleMap.get(baseParticleQName))},
context));
}
}
@@ -896,7 +829,7 @@
return recurseUnorderedValid;
}
- private static boolean recurse(SchemaParticle baseModel, SchemaParticle derivedModel, Collection errors, XmlObject context) {
+ private static boolean recurse(SchemaParticle baseModel, SchemaParticle derivedModel, Collection<XmlError> errors, XmlObject context) {
// recurse is called when base: ALL derived: ALL or base: SEQUENCE derived: SEQUENCE
boolean recurseValid = true;
// For an all or sequence group particle to be a �valid restriction� of another group particle with the same
@@ -930,7 +863,7 @@
SchemaParticle[] derivedParticleArray = derivedModel.getParticleChildren();
SchemaParticle[] baseParticleArray = baseModel.getParticleChildren();
int i = 0, j = 0;
- for (; i < derivedParticleArray.length && j < baseParticleArray.length;) {
+ for (; i < derivedParticleArray.length && j < baseParticleArray.length; ) {
SchemaParticle derivedParticle = derivedParticleArray[i];
SchemaParticle baseParticle = baseParticleArray[j];
// try to match the two particles by recursing
@@ -948,8 +881,8 @@
// whoa, particles are not valid restrictions and base is not skippable - ERROR
recurseValid = false;
errors.add(XmlError.forObject(XmlErrorCodes.PARTICLE_DERIVATION_RECURSE$MAP_VALID,
- new Object[] { printParticle(derivedParticle), printParticle(derivedModel),
- printParticle(baseParticle), printParticle(baseModel) },
+ new Object[]{printParticle(derivedParticle), printParticle(derivedModel),
+ printParticle(baseParticle), printParticle(baseModel)},
context));
break;
}
@@ -962,7 +895,7 @@
if (i < derivedParticleArray.length) {
recurseValid = false;
errors.add(XmlError.forObject(XmlErrorCodes.PARTICLE_DERIVATION_RECURSE$MAP,
- new Object[] { printParticle(derivedModel), printParticle(baseModel), printParticles(derivedParticleArray, i) },
+ new Object[]{printParticle(derivedModel), printParticle(baseModel), printParticles(derivedParticleArray, i)},
context));
} else {
// if at end of derived particle array and not at end of base particle array then chck remaining
@@ -974,11 +907,10 @@
particles.add(baseParticleArray[k]);
}
}
- if (particles.size() > 0)
- {
+ if (particles.size() > 0) {
recurseValid = false;
errors.add(XmlError.forObject(XmlErrorCodes.PARTICLE_DERIVATION_RECURSE$UNMAPPED_ARE_EMPTIABLE,
- new Object[] { printParticle(baseModel), printParticle(derivedModel), printParticles(particles)}, context));
+ new Object[]{printParticle(baseModel), printParticle(derivedModel), printParticles(particles)}, context));
}
}
}
@@ -986,22 +918,22 @@
return recurseValid;
}
- private static boolean nsRecurseCheckCardinality(SchemaParticle baseModel, SchemaParticle derivedModel, Collection errors, XmlObject context) {
+ private static boolean nsRecurseCheckCardinality(SchemaParticle baseModel, SchemaParticle derivedModel, Collection<XmlError> errors, XmlObject context) {
// nsRecurseCheckCardinality is called when:
// base: ANY, derived: ALL
// base: ANY, derived: CHOICE
// base: ANY, derived: SEQUENCE
assert baseModel.getParticleType() == SchemaParticle.WILDCARD;
assert (derivedModel.getParticleType() == SchemaParticle.ALL)
- || (derivedModel.getParticleType() == SchemaParticle.CHOICE)
- || (derivedModel.getParticleType() == SchemaParticle.SEQUENCE);
+ || (derivedModel.getParticleType() == SchemaParticle.CHOICE)
+ || (derivedModel.getParticleType() == SchemaParticle.SEQUENCE);
boolean nsRecurseCheckCardinality = true;
// For a group particle to be a �valid restriction� of a wildcard particle all of the following must be true:
// 1 Every member of the {particles} of the group is a �valid restriction� of the wildcard as defined by Particle Valid (Restriction) (�3.9.6).
// Note: not positive what this means. Interpreting to mean that every particle of the group must adhere to wildcard derivation rules
// in a recursive manner
// Loop thru the children particles of the group and invoke the appropriate function to check for wildcard restriction validity
-
+
// BAU - an errata should be submitted on this clause of the spec, because the
// spec makes no sense, as the xstc particlesR013.xsd test exemplifies.
// what we _should_ so is an "as if" on the wildcard, allowing it minOccurs="0" maxOccurs="unbounded"
@@ -1051,7 +983,7 @@
return nsRecurseCheckCardinality;
}
- private static boolean checkGroupOccurrenceOK(SchemaParticle baseModel, SchemaParticle derivedModel, Collection errors, XmlObject context) {
+ private static boolean checkGroupOccurrenceOK(SchemaParticle baseModel, SchemaParticle derivedModel, Collection<XmlError> errors, XmlObject context) {
boolean groupOccurrenceOK = true;
BigInteger minRange = BigInteger.ZERO;
BigInteger maxRange = BigInteger.ZERO;
@@ -1072,7 +1004,7 @@
if (minRange.compareTo(baseModel.getMinOccurs()) < 0) {
groupOccurrenceOK = false;
errors.add(XmlError.forObject(XmlErrorCodes.OCCURRENCE_RANGE$MIN_GTE_MIN,
- new Object[] { printParticle(derivedModel), printParticle(baseModel) },
+ new Object[]{printParticle(derivedModel), printParticle(baseModel)},
context));
}
// Check max occurs for validity
@@ -1084,20 +1016,20 @@
if (maxRange == UNBOUNDED) {
groupOccurrenceOK = false;
errors.add(XmlError.forObject(XmlErrorCodes.OCCURRENCE_RANGE$MAX_LTE_MAX,
- new Object[] { printParticle(derivedModel), printParticle(baseModel) },
+ new Object[]{printParticle(derivedModel), printParticle(baseModel)},
context));
} else {
if (maxRange.compareTo(baseModel.getMaxOccurs()) > 0) {
groupOccurrenceOK = false;
errors.add(XmlError.forObject(XmlErrorCodes.OCCURRENCE_RANGE$MAX_LTE_MAX,
- new Object[] { printParticle(derivedModel), printParticle(baseModel) },
+ new Object[]{printParticle(derivedModel), printParticle(baseModel)},
context));
}
}
}
return groupOccurrenceOK;
}
-
+
private static BigInteger getEffectiveMaxRangeChoice(SchemaParticle derivedModel) {
BigInteger maxRange = BigInteger.ZERO;
BigInteger UNBOUNDED = null;
@@ -1270,8 +1202,9 @@
// declaration particle in the group's {particles} and the minimum part of the effective total range of each of
// the group particles in the group's {particles} (or 0 if there are no {particles}).
SchemaParticle[] particleChildren = derivedModel.getParticleChildren();
- if (particleChildren.length == 0)
+ if (particleChildren.length == 0) {
return BigInteger.ZERO;
+ }
BigInteger minRange = null;
// get the minimum of every wildcard or element
// total up the effective total range for each group
@@ -1299,8 +1232,9 @@
break;
}
}
- if (minRange == null)
+ if (minRange == null) {
minRange = BigInteger.ZERO;
+ }
// calculate the total
minRange = derivedModel.getMinOccurs().multiply(minRange);
@@ -1342,7 +1276,7 @@
return minRange;
}
- private static boolean nsSubset(SchemaParticle baseModel, SchemaParticle derivedModel, Collection errors, XmlObject context) {
+ private static boolean nsSubset(SchemaParticle baseModel, SchemaParticle derivedModel, Collection<XmlError> errors, XmlObject context) {
// nsSubset is called when base: ANY, derived: ANY
assert baseModel.getParticleType() == SchemaParticle.WILDCARD;
assert derivedModel.getParticleType() == SchemaParticle.WILDCARD;
@@ -1357,7 +1291,7 @@
} else {
nsSubset = false;
errors.add(XmlError.forObject(XmlErrorCodes.PARTICLE_DERIVATION_NS_SUBST$WILDCARD_SUBSET,
- new Object[] { printParticle(derivedModel), printParticle(baseModel) }, context));
+ new Object[]{printParticle(derivedModel), printParticle(baseModel)}, context));
}
} else {
nsSubset = false;
@@ -1369,7 +1303,7 @@
return nsSubset;
}
- private static boolean nsCompat(SchemaParticle baseModel, SchemaLocalElement derivedElement, Collection errors, XmlObject context) {
+ private static boolean nsCompat(SchemaParticle baseModel, SchemaLocalElement derivedElement, Collection<XmlError> errors, XmlObject context) {
// nsCompat is called when base: ANY, derived: ELEMENT
assert baseModel.getParticleType() == SchemaParticle.WILDCARD;
boolean nsCompat = false;
@@ -1387,7 +1321,7 @@
} else {
nsCompat = false;
errors.add(XmlError.forObject(XmlErrorCodes.PARTICLE_DERIVATION_NS_COMPAT$WILDCARD_VALID,
- new Object[] { printParticle((SchemaParticle)derivedElement), printParticle(baseModel) },
+ new Object[]{printParticle((SchemaParticle) derivedElement), printParticle(baseModel)},
context));
}
@@ -1395,90 +1329,82 @@
return nsCompat;
}
- private static boolean nameAndTypeOK(SchemaLocalElement baseElement, SchemaLocalElement derivedElement, Collection errors, XmlObject context) {
+ private static boolean nameAndTypeOK(SchemaLocalElement baseElement, SchemaLocalElement derivedElement, Collection<XmlError> errors, XmlObject context) {
// nameAndTypeOK called when base: ELEMENT and derived: ELEMENT
-
+
// Schema Component Constraint: Particle Restriction OK (Elt:Elt -- NameAndTypeOK)
// 1 The declarations' {name}s and {target namespace}s are the same.
- if (!((SchemaParticle)baseElement).canStartWithElement(derivedElement.getName())) {
+ if (!((SchemaParticle) baseElement).canStartWithElement(derivedElement.getName())) {
errors.add(XmlError.forObject(XmlErrorCodes.PARTICLE_RESTRICTION_NAME_AND_TYPE$NAME,
- new Object[] { printParticle((SchemaParticle)derivedElement), printParticle((SchemaParticle)baseElement) }, context));
+ new Object[]{printParticle((SchemaParticle) derivedElement), printParticle((SchemaParticle) baseElement)}, context));
return false;
}
-
+
// 2 Either B's {nillable} is true or R's {nillable} is false.
if (!baseElement.isNillable() && derivedElement.isNillable()) {
errors.add(XmlError.forObject(XmlErrorCodes.PARTICLE_RESTRICTION_NAME_AND_TYPE$NILLABLE,
- new Object[] { printParticle((SchemaParticle)derivedElement), printParticle((SchemaParticle)baseElement) }, context));
+ new Object[]{printParticle((SchemaParticle) derivedElement), printParticle((SchemaParticle) baseElement)}, context));
return false;
}
-
+
// 3 R's occurrence range is a valid restriction of B's occurrence range as defined by Occurrence Range OK (�3.9.6).
if (!occurrenceRangeOK((SchemaParticle) baseElement, (SchemaParticle) derivedElement, errors, context)) {
// error already produced
return false;
}
-
+
// 4 either B's declaration's {value constraint} is absent, or is not fixed,
// or R's declaration's {value constraint} is fixed with the same value.
- if (!checkFixed(baseElement, derivedElement, errors, context))
- {
+ if (!checkFixed(baseElement, derivedElement, errors, context)) {
// error already produced
return false;
}
-
+
// 5 R's declaration's {identity-constraint definitions} is a subset of B's declaration's {identity-constraint definitions}, if any.
- if (!checkIdentityConstraints(baseElement, derivedElement, errors, context))
- {
+ if (!checkIdentityConstraints(baseElement, derivedElement, errors, context)) {
// error already produced
return false;
}
-
+
// 7 R's {type definition} is validly derived given {extension, list, union} from B's {type definition} as
// defined by Type Derivation OK (Complex) (�3.4.6) or Type Derivation OK (Simple) (�3.14.6), as appropriate.
- if (!typeDerivationOK(baseElement.getType(), derivedElement.getType(), errors, context))
- {
+ if (!typeDerivationOK(baseElement.getType(), derivedElement.getType(), errors, context)) {
// error already produced
return false;
}
-
+
// 6 R's declaration's {disallowed substitutions} is a superset of B's declaration's {disallowed substitutions}.
- if (!blockSetOK(baseElement, derivedElement, errors, context))
- {
+ if (!blockSetOK(baseElement, derivedElement, errors, context)) {
// error already produced
- return false;
+ return false;
}
return true;
}
-
- private static boolean blockSetOK(SchemaLocalElement baseElement, SchemaLocalElement derivedElement, Collection errors, XmlObject context)
- {
- if (baseElement.blockRestriction() && !derivedElement.blockRestriction())
- {
+
+ private static boolean blockSetOK(SchemaLocalElement baseElement, SchemaLocalElement derivedElement, Collection<XmlError> errors, XmlObject context) {
+ if (baseElement.blockRestriction() && !derivedElement.blockRestriction()) {
errors.add(XmlError.forObject(XmlErrorCodes.PARTICLE_RESTRICTION_NAME_AND_TYPE$DISALLOWED_SUBSTITUTIONS,
- new Object[] { printParticle((SchemaParticle)derivedElement), "restriction", printParticle((SchemaParticle)baseElement) },
+ new Object[]{printParticle((SchemaParticle) derivedElement), "restriction", printParticle((SchemaParticle) baseElement)},
context));
return false;
}
- if (baseElement.blockExtension() && !derivedElement.blockExtension())
- {
+ if (baseElement.blockExtension() && !derivedElement.blockExtension()) {
errors.add(XmlError.forObject(XmlErrorCodes.PARTICLE_RESTRICTION_NAME_AND_TYPE$DISALLOWED_SUBSTITUTIONS,
- new Object[] { printParticle((SchemaParticle)derivedElement), "extension", printParticle((SchemaParticle)baseElement) },
+ new Object[]{printParticle((SchemaParticle) derivedElement), "extension", printParticle((SchemaParticle) baseElement)},
context));
return false;
}
- if (baseElement.blockSubstitution() && !derivedElement.blockSubstitution())
- {
+ if (baseElement.blockSubstitution() && !derivedElement.blockSubstitution()) {
errors.add(XmlError.forObject(XmlErrorCodes.PARTICLE_RESTRICTION_NAME_AND_TYPE$DISALLOWED_SUBSTITUTIONS,
- new Object[] { printParticle((SchemaParticle)derivedElement), "substitution", printParticle((SchemaParticle)baseElement) },
+ new Object[]{printParticle((SchemaParticle) derivedElement), "substitution", printParticle((SchemaParticle) baseElement)},
context));
return false;
}
- return true;
+ return true;
}
- private static boolean typeDerivationOK(SchemaType baseType, SchemaType derivedType, Collection errors, XmlObject context){
+ private static boolean typeDerivationOK(SchemaType baseType, SchemaType derivedType, Collection<XmlError> errors, XmlObject context) {
boolean typeDerivationOK = false;
// 1 If B and D are not the same type definition, then the {derivation method} of D must not be in the subset.
// 2 One of the following must be true:
@@ -1498,38 +1424,39 @@
// derived type is not a sub-type of base type
typeDerivationOK = false;
errors.add(XmlError.forObject(XmlErrorCodes.PARTICLE_RESTRICTION_NAME_AND_TYPE$TYPE_VALID,
- new Object[] { printType(derivedType), printType(baseType) }, context));
+ new Object[]{printType(derivedType), printType(baseType)}, context));
}
return typeDerivationOK;
}
- private static boolean checkAllDerivationsForRestriction(SchemaType baseType, SchemaType derivedType, Collection errors, XmlObject context) {
+ private static boolean checkAllDerivationsForRestriction(SchemaType baseType, SchemaType derivedType, Collection<XmlError> errors, XmlObject context) {
boolean allDerivationsAreRestrictions = true;
SchemaType currentType = derivedType;
// XMLBEANS-66: if baseType is a union, check restriction is of one of the constituant types
Set possibleTypes = null;
- if (baseType.getSimpleVariety() == SchemaType.UNION)
+ if (baseType.getSimpleVariety() == SchemaType.UNION) {
possibleTypes = new HashSet(Arrays.asList(baseType.getUnionConstituentTypes()));
+ }
// run up the types hierarchy from derived Type to base Type and make sure that all are derived by
// restriction. If any are not then this is not a valid restriction.
while (!baseType.equals(currentType) &&
- possibleTypes != null && !possibleTypes.contains(currentType)) {
+ possibleTypes != null && !possibleTypes.contains(currentType)) {
if (currentType.getDerivationType() == SchemaType.DT_RESTRICTION) {
currentType = currentType.getBaseType();
} else {
allDerivationsAreRestrictions = false;
errors.add(XmlError.forObject(XmlErrorCodes.PARTICLE_RESTRICTION_NAME_AND_TYPE$TYPE_RESTRICTED,
- new Object[] { printType(derivedType), printType(baseType), printType(currentType) }, context));
+ new Object[]{printType(derivedType), printType(baseType), printType(currentType)}, context));
break;
}
}
return allDerivationsAreRestrictions;
}
- private static boolean checkIdentityConstraints(SchemaLocalElement baseElement, SchemaLocalElement derivedElement, Collection errors, XmlObject context) {
+ private static boolean checkIdentityConstraints(SchemaLocalElement baseElement, SchemaLocalElement derivedElement, Collection<XmlError> errors, XmlObject context) {
// 5 R's declaration's {identity-constraint definitions} is a subset of B's declaration's {identity-constraint definitions}, if any.
boolean identityConstraintsOK = true;
@@ -1541,7 +1468,7 @@
if (checkForIdentityConstraintExistence(baseConstraints, derivedConstraint)) {
identityConstraintsOK = false;
errors.add(XmlError.forObject(XmlErrorCodes.PARTICLE_RESTRICTION_NAME_AND_TYPE$IDENTITY_CONSTRAINTS,
- new Object[] { printParticle((SchemaParticle)derivedElement), printParticle((SchemaParticle)baseElement) },
+ new Object[]{printParticle((SchemaParticle) derivedElement), printParticle((SchemaParticle) baseElement)},
context));
break;
}
@@ -1563,7 +1490,7 @@
}
- private static boolean checkFixed(SchemaLocalElement baseModel, SchemaLocalElement derivedModel, Collection errors, XmlObject context) {
+ private static boolean checkFixed(SchemaLocalElement baseModel, SchemaLocalElement derivedModel, Collection<XmlError> errors, XmlObject context) {
// 4 either B's declaration's {value constraint} is absent, or is not fixed,
// or R's declaration's {value constraint} is fixed with the same value.
boolean checkFixed = false;
@@ -1574,8 +1501,8 @@
} else {
// The derived element has a fixed value that is different than the base element
errors.add(XmlError.forObject(XmlErrorCodes.PARTICLE_RESTRICTION_NAME_AND_TYPE$FIXED,
- new Object[] { printParticle((SchemaParticle)derivedModel), derivedModel.getDefaultText(),
- printParticle((SchemaParticle)baseModel), baseModel.getDefaultText() },
+ new Object[]{printParticle((SchemaParticle) derivedModel), derivedModel.getDefaultText(),
+ printParticle((SchemaParticle) baseModel), baseModel.getDefaultText()},
context));
checkFixed = false;
}
@@ -1586,7 +1513,7 @@
return checkFixed;
}
- private static boolean occurrenceRangeOK(SchemaParticle baseParticle, SchemaParticle derivedParticle, Collection errors, XmlObject context) {
+ private static boolean occurrenceRangeOK(SchemaParticle baseParticle, SchemaParticle derivedParticle, Collection<XmlError> errors, XmlObject context) {
boolean occurrenceRangeOK = false;
// Note: in the following comments (from the schema spec) other is the baseModel
// 1 Its {min occurs} is greater than or equal to the other's {min occurs}.
@@ -1598,55 +1525,50 @@
} else {
// 2.2 Both {max occurs} are numbers, and the particle's is less than or equal to the other's.
if (derivedParticle.getMaxOccurs() != null && baseParticle.getMaxOccurs() != null &&
- derivedParticle.getMaxOccurs().compareTo(baseParticle.getMaxOccurs()) <= 0) {
+ derivedParticle.getMaxOccurs().compareTo(baseParticle.getMaxOccurs()) <= 0) {
occurrenceRangeOK = true;
} else {
occurrenceRangeOK = false;
errors.add(XmlError.forObject(XmlErrorCodes.OCCURRENCE_RANGE$MAX_LTE_MAX,
- new Object[] { printParticle(derivedParticle), printMaxOccurs(derivedParticle.getMaxOccurs()),
- printParticle(baseParticle), printMaxOccurs(baseParticle.getMaxOccurs()) },
+ new Object[]{printParticle(derivedParticle), printMaxOccurs(derivedParticle.getMaxOccurs()),
+ printParticle(baseParticle), printMaxOccurs(baseParticle.getMaxOccurs())},
context));
}
}
} else {
occurrenceRangeOK = false;
errors.add(XmlError.forObject(XmlErrorCodes.OCCURRENCE_RANGE$MIN_GTE_MIN,
- new Object[] { printParticle(derivedParticle), derivedParticle.getMinOccurs().toString(),
- printParticle(baseParticle), baseParticle.getMinOccurs().toString() },
+ new Object[]{printParticle(derivedParticle), derivedParticle.getMinOccurs().toString(),
+ printParticle(baseParticle), baseParticle.getMinOccurs().toString()},
context));
}
return occurrenceRangeOK;
}
- private static String printParticles(List parts)
- {
- return printParticles((SchemaParticle[])parts.toArray(new SchemaParticle[parts.size()]));
+ private static String printParticles(List parts) {
+ return printParticles((SchemaParticle[]) parts.toArray(new SchemaParticle[parts.size()]));
}
-
- private static String printParticles(SchemaParticle[] parts)
- {
+
+ private static String printParticles(SchemaParticle[] parts) {
return printParticles(parts, 0, parts.length);
}
-
- private static String printParticles(SchemaParticle[] parts, int start)
- {
+
+ private static String printParticles(SchemaParticle[] parts, int start) {
return printParticles(parts, start, parts.length);
}
-
- private static String printParticles(SchemaParticle[] parts, int start, int end)
- {
+
+ private static String printParticles(SchemaParticle[] parts, int start, int end) {
StringBuilder buf = new StringBuilder(parts.length * 30);
- for (int i = start; i < end; )
- {
+ for (int i = start; i < end; ) {
buf.append(printParticle(parts[i]));
- if (++i != end)
+ if (++i != end) {
buf.append(", ");
+ }
}
return buf.toString();
}
-
- private static String printParticle(SchemaParticle part)
- {
+
+ private static String printParticle(SchemaParticle part) {
switch (part.getParticleType()) {
case SchemaParticle.ALL:
return "<all>";
@@ -1658,71 +1580,60 @@
return "<sequence>";
case SchemaParticle.WILDCARD:
return "<any>";
- default :
+ default:
return "??";
}
}
-
- private static String printMaxOccurs(BigInteger bi)
- {
- if (bi == null)
+
+ private static String printMaxOccurs(BigInteger bi) {
+ if (bi == null) {
return "unbounded";
+ }
return bi.toString();
}
-
- private static String printType(SchemaType type)
- {
- if (type.getName() != null)
+
+ private static String printType(SchemaType type) {
+ if (type.getName() != null) {
return QNameHelper.pretty(type.getName());
+ }
return type.toString();
}
- private static void checkSubstitutionGroups(SchemaGlobalElement[] elts)
- {
+ private static void checkSubstitutionGroups(SchemaGlobalElement[] elts) {
StscState state = StscState.get();
- for (int i = 0 ; i < elts.length ; i++)
- {
+ for (int i = 0; i < elts.length; i++) {
SchemaGlobalElement elt = elts[i];
SchemaGlobalElement head = elt.substitutionGroup();
- if (head != null)
- {
+ if (head != null) {
SchemaType headType = head.getType();
SchemaType tailType = elt.getType();
- XmlObject parseTree = ((SchemaGlobalElementImpl)elt)._parseObject;
+ XmlObject parseTree = ((SchemaGlobalElementImpl) elt)._parseObject;
- if (! headType.isAssignableFrom(tailType))
- {
+ if (!headType.isAssignableFrom(tailType)) {
state.error(XmlErrorCodes.ELEM_PROPERTIES$SUBSTITUTION_VALID,
- new Object[] {QNameHelper.pretty(elt.getName()),
- QNameHelper.pretty(head.getName())},
+ new Object[]{QNameHelper.pretty(elt.getName()),
+ QNameHelper.pretty(head.getName())},
parseTree);
- }
- else if (head.finalExtension() && head.finalRestriction())
- {
+ } else if (head.finalExtension() && head.finalRestriction()) {
state.error(XmlErrorCodes.ELEM_PROPERTIES$SUBSTITUTION_FINAL,
- new Object[] {QNameHelper.pretty(elt.getName()),
- QNameHelper.pretty(head.getName()),
- "#all"}, parseTree);
- }
- else if (! headType.equals(tailType))
- {
- if (head.finalExtension() &&
- tailType.getDerivationType() == SchemaType.DT_EXTENSION)
- {
+ new Object[]{QNameHelper.pretty(elt.getName()),
+ QNameHelper.pretty(head.getName()),
+ "#all"}, parseTree);
+ } else if (!headType.equals(tailType)) {
+ if (head.finalExtension() &&
+ tailType.getDerivationType() == SchemaType.DT_EXTENSION) {
state.error(XmlErrorCodes.ELEM_PROPERTIES$SUBSTITUTION_FINAL,
- new Object[] {QNameHelper.pretty(elt.getName()),
- QNameHelper.pretty(head.getName()),
- "extension"}, parseTree);
- }
- else if (head.finalRestriction() &&
- tailType.getDerivationType() == SchemaType.DT_RESTRICTION)
- {
+ new Object[]{QNameHelper.pretty(elt.getName()),
+ QNameHelper.pretty(head.getName()),
+ "extension"}, parseTree);
+ } else if (head.finalRestriction() &&
+ tailType.getDerivationType() == SchemaType.DT_RESTRICTION) {
state.error(XmlErrorCodes.ELEM_PROPERTIES$SUBSTITUTION_FINAL,
- new Object[] {QNameHelper.pretty(elt.getName()),
- QNameHelper.pretty(head.getName()),
- "restriction"}, parseTree);
+ new Object[]{QNameHelper.pretty(elt.getName()),
+ QNameHelper.pretty(head.getName()),
+ "restriction"}, parseTree);
}
}
}
diff --git a/src/main/java/org/apache/xmlbeans/impl/schema/StscResolver.java b/src/main/java/org/apache/xmlbeans/impl/schema/StscResolver.java
index 0c96d66..5a945e5 100644
--- a/src/main/java/org/apache/xmlbeans/impl/schema/StscResolver.java
+++ b/src/main/java/org/apache/xmlbeans/impl/schema/StscResolver.java
@@ -15,37 +15,31 @@
package org.apache.xmlbeans.impl.schema;
-import org.apache.xmlbeans.SchemaType;
-import org.apache.xmlbeans.XmlObject;
-import org.apache.xmlbeans.SchemaParticle;
import org.apache.xmlbeans.QNameSet;
+import org.apache.xmlbeans.SchemaParticle;
+import org.apache.xmlbeans.SchemaType;
import org.apache.xmlbeans.XmlErrorCodes;
-
-import java.math.BigInteger;
-
-import java.util.*;
-
-import org.apache.xmlbeans.impl.xb.xsdschema.TopLevelElement;
-import org.apache.xmlbeans.impl.xb.xsdschema.TopLevelAttribute;
-import org.apache.xmlbeans.impl.xb.xsdschema.SimpleType;
import org.apache.xmlbeans.impl.xb.xsdschema.Attribute;
import org.apache.xmlbeans.impl.xb.xsdschema.Element;
import org.apache.xmlbeans.impl.xb.xsdschema.KeyrefDocument.Keyref;
-import javax.xml.namespace.QName;
+import org.apache.xmlbeans.impl.xb.xsdschema.TopLevelElement;
-public class StscResolver
-{
+import javax.xml.namespace.QName;
+import java.math.BigInteger;
+import java.util.*;
+
+public class StscResolver {
/**
* Does a topo walk of all the types to resolve them.
*/
- public static void resolveAll()
- {
+ public static void resolveAll() {
// resolve tree of types
StscState state = StscState.get();
SchemaType[] documentTypes = state.documentTypes();
- for (int i = 0 ; i < documentTypes.length ; i++)
- resolveSubstitutionGroup((SchemaTypeImpl)documentTypes[i]);
+ for (int i = 0; i < documentTypes.length; i++) {
+ resolveSubstitutionGroup((SchemaTypeImpl) documentTypes[i]);
+ }
List allSeenTypes = new ArrayList();
allSeenTypes.addAll(Arrays.asList(state.documentTypes()));
@@ -53,10 +47,9 @@
allSeenTypes.addAll(Arrays.asList(state.redefinedGlobalTypes()));
allSeenTypes.addAll(Arrays.asList(state.globalTypes()));
- for (int i = 0; i < allSeenTypes.size(); i++)
- {
- SchemaType gType = (SchemaType)allSeenTypes.get(i);
- resolveType((SchemaTypeImpl)gType);
+ for (int i = 0; i < allSeenTypes.size(); i++) {
+ SchemaType gType = (SchemaType) allSeenTypes.get(i);
+ resolveType((SchemaTypeImpl) gType);
allSeenTypes.addAll(Arrays.asList(gType.getAnonymousTypes()));
}
@@ -64,12 +57,11 @@
resolveIdentityConstraints();
}
- public static boolean resolveType(SchemaTypeImpl sImpl)
- {
- if (sImpl.isResolved())
+ public static boolean resolveType(SchemaTypeImpl sImpl) {
+ if (sImpl.isResolved()) {
return true;
- if (sImpl.isResolving())
- {
+ }
+ if (sImpl.isResolving()) {
StscState.get().error("Cyclic dependency error", XmlErrorCodes.CYCLIC_DEPENDENCY, sImpl.getParseObject());
return false; // cyclic dependency error
}
@@ -77,28 +69,28 @@
sImpl.startResolving();
- if (sImpl.isDocumentType())
+ if (sImpl.isDocumentType()) {
resolveDocumentType(sImpl);
- else if (sImpl.isAttributeType())
+ } else if (sImpl.isAttributeType()) {
resolveAttributeType(sImpl);
- else if (sImpl.isSimpleType())
+ } else if (sImpl.isSimpleType()) {
StscSimpleTypeResolver.resolveSimpleType(sImpl);
- else
+ } else {
StscComplexTypeResolver.resolveComplexType(sImpl);
+ }
sImpl.finishResolving();
// System.out.println("Finished resolving " + sImpl);
return true;
}
- public static boolean resolveSubstitutionGroup(SchemaTypeImpl sImpl)
- {
+ public static boolean resolveSubstitutionGroup(SchemaTypeImpl sImpl) {
assert sImpl.isDocumentType();
- if (sImpl.isSGResolved())
+ if (sImpl.isSGResolved()) {
return true;
- if (sImpl.isSGResolving())
- {
+ }
+ if (sImpl.isSGResolving()) {
StscState.get().error("Cyclic dependency error", XmlErrorCodes.CYCLIC_DEPENDENCY, sImpl.getParseObject());
return false; // cyclic dependency error
}
@@ -107,42 +99,44 @@
// Resolve substitution group
- TopLevelElement elt = (TopLevelElement)sImpl.getParseObject();
+ TopLevelElement elt = (TopLevelElement) sImpl.getParseObject();
SchemaTypeImpl substitutionGroup = null;
QName eltName = new QName(sImpl.getTargetNamespace(), elt.getName());
// BUG: How do I tell if the type is in this compilation unit?
- if (elt.isSetSubstitutionGroup())
- {
- substitutionGroup = StscState.get().findDocumentType(elt.getSubstitutionGroup(),
+ if (elt.isSetSubstitutionGroup()) {
+ substitutionGroup = StscState.get().findDocumentType(elt.getSubstitutionGroup(),
sImpl.getChameleonNamespace(), sImpl.getTargetNamespace());
- if (substitutionGroup == null)
+ if (substitutionGroup == null) {
StscState.get().notFoundError(elt.getSubstitutionGroup(), SchemaType.ELEMENT, elt.xgetSubstitutionGroup(), true);
- // recovery - ignore substitution group
- else if (! resolveSubstitutionGroup(substitutionGroup) )
+ }
+ // recovery - ignore substitution group
+ else if (!resolveSubstitutionGroup(substitutionGroup)) {
substitutionGroup = null;
- else
+ } else {
sImpl.setSubstitutionGroup(elt.getSubstitutionGroup());
+ }
}
// Walk up the chain of subtitution groups adding this schematype to each head's
// member list
- while (substitutionGroup != null)
- {
+ while (substitutionGroup != null) {
substitutionGroup.addSubstitutionGroupMember(eltName);
- if (substitutionGroup.getSubstitutionGroup() == null)
+ if (substitutionGroup.getSubstitutionGroup() == null) {
break;
+ }
substitutionGroup = StscState.get().findDocumentType(
substitutionGroup.getSubstitutionGroup(), substitutionGroup.getChameleonNamespace(), null/*no dependency added*/);
assert substitutionGroup != null : "Could not find document type for: " + substitutionGroup.getSubstitutionGroup();
- if (! resolveSubstitutionGroup(substitutionGroup) )
+ if (!resolveSubstitutionGroup(substitutionGroup)) {
substitutionGroup = null; // cyclic dependency - no subst group
+ }
}
@@ -151,150 +145,135 @@
}
- public static void resolveDocumentType ( SchemaTypeImpl sImpl )
- {
+ public static void resolveDocumentType(SchemaTypeImpl sImpl) {
assert sImpl.isResolving();
-
+
assert sImpl.isDocumentType();
-
+
// translate the global element associated with this document type
// and construct a content model which allows just that element
-
- List anonTypes = new ArrayList();
+
+ List<SchemaType> anonTypes = new ArrayList<>();
SchemaGlobalElementImpl element =
(SchemaGlobalElementImpl)
StscTranslator.translateElement(
(Element) sImpl.getParseObject(),
sImpl.getTargetNamespace(), sImpl.isChameleon(), null, null,
- anonTypes, sImpl );
+ anonTypes, sImpl);
SchemaLocalElementImpl contentModel = null;
- if (element != null)
- {
- StscState.get().addGlobalElement( element );
-
+ if (element != null) {
+ StscState.get().addGlobalElement(element);
+
contentModel = new SchemaLocalElementImpl();
-
- contentModel.setParticleType( SchemaParticle.ELEMENT );
- StscTranslator.copyGlobalElementToLocalElement( element, contentModel );
- contentModel.setMinOccurs( BigInteger.ONE );
- contentModel.setMaxOccurs( BigInteger.ONE );
+
+ contentModel.setParticleType(SchemaParticle.ELEMENT);
+ StscTranslator.copyGlobalElementToLocalElement(element, contentModel);
+ contentModel.setMinOccurs(BigInteger.ONE);
+ contentModel.setMaxOccurs(BigInteger.ONE);
contentModel.setTransitionNotes(QNameSet.EMPTY, true);
}
Map elementPropertyModel =
StscComplexTypeResolver.buildContentPropertyModelByQName(
- contentModel, sImpl );
+ contentModel, sImpl);
SchemaTypeImpl baseType = sImpl.getSubstitutionGroup() == null ?
BuiltinSchemaTypeSystem.ST_ANY_TYPE :
- StscState.get().findDocumentType(sImpl.getSubstitutionGroup(),
- sImpl.isChameleon() ? sImpl.getTargetNamespace() : null, null/*already added*/)
- ;
+ StscState.get().findDocumentType(sImpl.getSubstitutionGroup(),
+ sImpl.isChameleon() ? sImpl.getTargetNamespace() : null, null/*already added*/);
- sImpl.setBaseTypeRef( baseType.getRef() );
- sImpl.setBaseDepth( baseType.getBaseDepth() + 1 );
- sImpl.setDerivationType( SchemaType.DT_RESTRICTION );
- sImpl.setComplexTypeVariety( SchemaType.ELEMENT_CONTENT );
+ sImpl.setBaseTypeRef(baseType.getRef());
+ sImpl.setBaseDepth(baseType.getBaseDepth() + 1);
+ sImpl.setDerivationType(SchemaType.DT_RESTRICTION);
+ sImpl.setComplexTypeVariety(SchemaType.ELEMENT_CONTENT);
sImpl.setContentModel(
contentModel, new SchemaAttributeModelImpl(),
- elementPropertyModel, Collections.EMPTY_MAP, false );
-
+ elementPropertyModel, Collections.EMPTY_MAP, false);
+
sImpl.setWildcardSummary(
- QNameSet.EMPTY, false, QNameSet.EMPTY, false );
+ QNameSet.EMPTY, false, QNameSet.EMPTY, false);
- sImpl.setAnonymousTypeRefs( makeRefArray( anonTypes ) );
-
+ sImpl.setAnonymousTypeRefs(makeRefArray(anonTypes));
}
-
- public static void resolveAttributeType ( SchemaTypeImpl sImpl )
- {
+
+ public static void resolveAttributeType(SchemaTypeImpl sImpl) {
assert sImpl.isResolving();
assert sImpl.isAttributeType();
-
- List anonTypes = new ArrayList();
+
+ List<SchemaType> anonTypes = new ArrayList<>();
SchemaGlobalAttributeImpl attribute =
(SchemaGlobalAttributeImpl) StscTranslator.translateAttribute(
(Attribute) sImpl.getParseObject(), sImpl.getTargetNamespace(), null,
- sImpl.isChameleon(), anonTypes, sImpl, null, false );
+ sImpl.isChameleon(), anonTypes, sImpl, null, false);
SchemaAttributeModelImpl attributeModel = new SchemaAttributeModelImpl();
- if (attribute != null)
- {
- StscState.get().addGlobalAttribute( attribute );
-
+ if (attribute != null) {
+ StscState.get().addGlobalAttribute(attribute);
+
SchemaLocalAttributeImpl attributeCopy = new SchemaLocalAttributeImpl();
- StscTranslator.copyGlobalAttributeToLocalAttribute( attribute, attributeCopy );
- attributeModel.addAttribute( attributeCopy );
+ StscTranslator.copyGlobalAttributeToLocalAttribute(attribute, attributeCopy);
+ attributeModel.addAttribute(attributeCopy);
}
- sImpl.setBaseTypeRef( BuiltinSchemaTypeSystem.ST_ANY_TYPE.getRef() );
- sImpl.setBaseDepth( sImpl.getBaseDepth() + 1 );
- sImpl.setDerivationType( SchemaType.DT_RESTRICTION );
- sImpl.setComplexTypeVariety( SchemaType.EMPTY_CONTENT );
-
+ sImpl.setBaseTypeRef(BuiltinSchemaTypeSystem.ST_ANY_TYPE.getRef());
+ sImpl.setBaseDepth(sImpl.getBaseDepth() + 1);
+ sImpl.setDerivationType(SchemaType.DT_RESTRICTION);
+ sImpl.setComplexTypeVariety(SchemaType.EMPTY_CONTENT);
+
Map attributePropertyModel =
StscComplexTypeResolver.buildAttributePropertyModelByQName(
- attributeModel, sImpl );
+ attributeModel, sImpl);
sImpl.setContentModel(
- null, attributeModel, Collections.EMPTY_MAP, attributePropertyModel, false );
+ null, attributeModel, Collections.EMPTY_MAP, attributePropertyModel, false);
sImpl.setWildcardSummary(
- QNameSet.EMPTY, false, QNameSet.EMPTY, false );
-
- sImpl.setAnonymousTypeRefs( makeRefArray( anonTypes ) );
+ QNameSet.EMPTY, false, QNameSet.EMPTY, false);
+
+ sImpl.setAnonymousTypeRefs(makeRefArray(anonTypes));
}
-
- private static SchemaType.Ref[] makeRefArray(Collection typeList)
- {
- SchemaType.Ref[] result = new SchemaType.Ref[typeList.size()];
- int j = 0;
- for (Iterator i = typeList.iterator(); i.hasNext(); j++)
- result[j] = ((SchemaType)i.next()).getRef();
- return result;
+
+ private static SchemaType.Ref[] makeRefArray(Collection<SchemaType> typeList) {
+ return typeList.stream().map(SchemaType::getRef).toArray(SchemaType.Ref[]::new);
}
- public static void resolveIdentityConstraints()
- {
+ public static void resolveIdentityConstraints() {
StscState state = StscState.get();
SchemaIdentityConstraintImpl[] idcs = state.idConstraints();
- for (int i = 0 ; i < idcs.length ; i++)
- {
- if (!idcs[i].isResolved())
- {
- Keyref xsdkr = (Keyref)idcs[i].getParseObject();
+ for (SchemaIdentityConstraintImpl idc : idcs) {
+ if (!idc.isResolved()) {
+ Keyref xsdkr = (Keyref) idc.getParseObject();
QName keyName = xsdkr.getRefer();
SchemaIdentityConstraintImpl key = null;
- key = state.findIdConstraint(keyName, idcs[i].getChameleonNamespace(), idcs[i].getTargetNamespace());
- if (key == null)
- {
+ key = state.findIdConstraint(keyName, idc.getChameleonNamespace(), idc.getTargetNamespace());
+ if (key == null) {
state.notFoundError(keyName, SchemaType.IDENTITY_CONSTRAINT, xsdkr, true);
- }
- else
- {
- if (key.getConstraintCategory() == SchemaIdentityConstraintImpl.CC_KEYREF)
+ } else {
+ if (key.getConstraintCategory() == SchemaIdentityConstraintImpl.CC_KEYREF) {
state.error(XmlErrorCodes.IDENTITY_CONSTRAINT_PROPERTIES$KEYREF_REFERS_TO_KEYREF,
- null, idcs[i].getParseObject());
+ null, idc.getParseObject());
+ }
- if (key.getFields().length != idcs[i].getFields().length)
+ if (key.getFields().length != idc.getFields().length) {
state.error(XmlErrorCodes.IDENTITY_CONSTRAINT_PROPERTIES$KEY_KEYREF_FIELD_COUNT_EQ,
- null, idcs[i].getParseObject());
+ null, idc.getParseObject());
+ }
- idcs[i].setReferencedKey(key.getRef());
+ idc.setReferencedKey(key.getRef());
}
}
}
diff --git a/src/main/java/org/apache/xmlbeans/impl/schema/StscState.java b/src/main/java/org/apache/xmlbeans/impl/schema/StscState.java
index 55c292d..b3ed068 100644
--- a/src/main/java/org/apache/xmlbeans/impl/schema/StscState.java
+++ b/src/main/java/org/apache/xmlbeans/impl/schema/StscState.java
@@ -31,17 +31,44 @@
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.util.*;
+import java.util.function.Consumer;
/**
* This class represents the state of the SchemaTypeSystemCompiler as it's
* going.
*/
public class StscState {
+ private final static XmlValueRef XMLSTR_PRESERVE = buildString("preserve");
+ private final static XmlValueRef XMLSTR_REPLACE = buildString("preserve");
+ private final static XmlValueRef XMLSTR_COLLAPSE = buildString("preserve");
+
+ static final SchemaType[] EMPTY_ST_ARRAY = new SchemaType[0];
+
+ private static final XmlValueRef[] FACETS_NONE = new XmlValueRef[12];
+ private static final boolean[] FIXED_FACETS_NONE = new boolean[12];
+ private static final boolean[] FIXED_FACETS_WS = new boolean[12];
+
+ private static final XmlValueRef[] FACETS_WS_COLLAPSE = {
+ null, null, null, null, null, null, null, null, null,
+ build_wsstring(SchemaType.WS_COLLAPSE), null, null
+ };
+
+
+ final static XmlValueRef[] FACETS_UNION = FACETS_NONE;
+ final static boolean[] FIXED_FACETS_UNION = FIXED_FACETS_NONE;
+ final static XmlValueRef[] FACETS_LIST = FACETS_WS_COLLAPSE;
+ final static boolean[] FIXED_FACETS_LIST = FIXED_FACETS_WS;
+
+ private static final ThreadLocal<StscStack> tl_stscStack = new ThreadLocal<>();
+
+ private final static String PROJECT_URL_PREFIX = "project://local";
+
+
private String _givenStsName;
- private Collection _errorListener;
+ private Collection<XmlError> _errorListener;
private SchemaTypeSystemImpl _target;
private BindingConfig _config;
- private Map _compatMap;
+ private Map<QName, QName> _compatMap;
private boolean _doingDownloads;
private byte[] _digest = null;
private boolean _noDigest = false;
@@ -52,47 +79,45 @@
private SchemaTypeLoader _importingLoader;
- private Map _containers = new LinkedHashMap();
+ private final Map<String, SchemaContainer> _containers = new LinkedHashMap<>();
private SchemaDependencies _dependencies;
private Map _redefinedGlobalTypes = new LinkedHashMap();
private Map _redefinedModelGroups = new LinkedHashMap();
private Map _redefinedAttributeGroups = new LinkedHashMap();
- private Map _globalTypes = new LinkedHashMap();
- private Map _globalElements = new LinkedHashMap();
- private Map _globalAttributes = new LinkedHashMap();
- private Map _modelGroups = new LinkedHashMap();
- private Map _attributeGroups = new LinkedHashMap();
- private Map _documentTypes = new LinkedHashMap();
- private Map _attributeTypes = new LinkedHashMap();
- private Map _typesByClassname = new LinkedHashMap();
- private Map _misspelledNames = new HashMap();
- private Set _processingGroups = new LinkedHashSet();
- private Map _idConstraints = new LinkedHashMap();
- private Set _namespaces = new HashSet();
- private List _annotations = new ArrayList();
+ private final Map<QName, SchemaType> _globalTypes = new LinkedHashMap<>();
+ private final Map<QName, SchemaGlobalElement> _globalElements = new LinkedHashMap<>();
+ private final Map<QName, SchemaGlobalAttribute> _globalAttributes = new LinkedHashMap<>();
+ private final Map<QName, SchemaModelGroup> _modelGroups = new LinkedHashMap<>();
+ private final Map<QName, SchemaAttributeGroup> _attributeGroups = new LinkedHashMap<>();
+ private final Map<QName, SchemaType> _documentTypes = new LinkedHashMap<>();
+ private final Map<QName, SchemaType> _attributeTypes = new LinkedHashMap<>();
+ private final Map<String, SchemaType> _typesByClassname = new LinkedHashMap<>();
+ private final Map<String, SchemaComponent> _misspelledNames = new HashMap<>();
+ private final Set<SchemaComponent> _processingGroups = new LinkedHashSet<>();
+ private final Map<QName, SchemaIdentityConstraint> _idConstraints = new LinkedHashMap<>();
+ private final Set<String> _namespaces = new HashSet<>();
+ private final List<SchemaAnnotation> _annotations = new ArrayList<>();
private boolean _noUpa;
private boolean _noPvr;
private boolean _noAnn;
private boolean _mdefAll;
- private Set _mdefNamespaces = buildDefaultMdefNamespaces();
+ private final Set<String> _mdefNamespaces = buildDefaultMdefNamespaces();
private EntityResolver _entityResolver;
private File _schemasDir;
- private static Set buildDefaultMdefNamespaces() {
- // namespaces which are known to appear in WSDLs redundantly
- return new HashSet(
- Arrays.asList(new String[]{
- "http://www.openuri.org/2002/04/soap/conversation/",
- }));
- }
- /**
- * Used to store the new target namespace for a chameleon
- * included schema.
- */
- public static final Object CHAMELEON_INCLUDE_URI = new Object();
+ private final Map<String, String> _sourceForUri = new HashMap<>();
+ private URI _baseURI = URI.create(PROJECT_URL_PREFIX + "/");
+ private final SchemaTypeLoader _s4sloader = XmlBeans.typeLoaderForClassLoader(SchemaDocument.class.getClassLoader());
+
+
+ private static Set<String> buildDefaultMdefNamespaces() {
+ // namespaces which are known to appear in WSDLs redundantly
+ return new HashSet<>(
+ Collections.singletonList("http://www.openuri.org/2002/04/soap/conversation/"));
+ }
/**
* Only constructed via StscState.start().
@@ -103,14 +128,14 @@
/**
* Initializer for incremental compilation
*/
- public void initFromTypeSystem(SchemaTypeSystemImpl system, Set newNamespaces) {
+ public void initFromTypeSystem(SchemaTypeSystemImpl system, Set<String> newNamespaces) {
// setGivenTypeSystemName(system.getName().substring(14));
SchemaContainer[] containers = system.containers();
- for (int i = 0; i < containers.length; i++) {
- if (!newNamespaces.contains(containers[i].getNamespace())) {
+ for (SchemaContainer container : containers) {
+ if (!newNamespaces.contains(container.getNamespace())) {
// Copy data from the given container
- addContainer(containers[i]);
+ addContainer(container);
}
}
}
@@ -149,76 +174,37 @@
_redefinedGlobalTypes.put(name, redefTypes.get(i));
}
- List globalElems = container.globalElements();
- for (int i = 0; i < globalElems.size(); i++) {
- QName name = ((SchemaGlobalElement) globalElems.get(i)).getName();
- _globalElements.put(name, globalElems.get(i));
- }
+ container.globalElements().forEach(g -> _globalElements.put(g.getName(), g));
+ container.globalAttributes().forEach(g -> _globalAttributes.put(g.getName(), g));
+ container.modelGroups().forEach(g -> _modelGroups.put(g.getName(), g));
+ container.attributeGroups().forEach(g -> _attributeGroups.put(g.getName(), g));
- List globalAtts = container.globalAttributes();
- for (int i = 0; i < globalAtts.size(); i++) {
- QName name = ((SchemaGlobalAttribute) globalAtts.get(i)).getName();
- _globalAttributes.put(name, globalAtts.get(i));
- }
+ container.globalTypes().forEach(mapTypes(_globalTypes, false));
+ container.documentTypes().forEach(mapTypes(_documentTypes, true));
+ container.attributeTypes().forEach(mapTypes(_attributeTypes, true));
- List modelGroups = container.modelGroups();
- for (int i = 0; i < modelGroups.size(); i++) {
- QName name = ((SchemaModelGroup) modelGroups.get(i)).getName();
- _modelGroups.put(name, modelGroups.get(i));
- }
-
- List attrGroups = container.attributeGroups();
- for (int i = 0; i < attrGroups.size(); i++) {
- QName name = ((SchemaAttributeGroup) attrGroups.get(i)).getName();
- _attributeGroups.put(name, attrGroups.get(i));
- }
-
- List globalTypes = container.globalTypes();
- for (int i = 0; i < globalTypes.size(); i++) {
- SchemaType t = (SchemaType) globalTypes.get(i);
- QName name = t.getName();
- _globalTypes.put(name, t);
- if (t.getFullJavaName() != null) {
- addClassname(t.getFullJavaName(), t);
- }
- }
-
- List documentTypes = container.documentTypes();
- for (int i = 0; i < documentTypes.size(); i++) {
- SchemaType t = (SchemaType) documentTypes.get(i);
- QName name = t.getProperties()[0].getName();
- _documentTypes.put(name, t);
- if (t.getFullJavaName() != null) {
- addClassname(t.getFullJavaName(), t);
- }
- }
-
- List attributeTypes = container.attributeTypes();
- for (int i = 0; i < attributeTypes.size(); i++) {
- SchemaType t = (SchemaType) attributeTypes.get(i);
- QName name = t.getProperties()[0].getName();
- _attributeTypes.put(name, t);
- if (t.getFullJavaName() != null) {
- addClassname(t.getFullJavaName(), t);
- }
- }
-
- List identityConstraints = container.identityConstraints();
- for (int i = 0; i < identityConstraints.size(); i++) {
- QName name = ((SchemaIdentityConstraint) identityConstraints.get(i)).getName();
- _idConstraints.put(name, identityConstraints.get(i));
- }
+ container.identityConstraints().forEach(g -> _idConstraints.put(g.getName(), g));
_annotations.addAll(container.annotations());
_namespaces.add(container.getNamespace());
container.unsetImmutable();
}
- SchemaContainer getContainer(String namespace) {
- return (SchemaContainer) _containers.get(namespace);
+ private Consumer<SchemaType> mapTypes(Map<QName, SchemaType> map, boolean useProperties) {
+ return (t) -> {
+ QName name = useProperties ? t.getProperties()[0].getName() : t.getName();
+ map.put(name, t);
+ if (t.getFullJavaName() != null) {
+ addClassname(t.getFullJavaName(), t);
+ }
+ };
}
- Map getContainerMap() {
+ SchemaContainer getContainer(String namespace) {
+ return _containers.get(namespace);
+ }
+
+ Map<String, SchemaContainer> getContainerMap() {
return Collections.unmodifiableMap(_containers);
}
@@ -255,7 +241,7 @@
/**
* Initializer for error handling.
*/
- public void setErrorListener(Collection errorListener) {
+ public void setErrorListener(Collection<XmlError> errorListener) {
_errorListener = errorListener;
}
@@ -318,7 +304,7 @@
}
// KHK: remove this
- public static void addError(Collection errorListener, String message, int code, XmlObject location) {
+ public static void addError(Collection<XmlError> errorListener, String message, int code, XmlObject location) {
XmlError err =
XmlError.forObject(
message,
@@ -327,7 +313,7 @@
errorListener.add(err);
}
- public static void addError(Collection errorListener, String code, Object[] args, XmlObject location) {
+ public static void addError(Collection<XmlError> errorListener, String code, Object[] args, XmlObject location) {
XmlError err =
XmlError.forObject(
code,
@@ -337,7 +323,7 @@
errorListener.add(err);
}
- public static void addError(Collection errorListener, String code, Object[] args, File location) {
+ public static void addError(Collection<XmlError> errorListener, String code, Object[] args, File location) {
XmlError err =
XmlError.forLocation(
code,
@@ -347,7 +333,7 @@
errorListener.add(err);
}
- public static void addError(Collection errorListener, String code, Object[] args, URL location) {
+ public static void addError(Collection<XmlError> errorListener, String code, Object[] args, URL location) {
XmlError err =
XmlError.forLocation(
code,
@@ -358,7 +344,7 @@
}
// KHK: remove this
- public static void addWarning(Collection errorListener, String message, int code, XmlObject location) {
+ public static void addWarning(Collection<XmlError> errorListener, String message, int code, XmlObject location) {
XmlError err =
XmlError.forObject(
message,
@@ -367,7 +353,7 @@
errorListener.add(err);
}
- public static void addWarning(Collection errorListener, String code, Object[] args, XmlObject location) {
+ public static void addWarning(Collection<XmlError> errorListener, String code, Object[] args, XmlObject location) {
XmlError err =
XmlError.forObject(
code,
@@ -377,12 +363,12 @@
errorListener.add(err);
}
- public static void addInfo(Collection errorListener, String message) {
+ public static void addInfo(Collection<XmlError> errorListener, String message) {
XmlError err = XmlError.forMessage(message, XmlError.SEVERITY_INFO);
errorListener.add(err);
}
- public static void addInfo(Collection errorListener, String code, Object[] args) {
+ public static void addInfo(Collection<XmlError> errorListener, String code, Object[] args) {
XmlError err = XmlError.forMessage(code, args, XmlError.SEVERITY_INFO);
errorListener.add(err);
}
@@ -574,7 +560,7 @@
return name;
}
- QName subst = (QName) _compatMap.get(name);
+ QName subst = _compatMap.get(name);
if (subst == null) {
return name;
}
@@ -646,7 +632,7 @@
}
SchemaComponent findSpelling(QName name) {
- return (SchemaComponent) _misspelledNames.get(crunchName(name));
+ return _misspelledNames.get(crunchName(name));
}
/* NAMESPACES ======================================================*/
@@ -656,7 +642,7 @@
}
String[] getNamespaces() {
- return (String[]) _namespaces.toArray(new String[_namespaces.size()]);
+ return _namespaces.toArray(new String[0]);
}
boolean linkerDefinesNamespace(String namespace) {
@@ -722,11 +708,11 @@
if (!ignoreMdef(name)) {
if (_mdefAll) {
warning(XmlErrorCodes.SCHEMA_PROPERTIES$DUPLICATE,
- new Object[]{"global type", QNameHelper.pretty(name), ((SchemaType) _globalTypes.get(name)).getSourceName()},
+ new Object[]{"global type", QNameHelper.pretty(name), _globalTypes.get(name).getSourceName()},
type.getParseObject());
} else {
error(XmlErrorCodes.SCHEMA_PROPERTIES$DUPLICATE,
- new Object[]{"global type", QNameHelper.pretty(name), ((SchemaType) _globalTypes.get(name)).getSourceName()},
+ new Object[]{"global type", QNameHelper.pretty(name), _globalTypes.get(name).getSourceName()},
type.getParseObject());
}
}
@@ -744,11 +730,11 @@
}
SchemaType[] globalTypes() {
- return (SchemaType[]) _globalTypes.values().toArray(new SchemaType[_globalTypes.size()]);
+ return _globalTypes.values().toArray(new SchemaType[0]);
}
SchemaType[] redefinedGlobalTypes() {
- return (SchemaType[]) _redefinedGlobalTypes.values().toArray(new SchemaType[_redefinedGlobalTypes.size()]);
+ return (SchemaType[]) _redefinedGlobalTypes.values().toArray(new SchemaType[0]);
}
/* DOCUMENT TYPES =================================================*/
@@ -772,11 +758,11 @@
if (!ignoreMdef(name)) {
if (_mdefAll) {
warning(XmlErrorCodes.SCHEMA_PROPERTIES$DUPLICATE,
- new Object[]{"global element", QNameHelper.pretty(name), ((SchemaComponent) _documentTypes.get(name)).getSourceName()},
+ new Object[]{"global element", QNameHelper.pretty(name), _documentTypes.get(name).getSourceName()},
type.getParseObject());
} else {
error(XmlErrorCodes.SCHEMA_PROPERTIES$DUPLICATE,
- new Object[]{"global element", QNameHelper.pretty(name), ((SchemaComponent) _documentTypes.get(name)).getSourceName()},
+ new Object[]{"global element", QNameHelper.pretty(name), _documentTypes.get(name).getSourceName()},
type.getParseObject());
}
}
@@ -789,7 +775,7 @@
}
SchemaType[] documentTypes() {
- return (SchemaType[]) _documentTypes.values().toArray(new SchemaType[_documentTypes.size()]);
+ return _documentTypes.values().toArray(new SchemaType[0]);
}
/* ATTRIBUTE TYPES =================================================*/
@@ -813,11 +799,11 @@
if (!ignoreMdef(name)) {
if (_mdefAll) {
warning(XmlErrorCodes.SCHEMA_PROPERTIES$DUPLICATE,
- new Object[]{"global attribute", QNameHelper.pretty(name), ((SchemaComponent) _attributeTypes.get(name)).getSourceName()},
+ new Object[]{"global attribute", QNameHelper.pretty(name), _attributeTypes.get(name).getSourceName()},
type.getParseObject());
} else {
error(XmlErrorCodes.SCHEMA_PROPERTIES$DUPLICATE,
- new Object[]{"global attribute", QNameHelper.pretty(name), ((SchemaComponent) _attributeTypes.get(name)).getSourceName()},
+ new Object[]{"global attribute", QNameHelper.pretty(name), _attributeTypes.get(name).getSourceName()},
type.getParseObject());
}
}
@@ -830,7 +816,7 @@
}
SchemaType[] attributeTypes() {
- return (SchemaType[]) _attributeTypes.values().toArray(new SchemaType[_attributeTypes.size()]);
+ return _attributeTypes.values().toArray(new SchemaType[0]);
}
/* ATTRIBUTES =====================================================*/
@@ -861,7 +847,7 @@
}
SchemaGlobalAttribute[] globalAttributes() {
- return (SchemaGlobalAttribute[]) _globalAttributes.values().toArray(new SchemaGlobalAttribute[_globalAttributes.size()]);
+ return _globalAttributes.values().toArray(new SchemaGlobalAttribute[0]);
}
/* ELEMENTS =======================================================*/
@@ -892,7 +878,7 @@
}
SchemaGlobalElement[] globalElements() {
- return (SchemaGlobalElement[]) _globalElements.values().toArray(new SchemaGlobalElement[_globalElements.size()]);
+ return _globalElements.values().toArray(new SchemaGlobalElement[0]);
}
/* ATTRIBUTE GROUPS ===============================================*/
@@ -952,11 +938,11 @@
if (!ignoreMdef(name)) {
if (_mdefAll) {
warning(XmlErrorCodes.SCHEMA_PROPERTIES$DUPLICATE,
- new Object[]{"attribute group", QNameHelper.pretty(name), ((SchemaComponent) _attributeGroups.get(name)).getSourceName()},
+ new Object[]{"attribute group", QNameHelper.pretty(name), _attributeGroups.get(name).getSourceName()},
attributeGroup.getParseObject());
} else {
error(XmlErrorCodes.SCHEMA_PROPERTIES$DUPLICATE,
- new Object[]{"attribute group", QNameHelper.pretty(name), ((SchemaComponent) _attributeGroups.get(name)).getSourceName()},
+ new Object[]{"attribute group", QNameHelper.pretty(name), _attributeGroups.get(name).getSourceName()},
attributeGroup.getParseObject());
}
}
@@ -970,11 +956,11 @@
}
SchemaAttributeGroup[] attributeGroups() {
- return (SchemaAttributeGroup[]) _attributeGroups.values().toArray(new SchemaAttributeGroup[_attributeGroups.size()]);
+ return _attributeGroups.values().toArray(new SchemaAttributeGroup[0]);
}
SchemaAttributeGroup[] redefinedAttributeGroups() {
- return (SchemaAttributeGroup[]) _redefinedAttributeGroups.values().toArray(new SchemaAttributeGroup[_redefinedAttributeGroups.size()]);
+ return (SchemaAttributeGroup[]) _redefinedAttributeGroups.values().toArray(new SchemaAttributeGroup[0]);
}
/* MODEL GROUPS ===================================================*/
@@ -1034,11 +1020,11 @@
if (!ignoreMdef(name)) {
if (_mdefAll) {
warning(XmlErrorCodes.SCHEMA_PROPERTIES$DUPLICATE,
- new Object[]{"model group", QNameHelper.pretty(name), ((SchemaComponent) _modelGroups.get(name)).getSourceName()},
+ new Object[]{"model group", QNameHelper.pretty(name), _modelGroups.get(name).getSourceName()},
modelGroup.getParseObject());
} else {
error(XmlErrorCodes.SCHEMA_PROPERTIES$DUPLICATE,
- new Object[]{"model group", QNameHelper.pretty(name), ((SchemaComponent) _modelGroups.get(name)).getSourceName()},
+ new Object[]{"model group", QNameHelper.pretty(name), _modelGroups.get(name).getSourceName()},
modelGroup.getParseObject());
}
}
@@ -1052,11 +1038,11 @@
}
SchemaModelGroup[] modelGroups() {
- return (SchemaModelGroup[]) _modelGroups.values().toArray(new SchemaModelGroup[_modelGroups.size()]);
+ return _modelGroups.values().toArray(new SchemaModelGroup[0]);
}
SchemaModelGroup[] redefinedModelGroups() {
- return (SchemaModelGroup[]) _redefinedModelGroups.values().toArray(new SchemaModelGroup[_redefinedModelGroups.size()]);
+ return (SchemaModelGroup[]) _redefinedModelGroups.values().toArray(new SchemaModelGroup[0]);
}
/* IDENTITY CONSTRAINTS ===========================================*/
@@ -1077,7 +1063,7 @@
if (_idConstraints.containsKey(name)) {
if (!ignoreMdef(name)) {
warning(XmlErrorCodes.SCHEMA_PROPERTIES$DUPLICATE,
- new Object[]{"identity constraint", QNameHelper.pretty(name), ((SchemaComponent) _idConstraints.get(name)).getSourceName()},
+ new Object[]{"identity constraint", QNameHelper.pretty(name), _idConstraints.get(name).getSourceName()},
idc.getParseObject());
}
} else {
@@ -1089,7 +1075,7 @@
}
SchemaIdentityConstraintImpl[] idConstraints() {
- return (SchemaIdentityConstraintImpl[]) _idConstraints.values().toArray(new SchemaIdentityConstraintImpl[_idConstraints.size()]);
+ return _idConstraints.values().toArray(new SchemaIdentityConstraintImpl[0]);
}
/* ANNOTATIONS ===========================================*/
@@ -1103,32 +1089,32 @@
}
}
- List annotations() {
+ List<SchemaAnnotation> annotations() {
return _annotations;
}
/* RECURSION AVOIDANCE ============================================*/
- boolean isProcessing(Object obj) {
+ boolean isProcessing(SchemaComponent obj) {
return _processingGroups.contains(obj);
}
- void startProcessing(Object obj) {
+ void startProcessing(SchemaComponent obj) {
assert (!_processingGroups.contains(obj));
_processingGroups.add(obj);
}
- void finishProcessing(Object obj) {
+ void finishProcessing(SchemaComponent obj) {
assert (_processingGroups.contains(obj));
_processingGroups.remove(obj);
}
- Object[] getCurrentProcessing() {
- return _processingGroups.toArray();
+ SchemaComponent[] getCurrentProcessing() {
+ return _processingGroups.toArray(new SchemaComponent[0]);
}
/* JAVAIZATION ====================================================*/
- Map typesByClassname() {
+ Map<String, SchemaType> typesByClassname() {
return Collections.unmodifiableMap(_typesByClassname);
}
@@ -1143,7 +1129,7 @@
*/
private static final class StscStack {
StscState current;
- ArrayList stack = new ArrayList();
+ List<StscState> stack = new ArrayList<>();
final StscState push() {
stack.add(current);
@@ -1152,19 +1138,17 @@
}
final void pop() {
- current = (StscState) stack.get(stack.size() - 1);
+ current = stack.get(stack.size() - 1);
stack.remove(stack.size() - 1);
}
}
- private static ThreadLocal tl_stscStack = new ThreadLocal();
-
public static void clearThreadLocals() {
tl_stscStack.remove();
}
public static StscState start() {
- StscStack stscStack = (StscStack) tl_stscStack.get();
+ StscStack stscStack = tl_stscStack.get();
if (stscStack == null) {
stscStack = new StscStack();
@@ -1174,11 +1158,11 @@
}
public static StscState get() {
- return ((StscStack) tl_stscStack.get()).current;
+ return tl_stscStack.get().current;
}
public static void end() {
- StscStack stscStack = (StscStack) tl_stscStack.get();
+ StscStack stscStack = tl_stscStack.get();
stscStack.pop();
if (stscStack.stack.size() == 0) {
tl_stscStack.set(null); // this is required to release all the references in this classloader
@@ -1186,33 +1170,6 @@
// which will enable class unloading and avoid OOM in PermGen
}
- private final static XmlValueRef XMLSTR_PRESERVE = buildString("preserve");
- private final static XmlValueRef XMLSTR_REPLACE = buildString("preserve");
- private final static XmlValueRef XMLSTR_COLLAPSE = buildString("preserve");
-
- static final SchemaType[] EMPTY_ST_ARRAY = new SchemaType[0];
- static final SchemaType.Ref[] EMPTY_STREF_ARRAY = new SchemaType.Ref[0];
-
- private final static XmlValueRef[] FACETS_NONE = new XmlValueRef[]
- {null, null, null, null, null, null, null, null, null,
- null, null, null};
-
- private final static boolean[] FIXED_FACETS_NONE = new boolean[]
- {false, false, false, false, false, false, false, false, false,
- false, false, false};
-
- private final static XmlValueRef[] FACETS_WS_COLLAPSE = new XmlValueRef[]
- {null, null, null, null, null, null, null, null, null,
- build_wsstring(SchemaType.WS_COLLAPSE), null, null};
-
- private final static boolean[] FIXED_FACETS_WS = new boolean[]
- {false, false, false, false, false, false, false, false, false,
- true, false, false};
-
- final static XmlValueRef[] FACETS_UNION = FACETS_NONE;
- final static boolean[] FIXED_FACETS_UNION = FIXED_FACETS_NONE;
- final static XmlValueRef[] FACETS_LIST = FACETS_WS_COLLAPSE;
- final static boolean[] FIXED_FACETS_LIST = FIXED_FACETS_WS;
static XmlValueRef build_wsstring(int wsr) {
switch (wsr) {
@@ -1285,15 +1242,15 @@
switch (foundComponent.getComponentType()) {
case SchemaComponent.TYPE:
found = "type";
- sourceName = ((SchemaType) foundComponent).getSourceName();
+ sourceName = foundComponent.getSourceName();
break;
case SchemaComponent.ELEMENT:
found = "element";
- sourceName = ((SchemaGlobalElement) foundComponent).getSourceName();
+ sourceName = foundComponent.getSourceName();
break;
case SchemaComponent.ATTRIBUTE:
found = "attribute";
- sourceName = ((SchemaGlobalAttribute) foundComponent).getSourceName();
+ sourceName = foundComponent.getSourceName();
break;
case SchemaComponent.ATTRIBUTE_GROUP:
found = "attribute group";
@@ -1341,7 +1298,7 @@
* Returns null if none.
*/
public String sourceNameForUri(String uri) {
- return (String) _sourceForUri.get(uri);
+ return _sourceForUri.get(uri);
}
/**
@@ -1349,7 +1306,7 @@
* been read to "sourceName" local names that have been used
* to tag the types.
*/
- public Map sourceCopyMap() {
+ public Map<String, String> sourceCopyMap() {
return Collections.unmodifiableMap(_sourceForUri);
}
@@ -1360,8 +1317,6 @@
_baseURI = uri;
}
- private final static String PROJECT_URL_PREFIX = "project://local";
-
public String relativize(String uri) {
return relativize(uri, false);
}
@@ -1411,7 +1366,7 @@
return dir + "/" + uri.substring(lastslash + 1);
}
- String query = QNameHelper.hexsafe(question == -1 ? "" : uri.substring(question));
+ String query = QNameHelper.hexsafe(uri.substring(question));
// if encoded query part is longer than 64 characters, just drop it
if (query.startsWith(QNameHelper.URI_SHA1_PREFIX)) {
@@ -1440,7 +1395,7 @@
/**
* Returns the error listener being filled in during this compilation
*/
- public Collection getErrorListener() {
+ public Collection<XmlError> getErrorListener() {
return _errorListener;
}
@@ -1451,10 +1406,6 @@
return _s4sloader;
}
- Map _sourceForUri = new HashMap();
- URI _baseURI = URI.create(PROJECT_URL_PREFIX + "/");
- SchemaTypeLoader _s4sloader = XmlBeans.typeLoaderForClassLoader(SchemaDocument.class.getClassLoader());
-
public File getSchemasDir() {
return _schemasDir;
}