<AWT Dev> [9] Review Request: JDK-8037840 [macosx] Rewrite CWarning window to eliminate the ExecutorService

Anthony Petrov anthony.petrov at oracle.com
Wed Mar 19 14:58:54 UTC 2014

Hi Petr,

I'd like to see the NewGlobalRef/DeleteGlobalRef calls to be more 
balanced. Both should be performed either in the utility @interface, or 
in the JNI method (I'd prefer the former).

 From Object-Oriented Design perspective, the CancelableRunnable doesn't 
enforce the Cancelable contract. I'd suggest to redesign this class as 
follows (pseudo-code):

CancelableRunnable {
   private boolean flag;
   public abstract void perform();

   final run() {
      if (flag) {

and the implementation classes would only ever override the perform() 
method. This way we hide the flag from descendant classes, and also 
ensure the correct behavior of any descendant class after its cancel() 
method is invoked.

Also note the single 'l' in Cancelable. There's already 
CancelablePrintJob class in JDK, so I'd suggest to keep using the same 
flavor of English.

best regards,

On 3/19/2014 6:15 PM, Petr Pchelko wrote:
> Hello, AWT Team.
> Please review the fix for the issue: https://bugs.openjdk.java.net/browse/JDK-8037840
> The fix is available at: http://cr.openjdk.java.net/~pchelko/9/8037840/webrev/
> This is another fix for the SecurityWarning window. The problem is that we create a new Java thread to animate the warning icon. And we have a thread per icon.
> That's an overkill and a waste of resources. The idea of this fix is to use Appkit to schedule delayed tasks.
> You might wonder, why I'm rewriting the code I've just fixed in JDK-8037776. The idea is that JDK-8037776 is a completely safe fix to backport it to 8u20. This fix is a bit more risky, so it will stay in 9 without a backport to 8u20.

More information about the awt-dev mailing list