Hi Stuart,

Will push with suggested refactoring; thanks for the review,

-Joe

On 2/25/2019 10:40 AM, Stuart Marks wrote:
Hi Joe,

Thanks for cleaning up jdeprscan.

For computing the set of releases, I'd prefer to see a stream that looks like this:

        final Set<String> releasesWithForRemoval =
            IntStream.rangeClosed(9, Runtime.version().feature())
                     .mapToObj(Integer::toString)
                     .collect(Collectors.toUnmodifiableSet());

This collects the values directly to an unmodifiable set, instead of populating an array which is then passed to Set.of().

Thanks,

s'marks

On 2/21/19 6:15 PM, Joe Darcy wrote:
Hello,

Internally jdeprscan initializes a set of strings of releases supporting deprecation with removal. Currently those releases are JDK 9 and subsequent values. The lists is explicitly initialized and must be updated at the start of a release, which adds to the maintenance cost of starting a new release. The update for JDK 13 was:

--- a/src/jdk.jdeps/share/classes/com/sun/tools/jdeprscan/Main.java Thu Dec 13 17:01:15 2018 +0100 +++ b/src/jdk.jdeps/share/classes/com/sun/tools/jdeprscan/Main.java Thu Dec 13 19:06:11 2018 +0100
@@ -106,7 +106,7 @@
      // Keep these updated manually until there's a compiler API
      // that allows querying of supported releases.
      final Set<String> releasesWithoutForRemoval = Set.of("6", "7", "8"); -    final Set<String> releasesWithForRemoval = Set.of("9", "10", "11", "12"); +    final Set<String> releasesWithForRemoval = Set.of("9", "10", "11", "12", "13");

      final Set<String> validReleases;
      {


Initializing the list more programmatically could avoid the need for an explicit update for the start of a release. Please review the patch below for the programmatic initialization:

--- a/src/jdk.jdeps/share/classes/com/sun/tools/jdeprscan/Main.java Thu Feb 21 15:17:42 2019 -0800 +++ b/src/jdk.jdeps/share/classes/com/sun/tools/jdeprscan/Main.java Thu Feb 21 18:01:59 2019 -0800
@@ -45,6 +45,7 @@
  import java.util.NoSuchElementException;
  import java.util.Set;
  import java.util.Queue;
+import java.util.stream.IntStream;
  import java.util.stream.Stream;
  import java.util.stream.StreamSupport;
  import java.util.jar.JarEntry;
@@ -106,7 +107,12 @@
      // Keep these updated manually until there's a compiler API
      // that allows querying of supported releases.
      final Set<String> releasesWithoutForRemoval = Set.of("6", "7", "8"); -    final Set<String> releasesWithForRemoval = Set.of("9", "10", "11", "12", "13");
+    // Set.of("9", "10", "11", "12", "13");
+    final Set<String> releasesWithForRemoval = Set.of(// "9", "10", "11", ...
+        IntStream.rangeClosed(9, Runtime.version().feature())
+        .mapToObj(Integer::toString)
+        .toArray(String[]::new));
+

      final Set<String> validReleases;
      {

Thanks,

-Joe

Reply via email to