RFR: 8257512: Remove use of deprecated primitive constructors in JavaFX [v3]

Nir Lisker nlisker at openjdk.java.net
Thu Mar 11 00:48:11 UTC 2021


On Wed, 10 Mar 2021 19:49:25 GMT, Ambarish Rapte <arapte at openjdk.org> wrote:

>> The following primitive constructors were deprecated in JDK 9 and are deprecated for removal in JDK 16.
>> 
>> java.lang.Byte
>> java.lang.Short
>> java.lang.Integer
>> java.lang.Long
>> java.lang.Float
>> java.lang.Double
>> java.lang.Character
>> java.lang.Boolean
>> 
>> This change removes call to the primitive constructors with the `valueOf()` factory method of respective class.
>> Calls like the following to create array get autoboxed so it does not require a change.
>> 
>> `Double dArr[] = new Double[] {10.1, 20.2};`
>
> Ambarish Rapte has updated the pull request incrementally with one additional commit since the last revision:
> 
>   correct Float.valueOf()

I left some comments where I think autoboxing does the same work explicit boxing does. Unless I'm missing something, all these places can be simplified.

apps/samples/Ensemble8/src/app/java/ensemble/samplepage/PieChartDataVisualizer.java line 92:

> 90:                     }
> 91:                     try {
> 92:                         return (Double) Double.valueOf(string);

Looks like an unnecessary cast.

apps/toys/LayoutDemo/src/layout/CustomPane.java line 92:

> 90:         Collections.sort(sortedManagedChidlren, (c1, c2)
> 91:                 -> Double.valueOf(c2.prefHeight(-1)).compareTo(
> 92:                         Double.valueOf(c1.prefHeight(-1))));

This can be replaced with

    Collections.sort(sortedManagedChidlren, (c1, c2) -> Double.compare(c2.prefHeight(-1), c1.prefHeight(-1)));

or

    Collections.sort(sortedManagedChidlren, Comparator.<Node>comparingDouble(n -> n.prefHeight(-1)).reversed());

I think.
Same for the other places that do comparing.

modules/javafx.controls/src/test/java/test/javafx/scene/control/MenuBarTest.java line 582:

> 580: 
> 581:         boolean click = true;
> 582:         final Boolean firstClick = Boolean.valueOf(click);

Autobox?

apps/samples/3DViewer/src/main/java/com/javafx/experiments/shape3d/SkinningMesh.java line 110:

> 108:             for (int i = 0; i < nPoints; i++) {
> 109:                 if (weights[j][i] != 0.0f) {
> 110:                     weightIndices[j].add(Integer.valueOf(i));

Autobox?

apps/samples/Ensemble8/src/samples/java/ensemble/samples/language/swing/SampleTableModel.java line 54:

> 52:         {Double.valueOf(567), Double.valueOf(956), Double.valueOf(1154)},
> 53:         {Double.valueOf(1292), Double.valueOf(1665), Double.valueOf(1927)},
> 54:         {Double.valueOf(1292), Double.valueOf(2559), Double.valueOf(2774)}

Autobox?

modules/javafx.base/src/test/java/test/com/sun/javafx/collections/MappingChangeTest.java line 52:

> 50:     @Test
> 51:     public void testAddRemove() {
> 52:         Change<Integer> change = new NonIterableChange.SimpleRemovedChange<Integer>(0, 1, Integer.valueOf(5), originalList);

Autobox?

modules/javafx.base/src/test/java/test/javafx/util/DurationTest.java line 289:

> 287:     @Test public void add_ZERO_and_INDEFINITE_ResultsInIndefinite() {
> 288:         //assertTrue(0.0 + Double.POSITIVE_INFINITY == Double.POSITIVE_INFINITY); // sanity check
> 289:         assertEquals(Double.valueOf(Double.POSITIVE_INFINITY), Double.valueOf(0.0 + Double.POSITIVE_INFINITY)); // sanity check

I don't understand why convert to `Double` for the assertion test, but more than that, I don't understand why this test is needed for `Duration`. Isn't this is a guaranteed behavior of fp arithmetic?

Same for all other such asserts.

modules/javafx.controls/src/test/java/test/javafx/scene/chart/XYChartTest.java line 85:

> 83:         Font f = yaxis.getTickLabelFont();
> 84:         // default caspian value for font size = 10
> 85:         assertEquals(10, Double.valueOf(f.getSize()).intValue());

Any reason to convert `f.getSize()` to `int` and then to `Double`? Is it for flooring the `double`?

Same for the other places.

modules/javafx.controls/src/test/java/test/javafx/scene/control/ComboBoxTest.java line 643:

> 641:         ComboBox cb = new ComboBox();
> 642:         StringConverter sc = cb.getConverter();
> 643:         assertEquals("42", sc.toString(Integer.valueOf(42)));

Autobox?

modules/javafx.graphics/src/main/java/com/sun/prism/es2/X11GLFactory.java line 171:

> 169:         deviceDetails.put("XVisualID", Long.valueOf(nGetVisualID(nativeCtxInfo)));
> 170:         deviceDetails.put("XDisplay", Long.valueOf(nGetDisplay(nativeCtxInfo)));
> 171:         deviceDetails.put("XScreenID", Integer.valueOf(nGetDefaultScreen(nativeCtxInfo)));

Autobox?

modules/javafx.graphics/src/main/java/com/sun/prism/j2d/J2DPipeline.java line 64:

> 62:     @Override
> 63:     public ResourceFactory getResourceFactory(Screen screen) {
> 64:         Integer index = Integer.valueOf(screen.getAdapterOrdinal());

Autobox?

Same for the other similar places.

modules/javafx.graphics/src/test/java/test/javafx/scene/NodeTest.java line 477:

> 475:         v.set(value);
> 476:         NodeTest.syncNode(node);
> 477:         assertTrue(numbersEquals(Integer.valueOf(value),

Autobox?

Same for similar places.

modules/javafx.web/src/ios/java/javafx/scene/web/JSONDecoder.java line 101:

> 99:             long val = Long.parseLong(sNum);
> 100:             if ((val <= Integer.MAX_VALUE) && (Integer.MIN_VALUE <= val)) {
> 101:                 return Integer.valueOf(int) val);

Autobox?

-------------

PR: https://git.openjdk.java.net/jfx/pull/423


More information about the openjfx-dev mailing list