From ab3413452551a768433de8f65e23bdfb50c52144 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?KARASZI=20Istv=C3=A1n?= Date: Sat, 17 Aug 2024 11:34:48 +0200 Subject: [PATCH] Fix reflection warning on javax.xml.parsers.SAXParser --- src/clj_http/client.clj | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/src/clj_http/client.clj b/src/clj_http/client.clj index c6dcfbb0..7d01d886 100644 --- a/src/clj_http/client.clj +++ b/src/clj_http/client.clj @@ -16,7 +16,8 @@ (:import [java.io BufferedReader ByteArrayInputStream ByteArrayOutputStream EOFException File InputStream] [java.net UnknownHostException URL] [org.apache.http.entity BufferedHttpEntity ByteArrayEntity FileEntity InputStreamEntity StringEntity] - [javax.xml.parsers SAXParserFactory] + [javax.xml.parsers SAXParser SAXParserFactory] + org.xml.sax.helpers.DefaultHandler org.apache.http.impl.conn.PoolingHttpClientConnectionManager org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager)) @@ -474,18 +475,25 @@ (util/force-string body charset))] (assoc resp :body body))) +(defn- sax-parser ^SAXParser [] + (.. + (doto + (SAXParserFactory/newInstance) + (.setFeature + "http://apache.org/xml/features/nonvalidating/load-external-dtd" false)) + (newSAXParser))) + +(defn- non-validating [s ^DefaultHandler ch] + (let [parser (sax-parser)] + (cond + (instance? String s) (.parse parser ^String s ch) + (instance? InputStream s) (.parse parser ^InputStream s ch) + :else (throw (ex-info "Unsupported input" {:s s}))))) + (defn- decode-xml-body [body] - (let [non-validating (fn [s ch] - (.. - (doto - (SAXParserFactory/newInstance) - (.setFeature - "http://apache.org/xml/features/nonvalidating/load-external-dtd" false)) - (newSAXParser) - (parse s ch)))] - (-> body - (util/force-stream) - (xml/parse non-validating)))) + (-> body + (util/force-stream) + (xml/parse non-validating))) (defn coerce-xml-body [request {:keys [body] :as resp} & [charset]] @@ -892,7 +900,6 @@ ([req respond raise] (client (oauth-request req) respond raise)))) - (defn parse-user-info [user-info] (when user-info (str/split user-info #":")))