diff --git a/jdk/src/share/classes/java/beans/EventHandler.java b/jdk/src/share/classes/java/beans/EventHandler.java
index 55144ca27fc..25ea18e2f1c 100644
--- a/jdk/src/share/classes/java/beans/EventHandler.java
+++ b/jdk/src/share/classes/java/beans/EventHandler.java
@@ -32,7 +32,6 @@ import java.security.AccessControlContext;
import java.security.AccessController;
import java.security.PrivilegedAction;
-import java.util.EventObject;
import sun.reflect.misc.MethodUtil;
/**
@@ -279,9 +278,9 @@ import sun.reflect.misc.MethodUtil;
public class EventHandler implements InvocationHandler {
private Object target;
private String action;
- private String eventPropertyName;
- private String listenerMethodName;
- private AccessControlContext acc;
+ private final String eventPropertyName;
+ private final String listenerMethodName;
+ private final AccessControlContext acc = AccessController.getContext();
/**
* Creates a new EventHandler
object;
@@ -310,7 +309,6 @@ public class EventHandler implements InvocationHandler {
*/
@ConstructorProperties({"target", "action", "eventPropertyName", "listenerMethodName"})
public EventHandler(Object target, String action, String eventPropertyName, String listenerMethodName) {
- this.acc = AccessController.getContext();
this.target = target;
this.action = action;
if (target == null) {
@@ -422,7 +420,11 @@ public class EventHandler implements InvocationHandler {
* @see EventHandler
*/
public Object invoke(final Object proxy, final Method method, final Object[] arguments) {
- return AccessController.doPrivileged(new PrivilegedAction() {
+ AccessControlContext acc = this.acc;
+ if ((acc == null) && (System.getSecurityManager() != null)) {
+ throw new SecurityException("AccessControlContext is not set");
+ }
+ return AccessController.doPrivileged(new PrivilegedAction