 
 (defn- handle-attribute
   [result attr-id value keys]
-  (let [[namespace name id] (split-keys keys)]
+  (let [[namespace name id] (deconstruct-keys keys)]
     (conj result { :namespace namespace
                    :name      name
                    :id        id
                    :value     value })))
 
-(defn- list-attrs-impl
+(defn- list-impl
   "Private implementation of list-attrs."
   [keys]
   (let [result   (atom [])

  [namespace name id]
  (.exists (attribute-service) (construct-keys namespace name id)))

(defn list-attrs
  "List all attributes in the given namespace, or namespace+name."
  ([namespace]      (list-attrs-impl (construct-keys namespace)))
  ([namespace name] (list-attrs-impl (construct-keys namespace name))))

(defn get-attr
  "Retrieves the current value of the given attribute."
  [namespace name id]
  (.getAttribute (attribute-service) (construct-keys namespace name id)))

(defn set-attr!
  "Unconditionally sets the value of the given attribute, creating it if it doesn't already exist."
  [namespace name id value]
  (.setAttribute (attribute-service) value (construct-keys namespace name id)))

; limitations under the License.

(ns alfresco.attr
  (:refer-clojure :exclude [get set! list])
  (:require [clojure.string :as s]
            [alfresco.core  :as c]
            [alfresco.nodes :as n])
