diff --git a/FCLCore/src/main/java/com/tungsten/fclcore/util/ReflectionHelper.java b/FCLCore/src/main/java/com/tungsten/fclcore/util/ReflectionHelper.java index 107d2181..d1822c93 100644 --- a/FCLCore/src/main/java/com/tungsten/fclcore/util/ReflectionHelper.java +++ b/FCLCore/src/main/java/com/tungsten/fclcore/util/ReflectionHelper.java @@ -29,14 +29,14 @@ public final class ReflectionHelper { * @param packageFilter returns false if we consider the given package is internal calls, not the caller * @return the caller, method name, source file, line number */ - public static StackTraceElement getCaller(String packageFilter) { + public static StackTraceElement getCaller(Predicate packageFilter) { StackTraceElement[] elements = Thread.currentThread().getStackTrace(); // element[0] is Thread.currentThread().getStackTrace() // element[1] is ReflectionHelper.getCaller(packageFilter) // so element[2] is caller of this method. StackTraceElement caller = elements[2]; for (int i = 3; i < elements.length; ++i) { - if (!StringUtils.substringBeforeLast(elements[i].getClassName(), '.').equals(packageFilter) && + if (packageFilter.test(StringUtils.substringBeforeLast(elements[i].getClassName(), '.')) && !caller.getClassName().equals(elements[i].getClassName())) return elements[i]; }