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