Skip to content

Commit 1cdb843

Browse files
committed
Allow for user added javadoc sources
In order to do so, need to use clojure.java.javadoc/*remove-javadocs* but we update it with a proper version of the javadoc root. Some issues are that clojure 1.8 has an entry for java 7 and for java 8 so running clojure 1.8 on java 11 can't use javadocs without this hack. Clojure 1.10.1 doesn't have a javadoc source for java 13 so this ensures a consistent presence across all versions.
1 parent 0e003db commit 1cdb843

File tree

2 files changed

+17
-23
lines changed

2 files changed

+17
-23
lines changed

src/orchard/java.clj

Lines changed: 9 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -358,35 +358,22 @@
358358
12 "https://docs.oracle.com/en/java/javase/12/docs/api/"
359359
13 "https://docs.oracle.com/en/java/javase/13/docs/api/"})
360360

361-
(def remote-javadocs
362-
(sorted-map
363-
"com.google.common." "http://google.github.io/guava/releases/23.0/api/docs/"
364-
"java." backported-javadoc-bases
365-
"javax." backported-javadoc-bases
366-
"org.ietf.jgss." backported-javadoc-bases
367-
"org.omg." backported-javadoc-bases
368-
"org.w3c.dom." backported-javadoc-bases
369-
"org.xml.sax." backported-javadoc-bases
370-
"org.apache.commons.codec." "http://commons.apache.org/proper/commons-codec/apidocs/"
371-
"org.apache.commons.io." "http://commons.apache.org/proper/commons-io/javadocs/api-release/"
372-
"org.apache.commons.lang." "http://commons.apache.org/proper/commons-lang/javadocs/api-2.6/"
373-
"org.apache.commons.lang3." "http://commons.apache.org/proper/commons-lang/javadocs/api-release/"))
374-
375361
(defn resolve-javadoc-path
376362
"Resolve a relative javadoc path to a URL and return as a map. Prefer javadoc
377363
resources on the classpath; then use online javadoc content for core API
378364
classes. If no source is available, return the relative path as is."
379365
[^String path]
380366
(or (resource/resource-full-path path)
381367
(some (let [classname (.replaceAll path "/" ".")]
382-
(fn [[prefix url|version->url]]
368+
(fn [[prefix url]]
383369
(when (.startsWith classname prefix)
384-
(str (if (string? url|version->url)
385-
url|version->url
386-
(get url|version->url misc/java-api-version
387-
"https://docs.oracle.com/javase/8/docs/api/"))
388-
path))))
389-
remote-javadocs)
370+
(str url path))))
371+
(into @javadoc/*remote-javadocs*
372+
;; clojure 1.8 has no javadoc for anything beyond java
373+
;; 8. clojure 1.10.1 doesn't have 13. We just backport them
374+
;; regardless of clojure version
375+
(zipmap ["java." "javax." "org.ietf.jgss." "org.omg." "org.w3c.dom." "org.xml.sax"]
376+
(repeat (backported-javadoc-bases misc/java-api-version)))))
390377
path))
391378

392379
;;; ## Initialization
@@ -400,4 +387,4 @@
400387
;; TODO: Seems those were hardcoded here accidentally - we should
401388
;; probably provide a simple API to register remote JavaDocs.
402389
(javadoc/add-remote-javadoc "com.amazonaws." "http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/")
403-
(javadoc/add-remote-javadoc "org.apache.kafka." "https://kafka.apache.org/090/javadoc/index.html?")
390+
(javadoc/add-remote-javadoc "org.apache.kafka." "https://kafka.apache.org/090/javadoc/")

test/orchard/java_test.clj

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,14 @@
287287
"https://docs.oracle.com/en/java/javase/11/docs/api/java.net.http/java/net/http/HttpClient.html#newHttpClient"
288288

289289
['java.net.http.HttpRequest 'newBuilder ['java.net.URI]]
290-
"https://docs.oracle.com/en/java/javase/11/docs/api/java.net.http/java/net/http/HttpRequest.html#newBuilder(java.net.URI)")))))))
290+
"https://docs.oracle.com/en/java/javase/11/docs/api/java.net.http/java/net/http/HttpRequest.html#newBuilder(java.net.URI)")))))
291+
292+
(testing "Allows for added javadocs"
293+
(with-redefs [cache (atom {})]
294+
(is (= "http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/lambda/AWSLambdaClient.html"
295+
(get-url ['com.amazonaws.services.lambda.AWSLambdaClient])))
296+
(is (= "https://kafka.apache.org/090/javadoc/org/apache/kafka/clients/consumer/ConsumerConfig.html"
297+
(get-url '[org.apache.kafka.clients.consumer.ConsumerConfig])))))))
291298

292299
(deftest class-resolution-test
293300
(let [ns (ns-name *ns*)]

0 commit comments

Comments
 (0)