Add reflection info to support clj-http-lite

This commit is contained in:
Michiel Borkent 2019-12-22 09:40:12 +01:00 committed by GitHub
parent fc20ed00a3
commit 34249ad0b1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 164 additions and 1 deletions

View file

@ -18,11 +18,26 @@
"allPublicMethods" : true,
"allPublicFields" : true,
"allPublicConstructors" : true
}, {
"name" : "java.io.ByteArrayInputStream",
"allPublicMethods" : true,
"allPublicFields" : true,
"allPublicConstructors" : true
}, {
"name" : "java.io.ByteArrayOutputStream",
"allPublicMethods" : true,
"allPublicFields" : true,
"allPublicConstructors" : true
}, {
"name" : "java.io.File",
"allPublicMethods" : true,
"allPublicFields" : true,
"allPublicConstructors" : true
}, {
"name" : "java.io.IOException",
"allPublicMethods" : true,
"allPublicFields" : true,
"allPublicConstructors" : true
}, {
"name" : "java.io.InputStream",
"allPublicMethods" : true,
@ -118,6 +133,31 @@
"allPublicMethods" : true,
"allPublicFields" : true,
"allPublicConstructors" : true
}, {
"name" : "java.net.HttpURLConnection",
"allPublicMethods" : true,
"allPublicFields" : true,
"allPublicConstructors" : true
}, {
"name" : "java.net.URI",
"allPublicMethods" : true,
"allPublicFields" : true,
"allPublicConstructors" : true
}, {
"name" : "java.net.URLDecoder",
"allPublicMethods" : true,
"allPublicFields" : true,
"allPublicConstructors" : true
}, {
"name" : "java.net.URLEncoder",
"allPublicMethods" : true,
"allPublicFields" : true,
"allPublicConstructors" : true
}, {
"name" : "java.net.UnknownHostException",
"allPublicMethods" : true,
"allPublicFields" : true,
"allPublicConstructors" : true
}, {
"name" : "java.nio.file.CopyOption",
"allPublicMethods" : true,
@ -288,6 +328,41 @@
"allPublicMethods" : true,
"allPublicFields" : true,
"allPublicConstructors" : true
}, {
"name" : "java.util.zip.DeflaterInputStream",
"allPublicMethods" : true,
"allPublicFields" : true,
"allPublicConstructors" : true
}, {
"name" : "java.util.zip.GZIPInputStream",
"allPublicMethods" : true,
"allPublicFields" : true,
"allPublicConstructors" : true
}, {
"name" : "java.util.zip.GZIPOutputStream",
"allPublicMethods" : true,
"allPublicFields" : true,
"allPublicConstructors" : true
}, {
"name" : "java.util.zip.InflaterInputStream",
"allPublicMethods" : true,
"allPublicFields" : true,
"allPublicConstructors" : true
}, {
"name" : "javax.xml.bind.DatatypeConverter",
"allPublicMethods" : true,
"allPublicFields" : true,
"allPublicConstructors" : true
}, {
"name" : "sun.net.www.protocol.http.HttpURLConnection",
"allPublicMethods" : true,
"allPublicFields" : true,
"allPublicConstructors" : true
}, {
"name" : "sun.net.www.protocol.http.HttpURLConnection$HttpInputStream",
"allPublicMethods" : true,
"allPublicFields" : true,
"allPublicConstructors" : true
}, {
"name" : "sun.nio.fs.UnixPath",
"allPublicMethods" : true,
@ -363,4 +438,47 @@
"name" : "yield"
} ],
"name" : "java.lang.Thread"
}, {
"allPublicConstructors" : true,
"allPublicFields" : true,
"methods" : [ {
"name" : "equals"
}, {
"name" : "getAuthority"
}, {
"name" : "getContent"
}, {
"name" : "getDefaultPort"
}, {
"name" : "getFile"
}, {
"name" : "getHost"
}, {
"name" : "getPath"
}, {
"name" : "getPort"
}, {
"name" : "getProtocol"
}, {
"name" : "getQuery"
}, {
"name" : "getRef"
}, {
"name" : "getUserInfo"
}, {
"name" : "hashCode"
}, {
"name" : "openConnection"
}, {
"name" : "openStream"
}, {
"name" : "sameFile"
}, {
"name" : "toExternalForm"
}, {
"name" : "toString"
}, {
"name" : "toURI"
} ],
"name" : "java.net.URL"
} ]

View file

@ -23,7 +23,9 @@ BABASHKA_VERSION=$(cat resources/BABASHKA_VERSION)
# mkdir -p src/sci
# cp -R /tmp/sci/src/* src
lein with-profiles +reflection do run
lein do clean, uberjar
$NATIVE_IMAGE \
-jar target/babashka-$BABASHKA_VERSION-standalone.jar \
-H:Name=bb \

View file

@ -8,8 +8,11 @@
clojure.lang.LineNumberingPushbackReader
java.io.BufferedReader
java.io.BufferedWriter
java.io.ByteArrayInputStream
java.io.ByteArrayOutputStream
java.io.File
java.io.InputStream
java.io.IOException
java.io.OutputStream
java.io.StringReader
java.io.StringWriter
@ -29,6 +32,11 @@
java.lang.UNIXProcess$ProcessPipeOutputStream
java.lang.ProcessBuilder
java.lang.ProcessBuilder$Redirect
java.net.URI
java.net.HttpURLConnection
java.net.UnknownHostException
java.net.URLEncoder
java.net.URLDecoder
java.nio.file.CopyOption
java.nio.file.FileAlreadyExistsException
java.nio.file.Files
@ -62,7 +70,14 @@
java.util.Base64
java.util.Base64$Decoder
java.util.Base64$Encoder
java.util.zip.InflaterInputStream
java.util.zip.DeflaterInputStream
java.util.zip.GZIPInputStream
java.util.zip.GZIPOutputStream
javax.xml.bind.DatatypeConverter
sun.nio.fs.UnixPath ;; included because of permission check
sun.net.www.protocol.http.HttpURLConnection ;; needed for clj-http.lite
sun.net.www.protocol.http.HttpURLConnection$HttpInputStream ;; needed for clj-http.lite
]
:custom-classes {'java.lang.Thread
{:allPublicConstructors true
@ -100,7 +115,32 @@
{:name "sleep"}
{:name "start"}
{:name "toString"}
{:name "yield"}]}}})
{:name "yield"}]}
'java.net.URL
{:allPublicConstructors true
:allPublicFields true
;; generated with `public-declared-method-names`, see in
;; `comment` below
:methods [{:name "equals"}
{:name "getAuthority"}
{:name "getContent"}
{:name "getDefaultPort"}
{:name "getFile"}
{:name "getHost"}
{:name "getPath"}
{:name "getPort"}
{:name "getProtocol"}
{:name "getQuery"}
{:name "getRef"}
{:name "getUserInfo"}
{:name "hashCode"}
{:name "openConnection"}
{:name "openStream"}
{:name "sameFile"}
;; not supported: {:name "setURLStreamHandlerFactory"}
{:name "toExternalForm"}
{:name "toString"}
{:name "toURI"}]}}})
(defmacro gen-class-map []
(let [classes (concat (:default-classes classes)
@ -148,4 +188,5 @@
(vec)))
(public-declared-method-names java.lang.UNIXProcess)
(public-declared-method-names java.net.URL)
)

View file

@ -5,6 +5,7 @@
(def core-extras
{'file-seq file-seq
'agent agent
'instance? instance? ;; TODO: move to sci
'send send
'send-off send-off
'promise promise

View file

@ -3,6 +3,7 @@
(def io-namespace
{'as-relative-path io/as-relative-path
'as-url io/as-url
'copy io/copy
'delete-file io/delete-file
'file io/file