Skip to content

Commit ef8d0c8

Browse files
MichaelBlumebendlas
authored andcommitted
DXML-46 Remove reflection from data.xml
1 parent 0faad8a commit ef8d0c8

2 files changed

Lines changed: 8 additions & 7 deletions

File tree

src/main/clojure/clojure/data/xml/impl.clj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,4 +63,4 @@
6363
`(do ~else)))
6464

6565
(defn b64-encode [ba]
66-
(String. (b64/encode ba)))
66+
(String. ^bytes (b64/encode ba)))

src/main/clojure/clojure/data/xml/jvm/parse.clj

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
[qname]]
1818
[clojure.data.xml.pu-map :as pu])
1919
(:import
20+
(java.io InputStream Reader)
2021
(javax.xml.stream
2122
XMLInputFactory XMLStreamReader XMLStreamConstants)
2223
(clojure.data.xml.event EndElementEvent)))
@@ -114,7 +115,7 @@
114115
;; Consume and ignore comments, spaces, processing instructions etc
115116
(recur))))))
116117

117-
(defn- make-input-factory [props]
118+
(defn- make-input-factory ^XMLInputFactory [props]
118119
(let [fac (XMLInputFactory/newInstance)]
119120
(doseq [[k v] props
120121
:when (contains? input-factory-props k)
@@ -124,11 +125,11 @@
124125

125126
(defn make-stream-reader [props source]
126127
(let [fac (make-input-factory props)]
127-
;; Reflection on following line cannot be eliminated via a
128-
;; type hint, because s is advertised by fn parse to be an
129-
;; InputStream or Reader, and there are different
130-
;; createXMLStreamReader signatures for each of those types.
131-
(.createXMLStreamReader fac source)))
128+
(cond
129+
(instance? Reader source) (.createXMLStreamReader fac ^Reader source)
130+
(instance? InputStream source) (.createXMLStreamReader fac ^InputStream source)
131+
:else (throw (IllegalArgumentException.
132+
"source should be java.io.Reader or java.io.InputStream")))))
132133

133134
(defn string-source [s]
134135
(java.io.StringReader. s))

0 commit comments

Comments
 (0)