in daffodil-runtime1/src/main/scala/org/apache/daffodil/runtime1/dpath/DPath.scala [387:429]
private def validateType(v: Maybe[T], state: ParseOrUnparseState): Unit = {
if (v.isDefined) {
val value = v.get
if (!value.isInstanceOf[DIElement]) {
targetType match {
case NodeInfo.NonEmptyString => {
Assert.invariant(value.isInstanceOf[String])
if (value.asInstanceOf[String].length == 0) {
val e = new RuntimeSchemaDefinitionError(
ci.schemaFileLocation,
"Non-empty string required."
)
doSDE(e, state)
}
}
case _: NodeInfo.String.Kind => Assert.invariant(value.isInstanceOf[String])
case NodeInfo.DateTime => Assert.invariant(value.isInstanceOf[DFDLCalendar])
case NodeInfo.Date => Assert.invariant(value.isInstanceOf[DFDLCalendar])
case NodeInfo.Time => Assert.invariant(value.isInstanceOf[DFDLCalendar])
case NodeInfo.Boolean => Assert.invariant(value.isInstanceOf[Boolean])
case NodeInfo.Byte => Assert.invariant(value.isInstanceOf[JByte])
case NodeInfo.UnsignedByte => Assert.invariant(value.isInstanceOf[JShort])
case NodeInfo.Short => Assert.invariant(value.isInstanceOf[JShort])
case NodeInfo.UnsignedShort => Assert.invariant(value.isInstanceOf[JInt])
case NodeInfo.Int => Assert.invariant(value.isInstanceOf[JInt])
case NodeInfo.UnsignedInt => Assert.invariant(value.isInstanceOf[JLong])
case NodeInfo.Long => Assert.invariant(value.isInstanceOf[JLong])
case NodeInfo.UnsignedLong => Assert.invariant(value.isInstanceOf[JBigInt])
case NodeInfo.Integer => Assert.invariant(value.isInstanceOf[JBigInt])
case NodeInfo.NonNegativeInteger => Assert.invariant(value.isInstanceOf[JBigInt])
case NodeInfo.Float => Assert.invariant(value.isInstanceOf[JFloat])
case NodeInfo.Double => Assert.invariant(value.isInstanceOf[JDouble])
case NodeInfo.Decimal => Assert.invariant(value.isInstanceOf[JBigDecimal])
case NodeInfo.HexBinary => Assert.invariant(value.isInstanceOf[Array[Byte]])
case NodeInfo.AnyURI => Assert.invariant(value.isInstanceOf[URI])
case _ => {
// All other NodeInfo.* types are non-primitives which can have
// many different kinds of types, not worth checking
}
}
}
}
}