in google-cloud-spanner-hibernate-tools/src/main/java/com/google/cloud/spanner/hibernate/TransactionTagInterceptor.java [99:118]
String getTagFromStackFrame(String prefix, StackFrame stackFrame) {
Class<?> declaringClass = stackFrame.getDeclaringClass();
if (declaringClass.getName().contains("$$")) {
declaringClass = declaringClass.getSuperclass();
}
try {
Method method =
declaringClass.getDeclaredMethod(
stackFrame.getMethodName(), stackFrame.getMethodType().parameterArray());
if (method.isAnnotationPresent(TransactionTag.class)) {
TransactionTag transactionTag = method.getAnnotation(TransactionTag.class);
return transactionTag.value();
} else if (autoTagTransactions) {
return getAutoTagFromStackFrame(prefix, stackFrame);
}
} catch (NoSuchMethodException ignore) {
// This should not happen
}
return null;
}