Skip to content

Commit

Permalink
Allow selector to be omitted for an identity constraint (where it has…
Browse files Browse the repository at this point in the history
… a ref attribute).
  • Loading branch information
pdvrieze committed Dec 17, 2023
1 parent c29bfca commit 497b922
Show file tree
Hide file tree
Showing 6 changed files with 7 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ import nl.adaptivity.xmlutil.serialization.XmlBefore
@Serializable
sealed class XSIdentityConstraint : XSAnnotatedBase {
@XmlBefore("fields")
val selector: XSSelector
val selector: XSSelector?

/**
* At least 1 if selector is present
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ class ResolvedDirectKey(

override val mdlQName: QName = checkNotNull(rawPart.name).toQname(schema.targetNamespace)

override val selector: XSSelector = rawPart.selector
override val selector: XSSelector = checkNotNull(rawPart.selector)

override val fields: List<XSField> = rawPart.fields

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ class ResolvedDirectKeyRef(rawPart: XSKeyRef, schema: ResolvedSchemaLike, owner:

override val mdlQName: QName = requireNotNull(rawPart.name).toQname(schema.targetNamespace)

override val selector: XSSelector = rawPart.selector
override val selector: XSSelector = requireNotNull(rawPart.selector)

override val fields: List<XSField> = rawPart.fields

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,8 @@ sealed class ResolvedDirectReferenceable(
for (field in rawPart.fields) {
require(isXsdSubset(field.xpath.expr, true)) { "${field.xpath.xmlString} is not in the field subset" }
}
require(isXsdSubset(rawPart.selector.xpath, false)) { "${rawPart.selector.xpath.xmlString} is not in the selector subset"}
val selector = requireNotNull(rawPart.selector)
require(isXsdSubset(selector.xpath, false)) { "${selector.xpath.xmlString} is not in the selector subset"}
}

private fun isXsdSubset(xPathExpression: XPathExpression, isTrailingAttrAllowed: Boolean): Boolean {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ class ResolvedDirectUnique(

override val mdlQName: QName = requireNotNull(rawPart.name).toQname(schema.targetNamespace)

override val selector: XSSelector = rawPart.selector
override val selector: XSSelector = requireNotNull(rawPart.selector)

override val fields: List<XSField> = rawPart.fields
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ sealed class ResolvedNamedIdentityConstraint(
owner: ResolvedElement
) : ResolvedIdentityConstraintBase(rawPart, schema, owner), ResolvedIdentityConstraint {

final override val mdlSelector: XPathExpression = rawPart.selector.xpath
final override val mdlSelector: XPathExpression = requireNotNull(rawPart.selector).xpath

final override val mdlFields: List<XPathExpression> =
rawPart.fields.map { it.xpath }
Expand Down

0 comments on commit 497b922

Please sign in to comment.