From 8dcc99f82fdbcc09ed91fa082e8785d23f48e2a0 Mon Sep 17 00:00:00 2001 From: Rasmus Buchmann Date: Thu, 26 Jan 2017 16:04:00 +0100 Subject: [PATCH 1/2] Update to Solr 6.4.0 --- project.clj | 6 +++--- src/flux/client.clj | 30 +++++++++++++++--------------- src/flux/cloud.clj | 8 ++++---- src/flux/http.clj | 4 ++-- src/flux/query.clj | 6 +++++- src/flux/update.clj | 10 ++++------ test/flux/unit/response.clj | 4 ++-- 7 files changed, 35 insertions(+), 33 deletions(-) diff --git a/project.clj b/project.clj index 0c12b3b..148629e 100644 --- a/project.clj +++ b/project.clj @@ -1,11 +1,11 @@ -(defproject com.codesignals/flux "0.6.0" +(defproject com.codesignals/flux "0.7.0" :description "A clojure client library for Solr" :url "http://example.com/FIXME" :license {:name "Eclipse Public License" :url "http://www.eclipse.org/legal/epl-v10.html"} :dependencies [[org.clojure/clojure "1.7.0"] - [org.apache.solr/solr-core "5.4.0"] - [org.apache.solr/solr-solrj "5.4.0"]] + [org.apache.solr/solr-core "6.4.0"] + [org.apache.solr/solr-solrj "6.4.0"]] :profiles {:dev {:dependencies [[midje "1.6.3"] [org.slf4j/slf4j-log4j12 "1.7.7"] [commons-logging "1.1.3"]] diff --git a/src/flux/client.clj b/src/flux/client.clj index 14483e9..38942fd 100644 --- a/src/flux/client.clj +++ b/src/flux/client.clj @@ -2,13 +2,13 @@ (require [flux.update :refer [create-doc]] [flux.query :refer [create-query]] [flux.response :refer [->clojure]]) - (import [org.apache.solr.client.solrj SolrServer] + (import [org.apache.solr.client.solrj SolrClient] [org.apache.solr.common SolrInputDocument])) -(defn query [^SolrServer solr-server query & [options]] +(defn query [^SolrClient solr-server query & [options]] (->clojure (.query solr-server (create-query query options)))) -(defn request [^SolrServer solr-server request] +(defn request [^SolrClient solr-server request] (->clojure (.request solr-server request))) (defmulti add @@ -17,39 +17,39 @@ (map? input) :one :else :default))) -(defmethod add :one [^SolrServer client doc & {:as opts}] +(defmethod add :one [^SolrClient client doc & {:as opts}] (->clojure (.add client (create-doc doc)))) -(defmethod add :default [^SolrServer client docs & {:as opts}] +(defmethod add :default [^SolrClient client docs & {:as opts}] (->clojure (.add client ^java.util.Collection (map create-doc docs)))) -(defn commit [^SolrServer client & {:as opts}] +(defn commit [^SolrClient client & {:as opts}] (->clojure (.commit client))) (letfn [(v [x] (cond (keyword? x) (name x) :else (str x)))] - (defn delete-by-id [^SolrServer client ids & {:as opts}] + (defn delete-by-id [^SolrClient client ids & {:as opts}] (->clojure (let [ids (if (coll? ids) (map v ids) (v ids))] - (.deleteById ^SolrServer client ^java.util.List ids))))) + (.deleteById ^SolrClient client ^java.util.List ids))))) -(defn delete-by-query [^SolrServer client q & {:as opts}] +(defn delete-by-query [^SolrClient client q & {:as opts}] (->clojure (.deleteByQuery client q))) (defn optimize - ([^SolrServer client] + ([^SolrClient client] (->clojure (.optimize client))) - ([^SolrServer client wait-flush wait-searcher] + ([^SolrClient client wait-flush wait-searcher] (->clojure (.optimize client wait-flush wait-searcher))) - ([^SolrServer client wait-flush wait-searcher max-segments] + ([^SolrClient client wait-flush wait-searcher max-segments] (->clojure (.optimize client wait-flush wait-searcher max-segments)))) -(defn rollback [^SolrServer client] +(defn rollback [^SolrClient client] (->clojure (.rollback client))) -(defn shutdown [^SolrServer client] +(defn shutdown [^SolrClient client] (->clojure (.shutdown client))) -(defn ping [^SolrServer client] +(defn ping [^SolrClient client] (->clojure (.ping client))) diff --git a/src/flux/cloud.clj b/src/flux/cloud.clj index f370bfa..259594a 100644 --- a/src/flux/cloud.clj +++ b/src/flux/cloud.clj @@ -1,10 +1,10 @@ (ns flux.cloud - (import [org.apache.solr.client.solrj.impl CloudSolrServer])) + (import [org.apache.solr.client.solrj.impl CloudSolrClient])) (defn create ([zk-hosts] - (CloudSolrServer. zk-hosts)) + (CloudSolrClient. zk-hosts)) ([zk-hosts default-collection] - (let [server (CloudSolrServer. zk-hosts)] + (let [server (CloudSolrClient. zk-hosts)] (.setDefaultCollection server default-collection) - server))) \ No newline at end of file + server))) diff --git a/src/flux/http.clj b/src/flux/http.clj index 8b6a69d..23cf868 100644 --- a/src/flux/http.clj +++ b/src/flux/http.clj @@ -1,5 +1,5 @@ (ns flux.http - (import [org.apache.solr.client.solrj.impl HttpSolrServer])) + (:import (org.apache.solr.client.solrj.impl HttpSolrClient))) (defn create [base-url core-name] - (HttpSolrServer. (str base-url "/" (name core-name)))) + (HttpSolrClient. (str base-url "/" (name core-name)))) diff --git a/src/flux/query.clj b/src/flux/query.clj index bfe2d63..b40d0f3 100644 --- a/src/flux/query.clj +++ b/src/flux/query.clj @@ -8,7 +8,11 @@ :post SolrRequest$METHOD/POST}) (defn- format-param [p] - (if (keyword? p) (name p) (str p))) + (cond + (keyword? p) (name p) + (map-entry? p) (let [[k v] p] + (str (name k) ":" v)) + :default (str p))) (defn- format-values [v] (into-array (mapv format-param (if (coll? v) v [v])))) diff --git a/src/flux/update.clj b/src/flux/update.clj index e38e81f..619a68a 100644 --- a/src/flux/update.clj +++ b/src/flux/update.clj @@ -1,14 +1,12 @@ (ns flux.update - (import [org.apache.solr.common SolrInputDocument])) + (:import (org.apache.solr.common SolrInputDocument + SolrInputField))) ;; NOTE: The result of this function is a SolrInputDocument ;; which throws an exception when printed! (defn create-doc ^SolrInputDocument [document-map] (reduce-kv (fn [^SolrInputDocument doc k v] (if (map? v) - (let [m (doto (java.util.HashMap.) - (.put (name (key (first v))) (val (first v))))] - (doto doc (.addField (name k) m)) - doc) + (doto doc (.addChildDocument (create-doc v))) (doto doc (.addField (name k) v)))) - (SolrInputDocument.) document-map)) + (SolrInputDocument. (java.util.HashMap.)) document-map)) diff --git a/test/flux/unit/response.clj b/test/flux/unit/response.clj index 55e0240..3d74f95 100644 --- a/test/flux/unit/response.clj +++ b/test/flux/unit/response.clj @@ -1,7 +1,7 @@ (ns flux.unit.response - (:require [flux.update :as update] + (:require [flux.update :as update] [flux.response :refer :all] - [midje.sweet :refer :all])) + [midje.sweet :refer :all])) (fact "create-map-from-document" (let [doc (update/create-doc {:id 1})] From 49a7cfc92abbba502355291f8601e002cce2dcf1 Mon Sep 17 00:00:00 2001 From: Rasmus Buchmann Date: Tue, 7 Feb 2017 10:15:36 +0100 Subject: [PATCH 2/2] Fix imports --- src/flux/client.clj | 10 +++++----- src/flux/cloud.clj | 2 +- src/flux/core.clj | 2 +- src/flux/embedded.clj | 10 +++++----- src/flux/query.clj | 6 +++--- src/flux/response.clj | 12 +++++++----- 6 files changed, 22 insertions(+), 20 deletions(-) diff --git a/src/flux/client.clj b/src/flux/client.clj index 38942fd..848eec8 100644 --- a/src/flux/client.clj +++ b/src/flux/client.clj @@ -1,9 +1,9 @@ (ns flux.client - (require [flux.update :refer [create-doc]] - [flux.query :refer [create-query]] - [flux.response :refer [->clojure]]) - (import [org.apache.solr.client.solrj SolrClient] - [org.apache.solr.common SolrInputDocument])) + (:require [flux.update :refer [create-doc]] + [flux.query :refer [create-query]] + [flux.response :refer [->clojure]]) + (:import (org.apache.solr.client.solrj SolrClient) + (org.apache.solr.common SolrInputDocument))) (defn query [^SolrClient solr-server query & [options]] (->clojure (.query solr-server (create-query query options)))) diff --git a/src/flux/cloud.clj b/src/flux/cloud.clj index 259594a..a96de6a 100644 --- a/src/flux/cloud.clj +++ b/src/flux/cloud.clj @@ -1,5 +1,5 @@ (ns flux.cloud - (import [org.apache.solr.client.solrj.impl CloudSolrClient])) + :import (org.apache.solr.client.solrj.impl CloudSolrClient)) (defn create ([zk-hosts] diff --git a/src/flux/core.clj b/src/flux/core.clj index 7942fcd..4bc8a38 100644 --- a/src/flux/core.clj +++ b/src/flux/core.clj @@ -1,5 +1,5 @@ (ns flux.core - (require [flux.client])) + (:require [flux.client])) (def ^:dynamic *connection*) diff --git a/src/flux/embedded.clj b/src/flux/embedded.clj index b2dc78a..f0c2917 100644 --- a/src/flux/embedded.clj +++ b/src/flux/embedded.clj @@ -1,9 +1,9 @@ (ns flux.embedded - (import [java.io File] - [org.apache.solr.client.solrj.embedded EmbeddedSolrServer] - [org.apache.solr.core CoreContainer] - [java.nio.file Paths] - [java.net URI])) + (:import (java.io File) + (org.apache.solr.client.solrj.embedded EmbeddedSolrServer) + (org.apache.solr.core CoreContainer) + (java.nio.file Paths) + (java.net URI))) (defn- str->path [str-path] (-> str-path File. .toURI Paths/get)) diff --git a/src/flux/query.clj b/src/flux/query.clj index b40d0f3..7c17da9 100644 --- a/src/flux/query.clj +++ b/src/flux/query.clj @@ -1,7 +1,7 @@ (ns flux.query - (import [org.apache.solr.common.params MultiMapSolrParams] - [org.apache.solr.client.solrj.request QueryRequest] - [org.apache.solr.client.solrj SolrRequest$METHOD])) + (:import (org.apache.solr.common.params MultiMapSolrParams) + (org.apache.solr.client.solrj.request QueryRequest) + (org.apache.solr.client.solrj SolrRequest$METHOD))) (def method-map {:get SolrRequest$METHOD/GET diff --git a/src/flux/response.clj b/src/flux/response.clj index eb1ac2e..4eba4d0 100644 --- a/src/flux/response.clj +++ b/src/flux/response.clj @@ -1,9 +1,11 @@ (ns flux.response - (:import [org.apache.solr.client.solrj SolrResponse] - [org.apache.solr.common.util NamedList SimpleOrderedMap] - [org.apache.solr.common SolrDocumentList SolrDocument] - [org.apache.solr.common SolrInputDocument] - [java.util ArrayList])) + (:import (org.apache.solr.client.solrj SolrResponse) + (org.apache.solr.common.util NamedList + SimpleOrderedMap) + (org.apache.solr.common SolrDocumentList + SolrDocument) + (org.apache.solr.common SolrInputDocument) + (java.util ArrayList))) ;; TODO: Rename this ns to something like "conversion", not "response"