diff --git a/org.adempiere.base/src/org/compiere/util/Trx.java b/org.adempiere.base/src/org/compiere/util/Trx.java index 29f9a2851d..060cbe24ab 100644 --- a/org.adempiere.base/src/org/compiere/util/Trx.java +++ b/org.adempiere.base/src/org/compiere/util/Trx.java @@ -26,6 +26,7 @@ import java.util.Collection; import java.util.Date; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.TimeUnit; @@ -131,13 +132,14 @@ public class Trx if (prefix == null || prefix.length() == 0) { prefix = "Trx"; if (MSysConfig.getBooleanValue(MSysConfig.TRX_AUTOSET_DISPLAY_NAME, false)) { - StackTraceElement[] st = new Throwable().fillInStackTrace().getStackTrace(); - for (StackTraceElement ste : st) { - if (! Trx.class.getName().equals(ste.getClassName())) { - displayName = ste.getClassName().concat("_").concat(ste.getMethodName()); - break; - } - } + StackWalker walker = StackWalker.getInstance(StackWalker.Option.RETAIN_CLASS_REFERENCE); + Optional stackName = walker.walk(frames -> frames.map( + stackFrame -> stackFrame.getClassName() + "." + + stackFrame.getMethodName() + ":" + + stackFrame.getLineNumber()) + .filter(f -> ! f.startsWith(Trx.class.getName() + ".")) + .findFirst()); + displayName = (stackName.orElse(null)); } } prefix += "_" + UUID.randomUUID(); //System.currentTimeMillis();