From 7df83eaa091104a1d745f7ffd38e47d1c8b3cda2 Mon Sep 17 00:00:00 2001
From: Connor McCoy <connormccoy@google.com>
Date: Thu, 20 Aug 2015 11:08:56 -0700
Subject: [PATCH] [hbase] Separate hbase094, hbase098, hbase10 bindings.

HBase 0.94 requires an additional dependency on hadoop-core, but has no
source-level changes to the client.
---
 bin/ycsb                                      |  5 +-
 distribution/pom.xml                          |  9 ++-
 hbase094/README.md                            | 23 +++++++
 hbase094/pom.xml                              | 68 +++++++++++++++++++
 {hbase => hbase098}/README.md                 |  7 +-
 {hbase => hbase098}/pom.xml                   |  8 +--
 .../java/com/yahoo/ycsb/db/HBaseClient.java   |  0
 {hbase1 => hbase10}/README.md                 |  0
 {hbase1 => hbase10}/pom.xml                   |  6 +-
 .../java/com/yahoo/ycsb/db/HBaseClient10.java |  0
 pom.xml                                       | 10 +--
 11 files changed, 118 insertions(+), 18 deletions(-)
 create mode 100644 hbase094/README.md
 create mode 100644 hbase094/pom.xml
 rename {hbase => hbase098}/README.md (92%)
 rename {hbase => hbase098}/pom.xml (91%)
 rename {hbase => hbase098}/src/main/java/com/yahoo/ycsb/db/HBaseClient.java (100%)
 rename {hbase1 => hbase10}/README.md (100%)
 rename {hbase1 => hbase10}/pom.xml (94%)
 rename {hbase1 => hbase10}/src/main/java/com/yahoo/ycsb/db/HBaseClient10.java (100%)

diff --git a/bin/ycsb b/bin/ycsb
index 1f836486..d18de33c 100755
--- a/bin/ycsb
+++ b/bin/ycsb
@@ -55,8 +55,9 @@ DATABASES = {
     "dynamodb"     : "com.yahoo.ycsb.db.DynamoDBClient",
     "elasticsearch": "com.yahoo.ycsb.db.ElasticSearchClient",
     "gemfire"      : "com.yahoo.ycsb.db.GemFireClient",
-    "hbase"        : "com.yahoo.ycsb.db.HBaseClient",
-    "hbase1"       : "com.yahoo.ycsb.db.HBaseClient10",
+    "hbase094"     : "com.yahoo.ycsb.db.HBaseClient",
+    "hbase098"     : "com.yahoo.ycsb.db.HBaseClient",
+    "hbase10"      : "com.yahoo.ycsb.db.HBaseClient10",
     "hypertable"   : "com.yahoo.ycsb.db.HypertableClient",
     "infinispan-cs": "com.yahoo.ycsb.db.InfinispanRemoteClient",
     "infinispan"   : "com.yahoo.ycsb.db.InfinispanClient",
diff --git a/distribution/pom.xml b/distribution/pom.xml
index 66675125..82592028 100644
--- a/distribution/pom.xml
+++ b/distribution/pom.xml
@@ -76,12 +76,17 @@ LICENSE file.
     </dependency>
     <dependency>
       <groupId>com.yahoo.ycsb</groupId>
-      <artifactId>hbase-binding</artifactId>
+      <artifactId>hbase094-binding</artifactId>
       <version>${project.version}</version>
     </dependency>
     <dependency>
       <groupId>com.yahoo.ycsb</groupId>
-      <artifactId>hbase1-binding</artifactId>
+      <artifactId>hbase098-binding</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>com.yahoo.ycsb</groupId>
+      <artifactId>hbase10-binding</artifactId>
       <version>${project.version}</version>
     </dependency>
     <dependency>
diff --git a/hbase094/README.md b/hbase094/README.md
new file mode 100644
index 00000000..3df8264c
--- /dev/null
+++ b/hbase094/README.md
@@ -0,0 +1,23 @@
+<!--
+Copyright (c) 2015 YCSB contributors. All rights reserved.
+
+Licensed under the Apache License, Version 2.0 (the "License"); you
+may not use this file except in compliance with the License. You
+may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+implied. See the License for the specific language governing
+permissions and limitations under the License. See accompanying
+LICENSE file.
+-->
+
+# HBase (0.94.x) Driver for YCSB
+This driver is a binding for the YCSB facilities to operate against a HBase 0.94.x Server cluster. It may also work against 0.92.x
+To run against an HBase 0.98.x cluster, use the `hbase098` binding.
+To run against an HBase >= 1.0 cluster, use the `hbase10` binding.
+
+See `hbase098/README.md` for configuration details.
diff --git a/hbase094/pom.xml b/hbase094/pom.xml
new file mode 100644
index 00000000..3a3ea06e
--- /dev/null
+++ b/hbase094/pom.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Copyright (c) 2012 - 2015 YCSB contributors. All rights reserved.
+
+Licensed under the Apache License, Version 2.0 (the "License"); you
+may not use this file except in compliance with the License. You
+may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+implied. See the License for the specific language governing
+permissions and limitations under the License. See accompanying
+LICENSE file.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>com.yahoo.ycsb</groupId>
+    <artifactId>binding-parent</artifactId>
+    <version>0.4.0-SNAPSHOT</version>
+    <relativePath>../binding-parent/</relativePath>
+  </parent>
+
+  <artifactId>hbase094-binding</artifactId>
+  <name>HBase 0.94.x DB Binding</name>
+
+  <dependencies>
+    <!-- This binding is identical to the HBase 0.98, other than dependencies. -->
+    <dependency>
+      <groupId>org.apache.hbase</groupId>
+      <artifactId>hbase</artifactId>
+      <version>${hbase094.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.hadoop</groupId>
+      <artifactId>hadoop-core</artifactId>
+      <version>1.0.4</version>
+    </dependency>
+    <dependency>
+      <groupId>com.yahoo.ycsb</groupId>
+      <artifactId>hbase098-binding</artifactId>
+      <version>${project.version}</version>
+      <exclusions>
+      <!-- HBase 0.98.0 depends on hbase-client, HBase 0.94.0 on hbase.
+           Override all dependencies. -->
+        <exclusion>
+          <groupId>*</groupId>
+          <artifactId>*</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-simple</artifactId>
+      <version>1.7.12</version>
+    </dependency>
+    <dependency>
+      <groupId>com.yahoo.ycsb</groupId>
+      <artifactId>core</artifactId>
+      <version>${project.version}</version>
+      <scope>provided</scope>
+    </dependency>
+  </dependencies>
+</project>
diff --git a/hbase/README.md b/hbase098/README.md
similarity index 92%
rename from hbase/README.md
rename to hbase098/README.md
index 9bc01c4c..fc75c626 100644
--- a/hbase/README.md
+++ b/hbase098/README.md
@@ -15,9 +15,10 @@ permissions and limitations under the License. See accompanying
 LICENSE file.
 -->
 
-# HBase (0.9x) Driver for YCSB
-This driver is a binding for the YCSB facilities to operate against a HBase 0.9x Server cluster.
-To run against an HBase >= 1.0 cluster, use the `hbase1` binding.
+# HBase (0.98.x) Driver for YCSB
+This driver is a binding for the YCSB facilities to operate against a HBase 0.98.x Server cluster.
+To run against an HBase 0.94.x cluster, use the `hbase094` binding.
+To run against an HBase >= 1.0 cluster, use the `hbase10` binding.
 
 ## Quickstart
 
diff --git a/hbase/pom.xml b/hbase098/pom.xml
similarity index 91%
rename from hbase/pom.xml
rename to hbase098/pom.xml
index 1d42f71b..627f31e8 100644
--- a/hbase/pom.xml
+++ b/hbase098/pom.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- 
+<!--
 Copyright (c) 2012 - 2015 YCSB contributors. All rights reserved.
 
 Licensed under the Apache License, Version 2.0 (the "License"); you
@@ -25,14 +25,14 @@ LICENSE file.
     <relativePath>../binding-parent/</relativePath>
   </parent>
 
-  <artifactId>hbase-binding</artifactId>
-  <name>HBase 0.9x DB Binding</name>
+  <artifactId>hbase098-binding</artifactId>
+  <name>HBase 0.98.x DB Binding</name>
 
   <dependencies>
     <dependency>
       <groupId>org.apache.hbase</groupId>
       <artifactId>hbase-client</artifactId>
-      <version>${hbase.version}</version>
+      <version>${hbase098.version}</version>
     </dependency>
     <dependency>
       <groupId>com.yahoo.ycsb</groupId>
diff --git a/hbase/src/main/java/com/yahoo/ycsb/db/HBaseClient.java b/hbase098/src/main/java/com/yahoo/ycsb/db/HBaseClient.java
similarity index 100%
rename from hbase/src/main/java/com/yahoo/ycsb/db/HBaseClient.java
rename to hbase098/src/main/java/com/yahoo/ycsb/db/HBaseClient.java
diff --git a/hbase1/README.md b/hbase10/README.md
similarity index 100%
rename from hbase1/README.md
rename to hbase10/README.md
diff --git a/hbase1/pom.xml b/hbase10/pom.xml
similarity index 94%
rename from hbase1/pom.xml
rename to hbase10/pom.xml
index 6d5ea1fd..77693b16 100644
--- a/hbase1/pom.xml
+++ b/hbase10/pom.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- 
+<!--
 Copyright (c) 2012 - 2015 YCSB contributors. All rights reserved.
 
 Licensed under the Apache License, Version 2.0 (the "License"); you
@@ -25,14 +25,14 @@ LICENSE file.
     <relativePath>../binding-parent/</relativePath>
   </parent>
 
-  <artifactId>hbase1-binding</artifactId>
+  <artifactId>hbase10-binding</artifactId>
   <name>HBase 1.0 DB Binding</name>
 
   <dependencies>
     <dependency>
       <groupId>org.apache.hbase</groupId>
       <artifactId>hbase-client</artifactId>
-      <version>${hbase1.version}</version>
+      <version>${hbase10.version}</version>
     </dependency>
     <dependency>
       <groupId>com.yahoo.ycsb</groupId>
diff --git a/hbase1/src/main/java/com/yahoo/ycsb/db/HBaseClient10.java b/hbase10/src/main/java/com/yahoo/ycsb/db/HBaseClient10.java
similarity index 100%
rename from hbase1/src/main/java/com/yahoo/ycsb/db/HBaseClient10.java
rename to hbase10/src/main/java/com/yahoo/ycsb/db/HBaseClient10.java
diff --git a/pom.xml b/pom.xml
index 9e15425f..c47cb468 100644
--- a/pom.xml
+++ b/pom.xml
@@ -69,8 +69,9 @@ LICENSE file.
   <properties>
     <maven.assembly.version>2.5.5</maven.assembly.version>
     <maven.dependency.version>2.10</maven.dependency.version>
-    <hbase.version>0.98.13-hadoop2</hbase.version>
-    <hbase1.version>1.0.0</hbase1.version>
+    <hbase094.version>0.94.27</hbase094.version>
+    <hbase098.version>0.98.13-hadoop2</hbase098.version>
+    <hbase10.version>1.0.1.1</hbase10.version>
     <accumulo.version>1.6.0</accumulo.version>
     <cassandra.version>1.2.9</cassandra.version>
     <cassandra.cql.version>1.0.3</cassandra.cql.version>
@@ -104,8 +105,9 @@ LICENSE file.
     <module>dynamodb</module>
     <module>elasticsearch</module>
     <module>gemfire</module>
-    <module>hbase</module>
-    <module>hbase1</module>
+    <module>hbase094</module>
+    <module>hbase098</module>
+    <module>hbase10</module>
     <module>hypertable</module>
     <module>infinispan</module>
     <module>jdbc</module>
-- 
GitLab