aboutsummaryrefslogtreecommitdiff
path: root/src/clojure/contrib/condition
diff options
context:
space:
mode:
Diffstat (limited to 'src/clojure/contrib/condition')
-rw-r--r--src/clojure/contrib/condition/Condition.clj43
-rw-r--r--src/clojure/contrib/condition/example.clj66
2 files changed, 0 insertions, 109 deletions
diff --git a/src/clojure/contrib/condition/Condition.clj b/src/clojure/contrib/condition/Condition.clj
deleted file mode 100644
index 18449653..00000000
--- a/src/clojure/contrib/condition/Condition.clj
+++ /dev/null
@@ -1,43 +0,0 @@
-;; Copyright (c) Stephen C. Gilardi. All rights reserved. The use and
-;; distribution terms for this software are covered by the Eclipse Public
-;; License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) which can
-;; be found in the file epl-v10.html at the root of this distribution. By
-;; using this software in any fashion, you are agreeing to be bound by the
-;; terms of this license. You must not remove this notice, or any other,
-;; from this software.
-;;
-;; Condition.clj
-;;
-;; Used by clojure.contrib.condition to implement a "Throwable map"
-;;
-;; scgilardi (gmail)
-;; Created 09 June 2009
-
-(ns clojure.contrib.condition.Condition
- (:gen-class :extends Throwable
- :implements [clojure.lang.IMeta]
- :state state
- :init init
- :post-init post-init
- :constructors {[clojure.lang.IPersistentMap]
- [String Throwable]}))
-
-(defn -init
- "Constructs a Condition object with condition (a map) as its
- metadata. Also initializes the superclass with the values at :message
- and :cause, if any, so they are also available via .getMessage and
- .getCause."
- [condition]
- [[(:message condition) (:cause condition)] (atom condition)])
-
-(defn -post-init
- "Adds :stack-trace to the condition. Drops the bottom 3 frames because
- they are always the same: implementation details of Condition and raise."
- [this condition]
- (swap! (.state this) assoc
- :stack-trace (into-array (drop 3 (.getStackTrace this)))))
-
-(defn -meta
- "Returns this object's metadata, the condition"
- [this]
- @(.state this))
diff --git a/src/clojure/contrib/condition/example.clj b/src/clojure/contrib/condition/example.clj
deleted file mode 100644
index 5a7d72ef..00000000
--- a/src/clojure/contrib/condition/example.clj
+++ /dev/null
@@ -1,66 +0,0 @@
-;; Copyright (c) Stephen C. Gilardi. All rights reserved. The use and
-;; distribution terms for this software are covered by the Eclipse Public
-;; License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) which can
-;; be found in the file epl-v10.html at the root of this distribution. By
-;; using this software in any fashion, you are agreeing to be bound by the
-;; terms of this license. You must not remove this notice, or any other,
-;; from this software.
-;;
-;; clojure.contrib.condition.example.clj
-;;
-;; scgilardi (gmail)
-;; Created 09 June 2009
-
-(ns clojure.contrib.condition.example
- (:use (clojure.contrib
- [condition
- :only (handler-case print-stack-trace raise *condition*)])))
-
-(defn func [x y]
- "Raises an exception if x is negative"
- (when (neg? x)
- (raise :type :illegal-argument :arg 'x :value x))
- (+ x y))
-
-(defn main
- []
-
- ;; simple handler
-
- (handler-case :type
- (println (func 3 4))
- (println (func -5 10))
- (handle :illegal-argument
- (print-stack-trace *condition*))
- (println 3))
-
- ;; multiple handlers
-
- (handler-case :type
- (println (func 4 1))
- (println (func -3 22))
- (handle :overflow
- (print-stack-trace *condition*))
- (handle :illegal-argument
- (print-stack-trace *condition*)))
-
- ;; nested handlers
-
- (handler-case :type
- (handler-case :type
- nil
- nil
- (println 1)
- (println 2)
- (println 3)
- (println (func 8 2))
- (println (func -6 17))
- ;; no handler for :illegal-argument
- (handle :overflow
- (println "nested")
- (print-stack-trace *condition*)))
- (println (func 3 4))
- (println (func -5 10))
- (handle :illegal-argument
- (println "outer")
- (print-stack-trace *condition*))))