Commit 2afed683 by Michael Koch Committed by Michael Koch

2004-07-30 Michael Koch <konqueror@gmx.de>

	* gnu/java/awt/EmbeddedWindow.java
	(addNotify): Use AccessController to allow execution of privileged
	code.

From-SVN: r85337
parent 0a925a32
2004-07-30 Michael Koch <konqueror@gmx.de>
* gnu/java/awt/EmbeddedWindow.java
(addNotify): Use AccessController to allow execution of privileged
code.
2004-07-29 Michael Koch <konqueror@gmx.de> 2004-07-29 Michael Koch <konqueror@gmx.de>
* gnu/java/lang/MainThread.java: * gnu/java/lang/MainThread.java:
......
...@@ -40,11 +40,13 @@ package gnu.java.awt; ...@@ -40,11 +40,13 @@ package gnu.java.awt;
import gnu.classpath.Configuration; import gnu.classpath.Configuration;
import gnu.java.awt.peer.EmbeddedWindowPeer; import gnu.java.awt.peer.EmbeddedWindowPeer;
import gnu.java.security.action.SetAccessibleAction;
import java.awt.Component; import java.awt.Component;
import java.awt.Frame; import java.awt.Frame;
import java.awt.Toolkit; import java.awt.Toolkit;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.security.AccessController;
/** /**
* Represents an AWT window that can be embedded into another * Represents an AWT window that can be embedded into another
...@@ -88,13 +90,15 @@ public class EmbeddedWindow extends Frame ...@@ -88,13 +90,15 @@ public class EmbeddedWindow extends Frame
if (! (tk instanceof EmbeddedWindowSupport)) if (! (tk instanceof EmbeddedWindowSupport))
throw new UnsupportedOperationException throw new UnsupportedOperationException
("Embedded windows are not supported by the current peers: " + tk.getClass()); ("Embedded windows are not supported by the current peers: "
+ tk.getClass());
// Circumvent the package-privateness of the AWT internal // Circumvent the package-privateness of the AWT internal
// java.awt.Component.peer member variable. // java.awt.Component.peer member variable.
try try
{ {
Field peerField = Component.class.getDeclaredField("peer"); Field peerField = Component.class.getDeclaredField("peer");
AccessController.doPrivileged(new SetAccessibleAction(peerField));
peerField.set(this, ((EmbeddedWindowSupport) tk).createEmbeddedWindow (this)); peerField.set(this, ((EmbeddedWindowSupport) tk).createEmbeddedWindow (this));
} }
catch (IllegalAccessException e) catch (IllegalAccessException e)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment