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