diff --git a/hibernate-core/src/main/java/org/hibernate/bytecode/internal/bytebuddy/HibernateMethodLookupDispatcher.java b/hibernate-core/src/main/java/org/hibernate/bytecode/internal/bytebuddy/HibernateMethodLookupDispatcher.java index e757e95492..61cc1c962d 100644 --- a/hibernate-core/src/main/java/org/hibernate/bytecode/internal/bytebuddy/HibernateMethodLookupDispatcher.java +++ b/hibernate-core/src/main/java/org/hibernate/bytecode/internal/bytebuddy/HibernateMethodLookupDispatcher.java @@ -17,6 +17,13 @@ import java.util.stream.Stream; import org.hibernate.HibernateException; +/** + * This dispatcher analyzes the stack frames to detect if a particular call should be authorized. + *

+ * Authorized classes are registered when creating the ByteBuddy proxies. + *

+ * It should only be used when the Security Manager is enabled. + */ public class HibernateMethodLookupDispatcher { /** @@ -93,6 +100,7 @@ public class HibernateMethodLookupDispatcher { public PrivilegedAction[]> run() { Class stackWalkerClass = null; try { + // JDK 9 introduced the StackWalker stackWalkerClass = Class.forName( "java.lang.StackWalker" ); } catch (ClassNotFoundException e) { @@ -192,9 +200,9 @@ public class HibernateMethodLookupDispatcher { } } + @SuppressWarnings({ "unchecked", "rawtypes" }) private final Function stackFrameExtractFunction = new Function() { @Override - @SuppressWarnings({ "unchecked", "rawtypes" }) public Object apply(Stream stream) { return stream.map( stackFrameGetDeclaringClassFunction ) .limit( MAX_STACK_FRAMES )