From bc66d3e65d208edc69e8ae334d23b38f2b78a440 Mon Sep 17 00:00:00 2001 From: Prasanta Sadhukhan Date: Thu, 13 Nov 2025 01:19:37 +0000 Subject: [PATCH] 8370467: BorderFactory.createBevelBorder and createSoftBevelBorder throws NPE for null highlight and shadow Reviewed-by: aivanov, tr, honkar --- .../javax/swing/border/BevelBorder.java | 6 +- .../swing/border/TestBevelBorderParam.java | 64 +++++++++++++++++++ 2 files changed, 68 insertions(+), 2 deletions(-) create mode 100644 test/jdk/javax/swing/border/TestBevelBorderParam.java diff --git a/src/java.desktop/share/classes/javax/swing/border/BevelBorder.java b/src/java.desktop/share/classes/javax/swing/border/BevelBorder.java index 13c9c85ab29..dbcab475072 100644 --- a/src/java.desktop/share/classes/javax/swing/border/BevelBorder.java +++ b/src/java.desktop/share/classes/javax/swing/border/BevelBorder.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2021, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2025, Oracle and/or its affiliates. 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 @@ -95,7 +95,9 @@ public class BevelBorder extends AbstractBorder * @param shadow the color to use for the bevel shadow */ public BevelBorder(int bevelType, Color highlight, Color shadow) { - this(bevelType, highlight.brighter(), highlight, shadow, shadow.brighter()); + this(bevelType, + (highlight != null) ? highlight.brighter() : null, highlight, + shadow, (shadow != null) ? shadow.brighter() : null); } /** diff --git a/test/jdk/javax/swing/border/TestBevelBorderParam.java b/test/jdk/javax/swing/border/TestBevelBorderParam.java new file mode 100644 index 00000000000..ad1d779afd1 --- /dev/null +++ b/test/jdk/javax/swing/border/TestBevelBorderParam.java @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2025, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8370467 + * @summary Verifies createBevelBorder and createSoftBevelBorder does not throw NPE + * @run main TestBevelBorderParam + */ + +import javax.swing.BorderFactory; +import javax.swing.border.BevelBorder; + +public class TestBevelBorderParam { + + public static void main(String[] args) throws Exception { + StringBuilder str = new StringBuilder(); + + try { + BorderFactory.createBevelBorder(BevelBorder.RAISED, null, null); + } catch (NullPointerException ex) { + str.append("\n"); + str.append("BorderFactory.createBevelBorder throws NPE for null highlight and shadow"); + } + + try { + BorderFactory.createSoftBevelBorder(BevelBorder.RAISED, null, null); + } catch (NullPointerException e) { + str.append("\n"); + str.append("BorderFactory.createSoftBevelBorder throws NPE for null highlight and shadow"); + } + + try { + new BevelBorder(BevelBorder.RAISED, null, null); + } catch (NullPointerException ex) { + str.append("\n"); + str.append("BevelBorder constructor throws NPE for null highlight and shadow"); + } + + if (str.length() != 0) { + throw new RuntimeException(str.toString()); + } + } +}