From c93b407fda7a623e553510706fa32ec1c98a1291 Mon Sep 17 00:00:00 2001
From: Alex Redington <alex.redington@thinkrelevance.com>
Date: Fri, 25 Mar 2011 10:22:27 -0400
Subject: [PATCH] Fix for CLJ-724, renamed local binding of pmap to propmap to avoid ambiguity with clojure.core/pmap

 Please enter the commit message for your changes. Lines starting
---
 src/clj/clojure/core_proxy.clj             |   16 ++++++++--------
 test/clojure/test_clojure/java_interop.clj |    1 +
 2 files changed, 9 insertions(+), 8 deletions(-)

diff --git a/src/clj/clojure/core_proxy.clj b/src/clj/clojure/core_proxy.clj
index 830f5ce..96708c3 100644
--- a/src/clj/clojure/core_proxy.clj
+++ b/src/clj/clojure/core_proxy.clj
@@ -375,7 +375,7 @@
   {:added "1.0"}
   [^Object x]
   (let [c (. x (getClass))
-	pmap (reduce1 (fn [m ^java.beans.PropertyDescriptor pd]
+	propmap (reduce1 (fn [m ^java.beans.PropertyDescriptor pd]
 			 (let [name (. pd (getName))
 			       method (. pd (getReadMethod))]
 			   (if (and method (zero? (alength (. method (getParameterTypes)))))
@@ -385,26 +385,26 @@
 		     (seq (.. java.beans.Introspector
 			      (getBeanInfo c)
 			      (getPropertyDescriptors))))
-	v (fn [k] ((pmap k)))
+	v (fn [k] ((get propmap k (fn [] nil))))
         snapshot (fn []
                    (reduce1 (fn [m e]
                              (assoc m (key e) ((val e))))
-                           {} (seq pmap)))]
+                           {} (seq propmap)))]
     (proxy [clojure.lang.APersistentMap]
            []
-      (containsKey [k] (contains? pmap k))
-      (entryAt [k] (when (contains? pmap k) (new clojure.lang.MapEntry k (v k))))
+      (containsKey [k] (contains? propmap k))
+      (entryAt [k] (when (contains? propmap k) (new clojure.lang.MapEntry k (v k))))
       (valAt ([k] (v k))
-	     ([k default] (if (contains? pmap k) (v k) default)))
+	     ([k default] (if (contains? propmap k) (v k) default)))
       (cons [m] (conj (snapshot) m))
-      (count [] (count pmap))
+      (count [] (count propmap))
       (assoc [k v] (assoc (snapshot) k v))
       (without [k] (dissoc (snapshot) k))
       (seq [] ((fn thisfn [plseq]
 		  (lazy-seq
                    (when-let [pseq (seq plseq)]
                      (cons (new clojure.lang.MapEntry (first pseq) (v (first pseq)))
-                           (thisfn (rest pseq)))))) (keys pmap))))))
+                           (thisfn (rest pseq)))))) (keys propmap))))))
 
 
 
diff --git a/test/clojure/test_clojure/java_interop.clj b/test/clojure/test_clojure/java_interop.clj
index b9133d0..b34a967 100644
--- a/test/clojure/test_clojure/java_interop.clj
+++ b/test/clojure/test_clojure/java_interop.clj
@@ -112,6 +112,7 @@
 
         (:alpha b) 255
         (:transparency b) 1
+        (:non-existent-key b) nil
 
         (:class b) java.awt.Color )))
 
-- 
1.7.4.1

