private[elitzur] def getClassNameFromCounterName()

in elitzur-scio/src/main/scala/com/spotify/elitzur/scio/ElitzurMetrics.scala [53:77]


  private[elitzur] def getClassNameFromCounterName(counterName: String): String =
    counterName.split("/")(0)

  private[elitzur] def getFieldNameFromCounterName(counterName: String): String =
    counterName.split("/")(1)

  private[elitzur] def getValidationTypeFromCounterName(counterName: String): String =
    counterName.split("/")(2)

  private[elitzur] def getCounterTypeFromCounterName(counterName: String): String =
    counterName.split("/")(3)

  private[elitzur] def getValidationTypeFromCaseClass(className: Class[_], fieldName: String)
  : String =
    getValidationTypeFromCaseClass(
      className, ArraySeq.unsafeWrapArray(fieldName.split("\\."))
    ).getSimpleName

  private def getParameterizedInnerType(genericType: Type): Type = {
    // removes one layer of type nesting from reflection
    // workaround found via https://stackoverflow.com/a/11165045
    genericType
      .asInstanceOf[ParameterizedType]
      .getActualTypeArguments()(0)
  }