Skip to content

Commit bb22fb3

Browse files
alexander-yakushevbbatsov
authored andcommitted
[info] Fix Javadoc URL inference for newer JDKs
1 parent f958564 commit bb22fb3

File tree

4 files changed

+22
-30
lines changed

4 files changed

+22
-30
lines changed

src/orchard/java.clj

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -516,20 +516,16 @@
516516
:class
517517
type-info)))
518518

519-
(def javadoc-base-urls
520-
"Copied from clojure.java.javadoc. These are the base urls for
521-
javadocs from `clojure.java.javadoc/*core-java-api*`. It is here for
522-
two reasons:
523-
1. Add Java 13+ to this list
524-
2. Backport newer data to older Clojure releases"
525-
{8 "https://docs.oracle.com/javase/8/docs/api/"
526-
9 "https://docs.oracle.com/javase/9/docs/api/"
527-
10 "https://docs.oracle.com/javase/10/docs/api/"
528-
11 "https://docs.oracle.com/en/java/javase/11/docs/api/"
529-
12 "https://docs.oracle.com/en/java/javase/12/docs/api/"
530-
13 "https://docs.oracle.com/en/java/javase/13/docs/api/"
531-
14 "https://docs.oracle.com/en/java/javase/14/docs/api/"
532-
15 "https://docs.oracle.com/en/java/javase/15/docs/api/"})
519+
(defn javadoc-base-url
520+
"Re-implementation of `clojure.java.javadoc/*core-java-api*` because it doesn't
521+
contain newer JDK versions, especially in older Clojure."
522+
[jdk-version]
523+
(cond (<= jdk-version 10)
524+
(format "https://docs.oracle.com/javase/%s/docs/api/" jdk-version)
525+
(<= 11 jdk-version 22)
526+
(format "https://docs.oracle.com/en/java/javase/%s/docs/api/" jdk-version)
527+
:else ;; For newer JDK version, default to latest LTS.
528+
(recur 21)))
533529

534530
(defn resolve-javadoc-path
535531
"Resolve a relative javadoc path to a URL and return as a map. Prefer javadoc
@@ -545,8 +541,7 @@
545541
;; Older Clojure versions don't have javadoc for newer JDKs.
546542
;; We just backport them regardless of Clojure version.
547543
(zipmap ["java." "javax." "org.ietf.jgss." "org.omg." "org.w3c.dom." "org.xml.sax"]
548-
(repeat (or (javadoc-base-urls misc/java-api-version)
549-
(javadoc-base-urls 11))))))
544+
(repeat (javadoc-base-url misc/java-api-version)))))
550545
path))
551546

552547
(defn- initialize-cache!* []

src/orchard/misc.clj

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -108,21 +108,18 @@
108108
(apply f (filter identity xs))))
109109

110110
(defn parse-java-version
111-
"Parse a Java version string according to JEP 223 and return the appropriate version."
111+
"Parse a Java version string according to JEP 223 and return the appropriate
112+
version."
112113
[java-ver]
113-
(try
114-
;; the no-opt split is because a java version string can end with
115-
;; an optional string consisting of a hyphen followed by other characters
116-
(let [[no-opt _] (string/split java-ver #"-")
117-
[major minor _] (string/split no-opt #"\.")
118-
major (Integer/parseInt major)]
119-
(if (> major 1)
120-
major
121-
(Integer/parseInt (or minor "7"))))
122-
(catch Exception _ 7)))
114+
(try (let [[major minor _] (string/split java-ver #"\.")
115+
major (Integer/parseInt major)]
116+
(if (> major 1)
117+
major
118+
(Integer/parseInt minor)))
119+
(catch Exception _ 8)))
123120

124121
(def java-api-version
125-
(parse-java-version (System/getProperty "java.version")))
122+
(parse-java-version (System/getProperty "java.specification.version")))
126123

127124
;; TODO move back to analysis.cljs
128125
(defn add-ns-macros

test/orchard/java_test.clj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -355,7 +355,7 @@
355355
(testing "Unrecognized java version doesn't blank out the javadocs"
356356
(with-redefs [misc/java-api-version 12345
357357
cache (LruMap. 100)]
358-
(is (= "https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html"
358+
(is (= "https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html"
359359
(get-url ['java.lang.String]))))))))
360360

361361
(deftest class-resolution-test

test/orchard/misc_test.clj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
(deftest parse-java-version-test
3535
(is (= (misc/parse-java-version "1.8.0") 8))
3636
(is (= (misc/parse-java-version "11") 11))
37-
(is (= (misc/parse-java-version "14-ea") 14)))
37+
(is (= (misc/parse-java-version "14") 14)))
3838

3939
(deftest macros-suffix-add-remove
4040
(testing "add-ns-macros"

0 commit comments

Comments
 (0)