Ah, Cacio is really good at spotting JDK bugs :) Mario -- Sent from HTC Desire...
pgp key: http://subkeys.pgp.net/ PGP Key ID: 80F240CF Fingerprint: BA39 9666 94EC 8B73 27FA FC7C 4086 63E3 80F2 40CF http://www.icedrobot.org Proud GNU Classpath developer: http://www.classpath.org/ Read About us at: http://planet.classpath.org OpenJDK: http://openjdk.java.net/projects/caciocavallo/ Please, support open standards: http://endsoftpatents.org/ ----- Reply message ----- Da: "Artem Ananiev" <[email protected]> Data: mer, ago 17, 2011 10:57 Oggetto: <AWT Dev> Missing doPrivileged() in Dialog.show() A: "Roman Kennke" <[email protected]> Cc: <[email protected]> On 8/17/2011 12:54 PM, Roman Kennke wrote: > Hi Artem, > >> it really looks like a bug. I will file it shortly. Here is the bug ID: 7080109. > Cool. I will prepare a patch in the meantime, and file it in bugzilla. Thanks, Artem > Roman > >> >> Thanks, >> >> Artem >> >> On 8/16/2011 11:52 PM, Roman Kennke wrote: >>> Hi all, >>> >>> when running an app with security manager (I am talking about the >>> ubercool Cacio-Web project [1]), I get the attached exception when >>> trying to open a modal dialog. I am wondering if the following code in >>> Dialog.show() shouldn't be wrapped in a doPrivileged() to enable the >>> secondary event loop: >>> >>> try { >>> EventQueue eventQueue = >>> Toolkit.getDefaultToolkit().getSystemEventQueue(); >>> secondaryLoop = >>> eventQueue.createSecondaryLoop(cond, modalFilter, 0); >>> if (!secondaryLoop.enter()) { >>> secondaryLoop = null; >>> } >>> } finally { >>> modalityPopped(); >>> } >>> >>> >>> That is because getSystemEventQueue() is protected by the security >>> manager, and we probably don't want to bother calling code with this >>> implementation detail. >>> >>> >>> Any thoughts? >>> >>> [1] http://jroller.com/neugens/entry/java_on_ipad_part_ii >>> >>> >>> >>> Exception in thread "AWT-EventQueue-1" >>> java.security.AccessControlException: access denied >>> ("java.awt.AWTPermission" "accessEventQueue") >>> at >>> java.security.AccessControlContext.checkPermission(AccessControlContext.java:366) >>> at >>> java.security.AccessController.checkPermission(AccessController.java:555) >>> at java.lang.SecurityManager.checkPermission(SecurityManager.java:549) >>> at >>> java.lang.SecurityManager.checkAwtEventQueueAccess(SecurityManager.java:1415) >>> at java.awt.Toolkit.getSystemEventQueue(Toolkit.java:1730) >>> at java.awt.Dialog.show(Dialog.java:1070) >>> at javax.swing.ColorChooserDialog.show(JColorChooser.java:720) >>> at ColorChooserDemo$1.actionPerformed(ColorChooserDemo.java:131) >>> at >>> javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018) >>> at javax.swing.AbstractButton >>> $Handler.actionPerformed(AbstractButton.java:2341) >>> at >>> javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) >>> at >>> javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) >>> at >>> javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) >>> at java.awt.Component.processMouseEvent(Component.java:6503) >>> at javax.swing.JComponent.processMouseEvent(JComponent.java:3321) >>> at java.awt.Component.processEvent(Component.java:6268) >>> at java.awt.Container.processEvent(Container.java:2213) >>> at java.awt.Component.dispatchEventImpl(Component.java:4859) >>> at java.awt.Container.dispatchEventImpl(Container.java:2271) >>> at java.awt.Component.dispatchEvent(Component.java:4685) >>> at >>> java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4816) >>> at >>> java.awt.LightweightDispatcher.processMouseEvent(Container.java:4476) >>> at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4406) >>> at java.awt.Container.dispatchEventImpl(Container.java:2257) >>> at java.awt.Window.dispatchEventImpl(Window.java:2713) >>> at java.awt.Component.dispatchEvent(Component.java:4685) >>> at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707) >>> at java.awt.EventQueue.access$000(EventQueue.java:101) >>> at java.awt.EventQueue$3.run(EventQueue.java:666) >>> at java.awt.EventQueue$3.run(EventQueue.java:664) >>> at java.security.AccessController.doPrivileged(Native Method) >>> at java.security.ProtectionDomain >>> $1.doIntersectionPrivilege(ProtectionDomain.java:76) >>> at java.security.ProtectionDomain >>> $1.doIntersectionPrivilege(ProtectionDomain.java:87) >>> at java.awt.EventQueue$4.run(EventQueue.java:680) >>> at java.awt.EventQueue$4.run(EventQueue.java:678) >>> at java.security.AccessController.doPrivileged(Native Method) >>> at java.security.ProtectionDomain >>> $1.doIntersectionPrivilege(ProtectionDomain.java:76) >>> at java.awt.EventQueue.dispatchEvent(EventQueue.java:677) >>> at >>> java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211) >>> at >>> java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128) >>> >>> >> > >
