Merge pull request #117 from caskdata/fix/cdh5.7.0

TEPHRA-174 Added support for HBase version 1.2.0-cdh5.7.0
diff --git a/README.rst b/README.rst
index 6c041d5..076cc3b 100644
--- a/README.rst
+++ b/README.rst
@@ -103,19 +103,19 @@
 +===============+===================+=========================================================+
 | **HDFS**      | Apache Hadoop     | 2.0.2-alpha through 2.6.0                               |
 +               +-------------------+---------------------------------------------------------+
-|               | CDH or HDP        | (CDH) 5.0.0 through 5.4.4 or (HDP) 2.0, 2.1, 2.2 or 2.3 |
+|               | CDH or HDP        | (CDH) 5.0.0 through 5.7.0 or (HDP) 2.0, 2.1, 2.2 or 2.3 |
 +               +-------------------+---------------------------------------------------------+
 |               | MapR              | 4.1 (with MapR-FS)                                      |
 +---------------+-------------------+---------------------------------------------------------+
 | **HBase**     | Apache            | 0.96.x, 0.98.x, 1.0.x, and 1.1.x                        |
 +               +-------------------+---------------------------------------------------------+
-|               | CDH or HDP        | (CDH) 5.0.0 through 5.4.4 or (HDP) 2.0, 2.1, 2.2 or 2.3 |
+|               | CDH or HDP        | (CDH) 5.0.0 through 5.7.0 or (HDP) 2.0, 2.1, 2.2 or 2.3 |
 +               +-------------------+---------------------------------------------------------+
 |               | MapR              | 4.1 (with Apache HBase)                                 |
 +---------------+-------------------+---------------------------------------------------------+
 | **Zookeeper** | Apache            | Version 3.4.3 through 3.4.5                             |
 +               +-------------------+---------------------------------------------------------+
-|               | CDH or HDP        | (CDH) 5.0.0 through 5.4.4 or (HDP) 2.0, 2.1, 2.2 or 2.3 |
+|               | CDH or HDP        | (CDH) 5.0.0 through 5.7.0 or (HDP) 2.0, 2.1, 2.2 or 2.3 |
 +               +-------------------+---------------------------------------------------------+
 |               | MapR              | 4.1                                                     |
 +---------------+-------------------+---------------------------------------------------------+
@@ -144,12 +144,12 @@
   <dependency>
     <groupId>co.cask.tephra</groupId>
     <artifactId>tephra-api</artifactId>
-    <version>0.6.2</version>
+    <version>0.7.1</version>
   </dependency>
   <dependency>
     <groupId>co.cask.tephra</groupId>
     <artifactId>tephra-core</artifactId>
-    <version>0.6.2</version>
+    <version>0.7.1</version>
   </dependency>
 
 Since the HBase APIs have changed between versions, you will need to select the
@@ -160,7 +160,7 @@
   <dependency>
     <groupId>co.cask.tephra</groupId>
     <artifactId>tephra-hbase-compat-0.96</artifactId>
-    <version>0.6.2</version>
+    <version>0.7.1</version>
   </dependency>
 
 For HBase 0.98.x::
@@ -168,7 +168,7 @@
   <dependency>
     <groupId>co.cask.tephra</groupId>
     <artifactId>tephra-hbase-compat-0.98</artifactId>
-    <version>0.6.2</version>
+    <version>0.7.1</version>
   </dependency>
 
 For HBase 1.0.x::
@@ -176,24 +176,24 @@
   <dependency>
     <groupId>co.cask.tephra</groupId>
     <artifactId>tephra-hbase-compat-1.0</artifactId>
-    <version>0.6.2</version>
+    <version>0.7.1</version>
   </dependency>
 
-If you are running the CDH 5.4 version of HBase 1.0.x (this version contains API incompatibilities
+If you are running the CDH 5.4, 5.5, or 5.6 version of HBase 1.0.x (this version contains API incompatibilities
 with Apache HBase 1.0.x)::
 
   <dependency>
     <groupId>co.cask.tephra</groupId>
     <artifactId>tephra-hbase-compat-1.0-cdh</artifactId>
-    <version>0.6.2</version>
+    <version>0.7.1</version>
   </dependency>
 
-For HBase 1.1.x::
+For HBase 1.1.x or CDH 5.7 version of HBase 1.2.x::
 
   <dependency>
     <groupId>co.cask.tephra</groupId>
     <artifactId>tephra-hbase-compat-1.1</artifactId>
-    <version>0.6.2</version>
+    <version>0.7.1</version>
   </dependency>
 
 Deployment and Configuration
@@ -298,35 +298,35 @@
 
 To configure the coprocessor on all HBase tables, add the following to ``hbase-site.xml``.
 
-For HBase 0.96::
+For HBase 0.96.x::
 
   <property>
     <name>hbase.coprocessor.region.classes</name>
     <value>co.cask.tephra.hbase96.coprocessor.TransactionProcessor</value>
   </property>
 
-For HBase 0.98::
+For HBase 0.98.x::
 
   <property>
     <name>hbase.coprocessor.region.classes</name>
     <value>co.cask.tephra.hbase98.coprocessor.TransactionProcessor</value>
   </property>
 
-For HBase 1.0::
+For HBase 1.0.x::
 
   <property>
     <name>hbase.coprocessor.region.classes</name>
     <value>co.cask.tephra.hbase10.coprocessor.TransactionProcessor</value>
   </property>
 
-For the CDH 5.4 version of HBase 1.0::
+For the CDH 5.4, 5.5, or 5.6 version of HBase 1.0.x::
 
   <property>
     <name>hbase.coprocessor.region.classes</name>
     <value>co.cask.tephra.hbase10cdh.coprocessor.TransactionProcessor</value>
   </property>
 
-For HBase 1.1::
+For HBase 1.1.x or CDH 5.7 version of HBase 1.2.x::
 
   <property>
     <name>hbase.coprocessor.region.classes</name>
diff --git a/tephra-core/src/main/java/co/cask/tephra/util/HBaseVersion.java b/tephra-core/src/main/java/co/cask/tephra/util/HBaseVersion.java
index 6db7c2a..44946e5 100644
--- a/tephra-core/src/main/java/co/cask/tephra/util/HBaseVersion.java
+++ b/tephra-core/src/main/java/co/cask/tephra/util/HBaseVersion.java
@@ -1,5 +1,5 @@
 /*
- * Copyright © 2015 Cask Data, Inc.
+ * Copyright © 2015-2016 Cask Data, Inc.
  *
  * 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
@@ -34,6 +34,7 @@
   private static final String HBASE_98_VERSION = "0.98";
   private static final String HBASE_10_VERSION = "1.0";
   private static final String HBASE_11_VERSION = "1.1";
+  private static final String HBASE_12_VERSION = "1.2";
   private static final String CDH_CLASSIFIER = "cdh";
 
   private static final Logger LOG = LoggerFactory.getLogger(HBaseVersion.class);
@@ -48,6 +49,7 @@
     HBASE_10("1.0"),
     HBASE_10_CDH("1.0-cdh"),
     HBASE_11("1.1"),
+    HBASE_12_CDH("1.2-cdh"),
     UNKNOWN("unknown");
 
     final String majorVersion;
@@ -83,6 +85,15 @@
         }
       } else if (versionString.startsWith(HBASE_11_VERSION)) {
         currentVersion = Version.HBASE_11;
+      } else if (versionString.startsWith(HBASE_12_VERSION)) {
+        VersionNumber ver = VersionNumber.create(versionString);
+        if (ver.getClassifier() != null && ver.getClassifier().startsWith(CDH_CLASSIFIER)) {
+          currentVersion = Version.HBASE_12_CDH;
+        } else {
+          // CDH 5.7 comes with HBase version 1.2.0-CDH5.7.0. However currently there is no
+          // other hadoop distribution that uses HBase 1.2, so the version is set here to UNKNOWN.
+          currentVersion = Version.UNKNOWN;
+        }
       } else {
         currentVersion = Version.UNKNOWN;
       }
diff --git a/tephra-core/src/main/java/co/cask/tephra/util/HBaseVersionSpecificFactory.java b/tephra-core/src/main/java/co/cask/tephra/util/HBaseVersionSpecificFactory.java
index c50c8cb..0079d4f 100644
--- a/tephra-core/src/main/java/co/cask/tephra/util/HBaseVersionSpecificFactory.java
+++ b/tephra-core/src/main/java/co/cask/tephra/util/HBaseVersionSpecificFactory.java
@@ -1,5 +1,5 @@
 /*
- * Copyright © 2015 Cask Data, Inc.
+ * Copyright © 2015-2016 Cask Data, Inc.
  *
  * 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
@@ -47,6 +47,7 @@
           instance = createInstance(getHBase10CDHClassname());
           break;
         case HBASE_11:
+        case HBASE_12_CDH:
           instance = createInstance(getHBase11Classname());
           break;
         case UNKNOWN:
diff --git a/tephra-core/src/test/java/co/cask/tephra/util/HBaseVersionTest.java b/tephra-core/src/test/java/co/cask/tephra/util/HBaseVersionTest.java
index d6969a8..6a4a1c6 100644
--- a/tephra-core/src/test/java/co/cask/tephra/util/HBaseVersionTest.java
+++ b/tephra-core/src/test/java/co/cask/tephra/util/HBaseVersionTest.java
@@ -76,6 +76,9 @@
     } catch (ParseException pe) {
       // expected
     }
+
+    ver = HBaseVersion.VersionNumber.create("1.2.0-CDH5.7.0");
+    assertVersionNumber(ver, 1, 2, 0, "CDH5.7.0", false);
   }
 
   private void assertVersionNumber(HBaseVersion.VersionNumber version, Integer expectedMajor, Integer expectedMinor,