diff options
author | Rich Hickey <richhickey@gmail.com> | 2009-01-08 00:25:53 +0000 |
---|---|---|
committer | Rich Hickey <richhickey@gmail.com> | 2009-01-08 00:25:53 +0000 |
commit | 51ed068c679a4a65a2aa3552f8d088a1b787b08b (patch) | |
tree | 2ff9944c9355c4751dcfe351a16d8e21973d3759 /src/clj | |
parent | f8eea33039908560cb6fc564aea8341af4b0d7c7 (diff) |
move to RT.classForName in import
don't gen stubs for package-private methods in gen-class and proxy (causes security violation in applets)
Made root classloader create-on-demand, so no DynamicClassLoader unless dynamic code (eval/load, non-AOT proxy)
AOT compiled applets should work
Diffstat (limited to 'src/clj')
-rw-r--r-- | src/clj/clojure/core.clj | 4 | ||||
-rw-r--r-- | src/clj/clojure/core_proxy.clj | 5 | ||||
-rw-r--r-- | src/clj/clojure/genclass.clj | 5 |
3 files changed, 8 insertions, 6 deletions
diff --git a/src/clj/clojure/core.clj b/src/clj/clojure/core.clj index ad1e903b..41a6aab4 100644 --- a/src/clj/clojure/core.clj +++ b/src/clj/clojure/core.clj @@ -1678,11 +1678,11 @@ (let [n (name spec) dot (.lastIndexOf n (. clojure.lang.RT (intCast \.))) c (symbol (.substring n (inc dot)))] - (. ns (importClass c (. Class (forName (name spec)))))) + (. ns (importClass c (. clojure.lang.RT (classForName (name spec)))))) (let [pkg (first spec) classes (rest spec)] (doseq [c classes] - (. ns (importClass c (. Class (forName (str pkg "." c))))))))))) + (. ns (importClass c (. clojure.lang.RT (classForName (str pkg "." c))))))))))) (defn into-array diff --git a/src/clj/clojure/core_proxy.clj b/src/clj/clojure/core_proxy.clj index bda9824a..199d4c88 100644 --- a/src/clj/clojure/core_proxy.clj +++ b/src/clj/clojure/core_proxy.clj @@ -158,7 +158,8 @@ mods (. meth (getModifiers)) mk (method-sig meth)] (if (or (considered mk) - (. Modifier (isPrivate mods)) + (not (or (Modifier/isPublic mods) (Modifier/isProtected mods))) + ;(. Modifier (isPrivate mods)) (. Modifier (isStatic mods)) (. Modifier (isFinal mods)) (= "finalize" (.getName meth))) @@ -209,7 +210,7 @@ pname (proxy-name super interfaces)] (or (RT/loadClassForName pname) (let [[cname bytecode] (generate-proxy super interfaces)] - (. RT/ROOT_CLASSLOADER (defineClass pname bytecode)))))) + (. (RT/getRootClassLoader) (defineClass pname bytecode)))))) (defn construct-proxy "Takes a proxy class and any arguments for its superclass ctor and diff --git a/src/clj/clojure/genclass.clj b/src/clj/clojure/genclass.clj index 968e2d4b..36e1d21c 100644 --- a/src/clj/clojure/genclass.clj +++ b/src/clj/clojure/genclass.clj @@ -32,7 +32,8 @@ mods (. meth (getModifiers)) mk (method-sig meth)] (if (or (considered mk) - (. Modifier (isPrivate mods)) + (not (or (Modifier/isPublic mods) (Modifier/isProtected mods))) + ;(. Modifier (isPrivate mods)) (. Modifier (isStatic mods)) (. Modifier (isFinal mods)) (= "finalize" (.getName meth))) @@ -635,6 +636,6 @@ [& options] (let [options-map (apply hash-map options) [cname bytecode] (generate-class options-map)] - (.. clojure.lang.RT ROOT_CLASSLOADER (defineClass cname bytecode)))) + (.. (clojure.lang.RT/getRootClassLoader) (defineClass cname bytecode)))) ) |