Skip to content

Commit 0d2e9e9

Browse files
author
taylor.smock
committed
See #17858: Update code for newer Java features
Also add a note that `toUnmodifiableList` does not like nulls. git-svn-id: https://josm.openstreetmap.de/svn/trunk@19120 0c6e7542-c601-0410-84e7-c038aed88b3b
1 parent 064ab0a commit 0d2e9e9

File tree

10 files changed

+19
-32
lines changed

10 files changed

+19
-32
lines changed

src/org/openstreetmap/josm/actions/ShowStatusReportAction.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -112,9 +112,8 @@ public static String getReportHeader() {
112112
DisplayMode dm = gd.getDisplayMode();
113113
if (dm != null) {
114114
AffineTransform transform = gd.getDefaultConfiguration().getDefaultTransform();
115-
// Java 11: use DisplayMode#toString
116-
text.format(Locale.ROOT, " %d\u00D7%d (scaling %.2f\u00D7%.2f)",
117-
dm.getWidth(), dm.getHeight(), transform.getScaleX(), transform.getScaleY());
115+
text.format(Locale.ROOT, " %s (scaling %.2f\u00D7%.2f)",
116+
dm, transform.getScaleX(), transform.getScaleY());
118117
}
119118
}
120119
text.println();

src/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDialog.java

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848

4949
/**
5050
* Panel to inspect one or more OsmPrimitives.
51-
*
51+
* <p>
5252
* Gives an unfiltered view of the object's internal state.
5353
* Might be useful for power users to give more detailed bug reports and
5454
* to better understand the JOSM data representation.
@@ -128,15 +128,15 @@ protected static String buildMapPaintText() {
128128
for (IPrimitive osm : sel) {
129129
String heading = tr("Styles for \"{0}\":", osm.getDisplayName(DefaultNameFormatter.getInstance()));
130130
txtMappaint.println(heading);
131-
txtMappaint.println(repeatString("=", heading.length()));
131+
txtMappaint.println("=".repeat(heading.length()));
132132

133133
MultiCascade mc = new MultiCascade();
134134

135135
for (StyleSource s : elemstyles.getStyleSources()) {
136136
if (s.active) {
137137
heading = tr("{0} style \"{1}\"", getSort(s), s.getDisplayString());
138138
txtMappaint.println(heading);
139-
txtMappaint.println(repeatString("-", heading.length()));
139+
txtMappaint.println("-".repeat(heading.length()));
140140
s.apply(mc, osm, scale, false);
141141
txtMappaint.println(tr("Display range: {0}", mc.range));
142142
for (Entry<String, Cascade> e : mc.getLayers()) {
@@ -149,7 +149,7 @@ protected static String buildMapPaintText() {
149149
txtMappaint.println();
150150
heading = tr("List of generated Styles:");
151151
txtMappaint.println(heading);
152-
txtMappaint.println(repeatString("-", heading.length()));
152+
txtMappaint.println("-".repeat(heading.length()));
153153
StyleElementList sl = elemstyles.get(osm, scale, nc);
154154
for (StyleElement s : sl) {
155155
txtMappaint.print(" * ");
@@ -178,11 +178,6 @@ protected static String buildMapPaintText() {
178178
return stringWriter.toString();
179179
}
180180

181-
private static String repeatString(String string, int count) {
182-
// Java 11: use String.repeat
183-
return new String(new char[count]).replace("\0", string);
184-
}
185-
186181
/* Future Ideas:
187182
Calculate the most recent edit date from o.getTimestamp().
188183
Sort by the count for presentation, so the most active editors are on top.

src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManagerModel.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ public boolean hasSelectedChangesets() {
8989
* @return the list of selected changesets
9090
*/
9191
public List<Changeset> getSelectedChangesets() {
92-
return Arrays.stream(TableHelper.getSelectedIndices(selectionModel))
92+
return Arrays.stream(selectionModel.getSelectedIndices())
9393
.map(sorter::convertRowIndexToModel).mapToObj(data::get).collect(Collectors.toList());
9494
}
9595

src/org/openstreetmap/josm/gui/util/ReorderableTableModel.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public interface ReorderableTableModel<T> extends ReorderableModel<T> {
4141
* @see #selectedIndices()
4242
*/
4343
default int[] getSelectedIndices() {
44-
return TableHelper.getSelectedIndices(getSelectionModel());
44+
return getSelectionModel().getSelectedIndices();
4545
}
4646

4747
/**

src/org/openstreetmap/josm/gui/util/TableHelper.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ public static void computeColumnsWidth(JTable tbl) {
122122
* Returns an array of all of the selected indices in the selection model, in increasing order.
123123
* Unfortunately this method is not available in OpenJDK before version 11, see
124124
* https://bugs.openjdk.java.net/browse/JDK-8199395
125-
*
125+
* <p>
126126
* To be removed when we switch to Java 11 or later.
127127
*
128128
* @param selectionModel list selection model.
@@ -131,9 +131,11 @@ public static void computeColumnsWidth(JTable tbl) {
131131
* or an empty array if nothing is selected
132132
* @see #selectedIndices(ListSelectionModel)
133133
* @since 15226
134+
* @deprecated Use {@link ListSelectionModel#getSelectedIndices()} instead
134135
*/
136+
@Deprecated(since = "19120")
135137
public static int[] getSelectedIndices(ListSelectionModel selectionModel) {
136-
return selectedIndices(selectionModel).toArray();
138+
return selectionModel.getSelectedIndices();
137139
}
138140

139141
/**

src/org/openstreetmap/josm/tools/PlatformHook.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,7 @@ default boolean isHtmlSupportedInMenuTooltips() {
247247

248248
/**
249249
* Returns extended modifier key used as the appropriate accelerator key for menu shortcuts.
250-
* It is advised everywhere to use {@link Toolkit#getMenuShortcutKeyMask()} to get the cross-platform modifier, but:
250+
* It was advised everywhere to use {@link Toolkit#getMenuShortcutKeyMask()} to get the cross-platform modifier, but:
251251
* <ul>
252252
* <li>it returns KeyEvent.CTRL_MASK instead of KeyEvent.CTRL_DOWN_MASK. We used the extended
253253
* modifier for years, and Oracle recommends to use it instead, so it's best to keep it</li>
@@ -257,7 +257,9 @@ default boolean isHtmlSupportedInMenuTooltips() {
257257
* @since 12748 (as a replacement to {@code GuiHelper.getMenuShortcutKeyMaskEx()})
258258
*/
259259
default int getMenuShortcutKeyMaskEx() {
260-
// To remove when switching to Java 10+, and use Toolkit.getMenuShortcutKeyMaskEx instead
260+
if (!GraphicsEnvironment.isHeadless()) {
261+
return Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx();
262+
}
261263
return InputEvent.CTRL_DOWN_MASK;
262264
}
263265

src/org/openstreetmap/josm/tools/PlatformHookOsx.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -105,11 +105,6 @@ public boolean isHtmlSupportedInMenuTooltips() {
105105
&& ("Aqua".equals(laf) || laf.contains("Mac")));
106106
}
107107

108-
@Override
109-
public int getMenuShortcutKeyMaskEx() {
110-
return InputEvent.META_DOWN_MASK;
111-
}
112-
113108
/**
114109
* Registers Apple handlers.
115110
*

src/org/openstreetmap/josm/tools/StreamUtils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public static <T> Stream<T> reversedStream(List<T> list) {
6767
* @since 16436
6868
*/
6969
public static <T> Collector<T, ?, List<T>> toUnmodifiableList() {
70-
// Java 10: use java.util.stream.Collectors.toUnmodifiableList
70+
// Java 10: use java.util.stream.Collectors.toUnmodifiableList (note: does not like null checks OR null entries)
7171
return Collectors.collectingAndThen(Collectors.toList(), Utils::toUnmodifiableList);
7272
}
7373
}

test/functional/org/openstreetmap/josm/gui/conflict/pair/nodes/NodeListMergerTestFT.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22
package org.openstreetmap.josm.gui.conflict.pair.nodes;
33

44
import java.awt.BorderLayout;
5-
import java.util.stream.Collectors;
6-
import java.util.stream.IntStream;
75

86
import javax.swing.JFrame;
97

@@ -23,8 +21,7 @@ protected void populate() {
2321
for (int i = 0; i < 20; i++) {
2422
n1.put("key" + i, "value" + i);
2523
}
26-
// Java 11: use String.repeat
27-
String note = IntStream.range(0, 50).mapToObj(i -> " A very long text ").collect(Collectors.joining());
24+
String note = " A very long text ".repeat(50);
2825
n1.put("note", note);
2926
w1.addNode(new Node(2));
3027
w1.addNode(new Node(3));

test/unit/org/openstreetmap/josm/data/osm/ChangesetTest.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@
1313
import java.util.Collection;
1414
import java.util.HashMap;
1515
import java.util.Map;
16-
import java.util.stream.Collectors;
17-
import java.util.stream.IntStream;
1816

1917
import org.junit.jupiter.api.Test;
2018
import org.openstreetmap.josm.data.Bounds;
@@ -56,8 +54,7 @@ void testSetKeys() {
5654

5755
// Add a map with too long values => IllegalArgumentException
5856
keys = new HashMap<>();
59-
// Java 11: use String.repeat
60-
keys.put("test", IntStream.range(0, MAX_CHANGESET_TAG_LENGTH + 1).mapToObj(i -> "x").collect(Collectors.joining()));
57+
keys.put("test", "x".repeat(MAX_CHANGESET_TAG_LENGTH + 1));
6158
try {
6259
cs.setKeys(keys);
6360
fail("Should have thrown an IllegalArgumentException as we gave a too long value.");

0 commit comments

Comments
 (0)