summaryrefslogtreecommitdiff
path: root/src/clj
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2009-01-08 00:25:53 +0000
committerRich Hickey <richhickey@gmail.com>2009-01-08 00:25:53 +0000
commit51ed068c679a4a65a2aa3552f8d088a1b787b08b (patch)
tree2ff9944c9355c4751dcfe351a16d8e21973d3759 /src/clj
parentf8eea33039908560cb6fc564aea8341af4b0d7c7 (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.clj4
-rw-r--r--src/clj/clojure/core_proxy.clj5
-rw-r--r--src/clj/clojure/genclass.clj5
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))))
)