static String getAutoTagFromStackFrame()

in google-cloud-spanner-hibernate-tools/src/main/java/com/google/cloud/spanner/hibernate/TransactionTagInterceptor.java [120:142]


  static String getAutoTagFromStackFrame(String prefix, StackFrame stackFrame) {
    // Check if it is a CGLIB generated class.
    Class<?> clazz = stackFrame.getDeclaringClass();
    if (stackFrame.getClassName().contains("$$")) {
      clazz = clazz.getSuperclass();
    }
    // TODO: Fix tag regex allowed values in Connection API.
    String className = clazz.getName().replace(prefix, "").replace('.', '_');
    if (className.startsWith("_")) {
      className = className.substring(1);
    }
    String tag = className + "_" + stackFrame.getMethodName();
    if (stackFrame.getLineNumber() > 0) {
      String lineNumber = "_L" + stackFrame.getLineNumber();
      if (tag.length() + lineNumber.length() <= 50) {
        tag = tag + lineNumber;
      }
    }
    if (tag.length() > 50) {
      tag = tag.substring(tag.length() - 50);
    }
    return tag;
  }