private def validateType()

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
          }
        }
      }
    }
  }