mirror of https://github.com/apache/jclouds.git
issue 704, clojure 1.3 compatibility: removed uses of clojure-contrib, bringing in preferred modular dependencies where needed (tools.logging and core.incubator), adding the map-str function (that is all that was missing from clojure-contrib string), changing uses of "condition" to be java.lang.Exception, and changing the reference to private type byte-array-type to be the class directly in its own extend-protocol block since private type isn't liked under clojure 1.3; also removed clojure 1.1 build profile
This commit is contained in:
parent
9049cb3b28
commit
9d30fde375
|
@ -22,7 +22,6 @@
|
||||||
:doc "A clojure binding to the jclouds EBS service interface."}
|
:doc "A clojure binding to the jclouds EBS service interface."}
|
||||||
org.jclouds.ec2.ebs
|
org.jclouds.ec2.ebs
|
||||||
(:require (org.jclouds [compute :as compute]))
|
(:require (org.jclouds [compute :as compute]))
|
||||||
(:use (clojure.contrib def core))
|
|
||||||
(:import org.jclouds.aws.domain.Region
|
(:import org.jclouds.aws.domain.Region
|
||||||
org.jclouds.compute.domain.NodeMetadata
|
org.jclouds.compute.domain.NodeMetadata
|
||||||
(org.jclouds.ec2.domain Volume Volume$Status Snapshot Snapshot$Status AvailabilityZoneInfo)
|
(org.jclouds.ec2.domain Volume Volume$Status Snapshot Snapshot$Status AvailabilityZoneInfo)
|
||||||
|
|
|
@ -22,7 +22,6 @@
|
||||||
:doc "A clojure binding to the jclouds EBS service interface."}
|
:doc "A clojure binding to the jclouds EBS service interface."}
|
||||||
org.jclouds.ec2.ebs2
|
org.jclouds.ec2.ebs2
|
||||||
(:use [org.jclouds.compute2])
|
(:use [org.jclouds.compute2])
|
||||||
(:use (clojure.contrib def core))
|
|
||||||
(:import org.jclouds.aws.domain.Region
|
(:import org.jclouds.aws.domain.Region
|
||||||
org.jclouds.compute.domain.NodeMetadata
|
org.jclouds.compute.domain.NodeMetadata
|
||||||
(org.jclouds.ec2.domain Volume Volume$Status Snapshot Snapshot$Status AvailabilityZoneInfo)
|
(org.jclouds.ec2.domain Volume Volume$Status Snapshot Snapshot$Status AvailabilityZoneInfo)
|
||||||
|
|
|
@ -23,7 +23,6 @@
|
||||||
org.jclouds.ec2.elastic-ip
|
org.jclouds.ec2.elastic-ip
|
||||||
(:require (org.jclouds [compute :as compute])
|
(:require (org.jclouds [compute :as compute])
|
||||||
[org.jclouds.ec2.ebs :as ebs])
|
[org.jclouds.ec2.ebs :as ebs])
|
||||||
(:use (clojure.contrib def core))
|
|
||||||
(:import org.jclouds.compute.domain.NodeMetadata
|
(:import org.jclouds.compute.domain.NodeMetadata
|
||||||
(org.jclouds.ec2.domain PublicIpInstanceIdPair)))
|
(org.jclouds.ec2.domain PublicIpInstanceIdPair)))
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,6 @@
|
||||||
org.jclouds.ec2.elastic-ip2
|
org.jclouds.ec2.elastic-ip2
|
||||||
(:require (org.jclouds [compute2 :as compute])
|
(:require (org.jclouds [compute2 :as compute])
|
||||||
[org.jclouds.ec2.ebs :as ebs])
|
[org.jclouds.ec2.ebs :as ebs])
|
||||||
(:use (clojure.contrib def core))
|
|
||||||
(:import org.jclouds.compute.domain.NodeMetadata
|
(:import org.jclouds.compute.domain.NodeMetadata
|
||||||
(org.jclouds.ec2.domain PublicIpInstanceIdPair)))
|
(org.jclouds.ec2.domain PublicIpInstanceIdPair)))
|
||||||
|
|
||||||
|
|
|
@ -53,11 +53,6 @@ See http://code.google.com/p/jclouds for details."
|
||||||
[java.security DigestOutputStream MessageDigest]
|
[java.security DigestOutputStream MessageDigest]
|
||||||
com.google.common.collect.ImmutableSet))
|
com.google.common.collect.ImmutableSet))
|
||||||
|
|
||||||
(try
|
|
||||||
(require '[clojure.contrib.io :as io])
|
|
||||||
(catch Exception e
|
|
||||||
(require '[clojure.contrib.duck-streams :as io])))
|
|
||||||
|
|
||||||
(defn blobstore
|
(defn blobstore
|
||||||
"Create a logged in context.
|
"Create a logged in context.
|
||||||
Options for communication style
|
Options for communication style
|
||||||
|
|
|
@ -56,11 +56,6 @@ See http://code.google.com/p/jclouds for details."
|
||||||
com.google.common.collect.ImmutableSet
|
com.google.common.collect.ImmutableSet
|
||||||
org.jclouds.encryption.internal.JCECrypto))
|
org.jclouds.encryption.internal.JCECrypto))
|
||||||
|
|
||||||
(try
|
|
||||||
(require '[clojure.contrib.io :as io])
|
|
||||||
(catch Exception e
|
|
||||||
(require '[clojure.contrib.duck-streams :as io])))
|
|
||||||
|
|
||||||
(def ^{:private true}
|
(def ^{:private true}
|
||||||
crypto-impl
|
crypto-impl
|
||||||
;; BouncyCastle might not be present. Try to load it, but fall back to
|
;; BouncyCastle might not be present. Try to load it, but fall back to
|
||||||
|
@ -77,11 +72,6 @@ See http://code.google.com/p/jclouds for details."
|
||||||
;; Payload support for creating Blobs.
|
;; Payload support for creating Blobs.
|
||||||
;;
|
;;
|
||||||
|
|
||||||
(def ^{:doc "Type object for a Java primitive byte array, for use in the
|
|
||||||
PayloadSource protocol."
|
|
||||||
:private true}
|
|
||||||
byte-array-type (class (make-array Byte/TYPE 0)))
|
|
||||||
|
|
||||||
(defprotocol PayloadSource
|
(defprotocol PayloadSource
|
||||||
"Various types can have PayloadSource extended onto them so that they are
|
"Various types can have PayloadSource extended onto them so that they are
|
||||||
easily coerced into a Payload."
|
easily coerced into a Payload."
|
||||||
|
@ -92,8 +82,6 @@ See http://code.google.com/p/jclouds for details."
|
||||||
(payload [p] p)
|
(payload [p] p)
|
||||||
java.io.InputStream
|
java.io.InputStream
|
||||||
(payload [is] (Payloads/newInputStreamPayload is))
|
(payload [is] (Payloads/newInputStreamPayload is))
|
||||||
byte-array-type
|
|
||||||
(payload [ba] (Payloads/newByteArrayPayload ba))
|
|
||||||
String
|
String
|
||||||
(payload [s] (Payloads/newStringPayload s))
|
(payload [s] (Payloads/newStringPayload s))
|
||||||
java.io.File
|
java.io.File
|
||||||
|
@ -106,6 +94,13 @@ See http://code.google.com/p/jclouds for details."
|
||||||
(writeTo [this output-stream]
|
(writeTo [this output-stream]
|
||||||
(func output-stream))))))
|
(func output-stream))))))
|
||||||
|
|
||||||
|
;; something in clojure 1.3 (namespaces?) does not like a private type called byte-array-type,
|
||||||
|
;; so we refer to (class (make-array ...)) directly; and it only parses if it is its own block,
|
||||||
|
;; hence separating it from the above
|
||||||
|
(extend-protocol PayloadSource
|
||||||
|
(class (make-array Byte/TYPE 0))
|
||||||
|
(payload [ba] (Payloads/newByteArrayPayload ba)))
|
||||||
|
|
||||||
(defn blobstore
|
(defn blobstore
|
||||||
"Create a logged in context.
|
"Create a logged in context.
|
||||||
Options for communication style
|
Options for communication style
|
||||||
|
|
|
@ -30,7 +30,6 @@ Current supported providers are:
|
||||||
Here's an example of getting some compute configuration from rackspace:
|
Here's an example of getting some compute configuration from rackspace:
|
||||||
|
|
||||||
(use 'org.jclouds.compute)
|
(use 'org.jclouds.compute)
|
||||||
(use 'clojure.contrib.pprint)
|
|
||||||
|
|
||||||
(def provider \"cloudservers\")
|
(def provider \"cloudservers\")
|
||||||
(def provider-identity \"username\")
|
(def provider-identity \"username\")
|
||||||
|
@ -57,10 +56,7 @@ webserver:
|
||||||
(create-node \"webserver\" compute)
|
(create-node \"webserver\" compute)
|
||||||
|
|
||||||
See http://code.google.com/p/jclouds for details."
|
See http://code.google.com/p/jclouds for details."
|
||||||
(:use org.jclouds.core
|
(:use org.jclouds.core (clojure.core incubator))
|
||||||
(clojure.contrib logging core))
|
|
||||||
(:require
|
|
||||||
[clojure.contrib.condition :as condition])
|
|
||||||
(:import java.io.File
|
(:import java.io.File
|
||||||
java.util.Properties
|
java.util.Properties
|
||||||
[org.jclouds.domain Location]
|
[org.jclouds.domain Location]
|
||||||
|
@ -74,13 +70,6 @@ See http://code.google.com/p/jclouds for details."
|
||||||
NodePredicates]
|
NodePredicates]
|
||||||
[com.google.common.collect ImmutableSet]))
|
[com.google.common.collect ImmutableSet]))
|
||||||
|
|
||||||
(try
|
|
||||||
(use '[clojure.contrib.reflect :only [get-field]])
|
|
||||||
(catch Exception e
|
|
||||||
(use '[clojure.contrib.java-utils
|
|
||||||
:only [wall-hack-field]
|
|
||||||
:rename {wall-hack-field get-field}])))
|
|
||||||
|
|
||||||
(defmacro deprecate-fwd [old-name new-name] `(defn ~old-name {:deprecated "beta-9"} [& args#] (apply ~new-name args#)))
|
(defmacro deprecate-fwd [old-name new-name] `(defn ~old-name {:deprecated "beta-9"} [& args#] (apply ~new-name args#)))
|
||||||
|
|
||||||
(defn compute-service
|
(defn compute-service
|
||||||
|
@ -455,19 +444,15 @@ Options correspond to TemplateBuilder methods."
|
||||||
(let [builder (.. compute (templateBuilder))]
|
(let [builder (.. compute (templateBuilder))]
|
||||||
(doseq [[option value] options]
|
(doseq [[option value] options]
|
||||||
(when-not (known-template-options option)
|
(when-not (known-template-options option)
|
||||||
(condition/raise
|
(throw (Exception. (format "Invalid template builder option : %s" option))))
|
||||||
:type :invalid-template-builder-option
|
|
||||||
:message (format "Invalid template builder option : %s" option)))
|
|
||||||
;; apply template builder options
|
;; apply template builder options
|
||||||
(try
|
(try
|
||||||
(apply-option builder template-map option value)
|
(apply-option builder template-map option value)
|
||||||
(catch Exception e
|
(catch Exception e
|
||||||
(condition/raise
|
(throw (Exception. (format
|
||||||
:type :invalid-template-builder
|
|
||||||
:message (format
|
|
||||||
"Problem applying template builder %s with value %s: %s"
|
"Problem applying template builder %s with value %s: %s"
|
||||||
option (pr-str value) (.getMessage e))
|
option (pr-str value) (.getMessage e))
|
||||||
:cause e))))
|
e)))))
|
||||||
(let [template (.build builder)
|
(let [template (.build builder)
|
||||||
template-options (.getOptions template)]
|
template-options (.getOptions template)]
|
||||||
(doseq [[option value] options]
|
(doseq [[option value] options]
|
||||||
|
@ -475,10 +460,9 @@ Options correspond to TemplateBuilder methods."
|
||||||
(try
|
(try
|
||||||
(apply-option template-options options-map option value)
|
(apply-option template-options options-map option value)
|
||||||
(catch Exception e
|
(catch Exception e
|
||||||
(condition/raise
|
(throw (Exception.
|
||||||
:type :invalid-template-option
|
(format
|
||||||
:message (format
|
|
||||||
"Problem applying template option %s with value %s: %s"
|
"Problem applying template option %s with value %s: %s"
|
||||||
option (pr-str value) (.getMessage e))
|
option (pr-str value) (.getMessage e))
|
||||||
:cause e))))
|
e)))))
|
||||||
template)))
|
template)))
|
||||||
|
|
|
@ -60,10 +60,7 @@ Here's an example of creating and running a small linux node in the group webser
|
||||||
See http://code.google.com/p/jclouds for details.
|
See http://code.google.com/p/jclouds for details.
|
||||||
"
|
"
|
||||||
(:use org.jclouds.core
|
(:use org.jclouds.core
|
||||||
(clojure.contrib logging core)
|
(org.jclouds predicate) (clojure.core incubator))
|
||||||
(org.jclouds predicate))
|
|
||||||
(:require
|
|
||||||
[clojure.contrib.condition :as condition])
|
|
||||||
(:import java.io.File
|
(:import java.io.File
|
||||||
java.util.Properties
|
java.util.Properties
|
||||||
[org.jclouds.domain Location]
|
[org.jclouds.domain Location]
|
||||||
|
@ -79,13 +76,6 @@ Here's an example of creating and running a small linux node in the group webser
|
||||||
[com.google.common.collect ImmutableSet])
|
[com.google.common.collect ImmutableSet])
|
||||||
)
|
)
|
||||||
|
|
||||||
(try
|
|
||||||
(use '[clojure.contrib.reflect :only [get-field]])
|
|
||||||
(catch Exception e
|
|
||||||
(use '[clojure.contrib.java-utils
|
|
||||||
:only [wall-hack-field]
|
|
||||||
:rename {wall-hack-field get-field}])))
|
|
||||||
|
|
||||||
(defn compute-service
|
(defn compute-service
|
||||||
"Create a logged in context."
|
"Create a logged in context."
|
||||||
([#^String provider #^String provider-identity #^String provider-credential
|
([#^String provider #^String provider-identity #^String provider-credential
|
||||||
|
@ -407,19 +397,16 @@ Options correspond to TemplateBuilder methods."
|
||||||
(let [builder (.. compute (templateBuilder))]
|
(let [builder (.. compute (templateBuilder))]
|
||||||
(doseq [[option value] options]
|
(doseq [[option value] options]
|
||||||
(when-not (known-template-options option)
|
(when-not (known-template-options option)
|
||||||
(condition/raise
|
(throw (Exception. (format "Invalid template builder option : %s" option))))
|
||||||
:type :invalid-template-builder-option
|
|
||||||
:message (format "Invalid template builder option : %s" option)))
|
|
||||||
;; apply template builder options
|
;; apply template builder options
|
||||||
(try
|
(try
|
||||||
(apply-option builder template-map option value)
|
(apply-option builder template-map option value)
|
||||||
(catch Exception e
|
(catch Exception e
|
||||||
(condition/raise
|
(throw (Exception.
|
||||||
:type :invalid-template-builder
|
(format
|
||||||
:message (format
|
"Problem applying template builder %s with value %s: %s"
|
||||||
"Problem applying template builder %s with value %s: %s"
|
option (pr-str value) (.getMessage e))
|
||||||
option (pr-str value) (.getMessage e))
|
e)))))
|
||||||
:cause e))))
|
|
||||||
(let [template (.build builder)
|
(let [template (.build builder)
|
||||||
template-options (.getOptions template)]
|
template-options (.getOptions template)]
|
||||||
(doseq [[option value] options]
|
(doseq [[option value] options]
|
||||||
|
@ -427,10 +414,9 @@ Options correspond to TemplateBuilder methods."
|
||||||
(try
|
(try
|
||||||
(apply-option template-options options-map option value)
|
(apply-option template-options options-map option value)
|
||||||
(catch Exception e
|
(catch Exception e
|
||||||
(condition/raise
|
(throw (Exception.
|
||||||
:type :invalid-template-option
|
(format
|
||||||
:message (format
|
"Problem applying template option %s with value %s: %s"
|
||||||
"Problem applying template option %s with value %s: %s"
|
option (pr-str value) (.getMessage e))
|
||||||
option (pr-str value) (.getMessage e))
|
e)))))
|
||||||
:cause e))))
|
|
||||||
template)))
|
template)))
|
||||||
|
|
|
@ -23,7 +23,6 @@
|
||||||
(:require [org.jclouds.ssh-test :as ssh-test])
|
(:require [org.jclouds.ssh-test :as ssh-test])
|
||||||
(:import
|
(:import
|
||||||
org.jclouds.compute.domain.OsFamily
|
org.jclouds.compute.domain.OsFamily
|
||||||
clojure.contrib.condition.Condition
|
|
||||||
java.net.InetAddress
|
java.net.InetAddress
|
||||||
org.jclouds.scriptbuilder.domain.Statements
|
org.jclouds.scriptbuilder.domain.Statements
|
||||||
org.jclouds.compute.options.TemplateOptions
|
org.jclouds.compute.options.TemplateOptions
|
||||||
|
@ -158,4 +157,4 @@ list, Alan Dipert and MeikelBrandmeyer."
|
||||||
(-> (build-template service {:inbound-ports [22 8080]})
|
(-> (build-template service {:inbound-ports [22 8080]})
|
||||||
bean :options bean :inboundPorts))))
|
bean :options bean :inboundPorts))))
|
||||||
(testing "invalid"
|
(testing "invalid"
|
||||||
(is (thrown? Condition (build-template service {:xx :yy}))))))
|
(is (thrown? Exception (build-template service {:xx :yy}))))))
|
||||||
|
|
|
@ -21,8 +21,7 @@
|
||||||
(:use [org.jclouds.compute] :reload-all)
|
(:use [org.jclouds.compute] :reload-all)
|
||||||
(:use clojure.test)
|
(:use clojure.test)
|
||||||
(:import
|
(:import
|
||||||
org.jclouds.compute.domain.OsFamily
|
org.jclouds.compute.domain.OsFamily))
|
||||||
clojure.contrib.condition.Condition))
|
|
||||||
|
|
||||||
(defmacro with-private-vars [[ns fns] & tests]
|
(defmacro with-private-vars [[ns fns] & tests]
|
||||||
"Refers private fns from ns and runs tests in context. From users mailing
|
"Refers private fns from ns and runs tests in context. From users mailing
|
||||||
|
@ -128,4 +127,4 @@ list, Alan Dipert and MeikelBrandmeyer."
|
||||||
(-> (build-template service {:inbound-ports [22 8080]})
|
(-> (build-template service {:inbound-ports [22 8080]})
|
||||||
bean :options bean :inboundPorts))))
|
bean :options bean :inboundPorts))))
|
||||||
(testing "invalid"
|
(testing "invalid"
|
||||||
(is (thrown? Condition (build-template service {:xx :yy}))))))
|
(is (thrown? Exception (build-template service {:xx :yy}))))))
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
|
|
||||||
(ns org.jclouds.ssh-test
|
(ns org.jclouds.ssh-test
|
||||||
(:require
|
(:require
|
||||||
[clojure.contrib.logging :as logging])
|
[clojure.tools.logging :as logging])
|
||||||
(:import
|
(:import
|
||||||
org.jclouds.ssh.SshClient
|
org.jclouds.ssh.SshClient
|
||||||
org.jclouds.domain.Credentials
|
org.jclouds.domain.Credentials
|
||||||
|
|
|
@ -19,14 +19,10 @@
|
||||||
|
|
||||||
(ns org.jclouds.core
|
(ns org.jclouds.core
|
||||||
"Core functionality used across blobstore and compute."
|
"Core functionality used across blobstore and compute."
|
||||||
(:use clojure.contrib.logging)
|
(:use clojure.tools.logging)
|
||||||
(:import java.io.File
|
(:import java.io.File
|
||||||
(com.google.common.collect ImmutableSet)))
|
(com.google.common.collect ImmutableSet))
|
||||||
|
(:require [clojure.string :as string]))
|
||||||
(try
|
|
||||||
(require '[clojure.contrib.string :as string])
|
|
||||||
(catch Exception e
|
|
||||||
(require '[clojure.contrib.str-utils2 :as string])))
|
|
||||||
|
|
||||||
(def module-lookup
|
(def module-lookup
|
||||||
{:log4j 'org.jclouds.logging.log4j.config.Log4JLoggingModule
|
{:log4j 'org.jclouds.logging.log4j.config.Log4JLoggingModule
|
||||||
|
@ -73,11 +69,17 @@ Ensure the module is on the classpath. You are maybe missing a dependency on
|
||||||
(apply
|
(apply
|
||||||
str (interpose "-" (map string/lower-case (re-seq #"[A-Z][^A-Z]*" a)))))
|
str (interpose "-" (map string/lower-case (re-seq #"[A-Z][^A-Z]*" a)))))
|
||||||
|
|
||||||
|
(defn ^String map-str
|
||||||
|
"Apply f to each element of coll, concatenate all results into a
|
||||||
|
String."
|
||||||
|
[f coll]
|
||||||
|
(apply str (map f coll)))
|
||||||
|
|
||||||
(defn camelize
|
(defn camelize
|
||||||
"Takes a string, or anything named, and converts it to camel case
|
"Takes a string, or anything named, and converts it to camel case
|
||||||
(capitalised initial component"
|
(capitalised initial component"
|
||||||
[a]
|
[a]
|
||||||
(string/map-str string/capitalize (.split (name a) "-")))
|
(map-str string/capitalize (.split (name a) "-")))
|
||||||
|
|
||||||
(defn camelize-mixed
|
(defn camelize-mixed
|
||||||
"Takes a string, or anything named, and converts it to mixed camel case
|
"Takes a string, or anything named, and converts it to mixed camel case
|
||||||
|
|
|
@ -236,8 +236,14 @@
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.clojure</groupId>
|
<groupId>org.clojure</groupId>
|
||||||
<artifactId>clojure-contrib</artifactId>
|
<artifactId>tools.logging</artifactId>
|
||||||
<version>1.2.0</version>
|
<version>0.2.3</version>
|
||||||
|
<optional>true</optional>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.clojure</groupId>
|
||||||
|
<artifactId>core.incubator</artifactId>
|
||||||
|
<version>0.1.0</version>
|
||||||
<optional>true</optional>
|
<optional>true</optional>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
|
@ -689,23 +695,6 @@ pageTracker._trackPageview();
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
</profile>
|
</profile>
|
||||||
<profile>
|
|
||||||
<id>clojure-1.1</id>
|
|
||||||
<dependencies>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.clojure</groupId>
|
|
||||||
<artifactId>clojure</artifactId>
|
|
||||||
<version>1.1.0</version>
|
|
||||||
<optional>true</optional>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.clojure</groupId>
|
|
||||||
<artifactId>clojure-contrib</artifactId>
|
|
||||||
<version>1.1.0</version>
|
|
||||||
<optional>true</optional>
|
|
||||||
</dependency>
|
|
||||||
</dependencies>
|
|
||||||
</profile>
|
|
||||||
<profile>
|
<profile>
|
||||||
<id>site</id>
|
<id>site</id>
|
||||||
<build>
|
<build>
|
||||||
|
|
Loading…
Reference in New Issue