mirror of
https://github.com/openjdk/jdk.git
synced 2026-02-27 02:30:06 +00:00
6656586: Cursor.predefined is protected static mutable (findbugs)
Reviewed-by: hawtin, igor
This commit is contained in:
parent
dfb6852a16
commit
f6e8569c85
@ -118,8 +118,18 @@ public class Cursor implements java.io.Serializable {
|
||||
*/
|
||||
public static final int MOVE_CURSOR = 13;
|
||||
|
||||
/**
|
||||
* @deprecated As of JDK version 1.7, the {@link #getPredefinedCursor()}
|
||||
* method should be used instead.
|
||||
*/
|
||||
@Deprecated
|
||||
protected static Cursor predefined[] = new Cursor[14];
|
||||
|
||||
/**
|
||||
* This field is a private replacement for 'predefined' array.
|
||||
*/
|
||||
private final static Cursor[] predefinedPrivate = new Cursor[14];
|
||||
|
||||
/* Localization names and default values */
|
||||
static final String[][] cursorProperties = {
|
||||
{ "AWT.DefaultCursor", "Default Cursor" },
|
||||
@ -253,10 +263,15 @@ public class Cursor implements java.io.Serializable {
|
||||
if (type < Cursor.DEFAULT_CURSOR || type > Cursor.MOVE_CURSOR) {
|
||||
throw new IllegalArgumentException("illegal cursor type");
|
||||
}
|
||||
if (predefined[type] == null) {
|
||||
predefined[type] = new Cursor(type);
|
||||
Cursor c = predefinedPrivate[type];
|
||||
if (c == null) {
|
||||
predefinedPrivate[type] = c = new Cursor(type);
|
||||
}
|
||||
return predefined[type];
|
||||
// fill 'predefined' array for backwards compatibility.
|
||||
if (predefined[type] == null) {
|
||||
predefined[type] = c;
|
||||
}
|
||||
return c;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -0,0 +1,49 @@
|
||||
/*
|
||||
* Copyright 2009 Sun Microsystems, Inc. All Rights Reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||
* CA 95054 USA or visit www.sun.com if you need additional information or
|
||||
* have any questions.
|
||||
*/
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 6656586
|
||||
* @summary Test that Cursor.predefined array is not used in
|
||||
Cursor.getPredefinedCursor() method
|
||||
* @author Artem Ananiev
|
||||
* @run main PredefinedPrivate
|
||||
*/
|
||||
|
||||
import java.awt.*;
|
||||
|
||||
public class PredefinedPrivate {
|
||||
public static void main(String args[]) {
|
||||
new MyCursor();
|
||||
if (Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR) instanceof MyCursor) {
|
||||
throw new RuntimeException("Test FAILED: getPredefinedCursor() returned modified cursor");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class MyCursor extends Cursor {
|
||||
public MyCursor() {
|
||||
super(DEFAULT_CURSOR);
|
||||
Cursor.predefined[DEFAULT_CURSOR] = this;
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user