You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by kt...@apache.org on 2015/04/22 00:23:42 UTC

[1/9] accumulo git commit: ACCUMULO-3657 ACCUMULO-3548 Clarify Accumulo API

Repository: accumulo
Updated Branches:
  refs/heads/master 7d2eb6711 -> 4e88af793


http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/test/src/main/java/org/apache/accumulo/test/TestIngest.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/TestIngest.java b/test/src/main/java/org/apache/accumulo/test/TestIngest.java
index d4346de..a18f610 100644
--- a/test/src/main/java/org/apache/accumulo/test/TestIngest.java
+++ b/test/src/main/java/org/apache/accumulo/test/TestIngest.java
@@ -38,8 +38,8 @@ import org.apache.accumulo.core.client.security.SecurityErrorCode;
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.data.ConstraintViolationSummary;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
+import org.apache.accumulo.core.data.TabletID;
 import org.apache.accumulo.core.data.Value;
 import org.apache.accumulo.core.file.FileOperations;
 import org.apache.accumulo.core.file.FileSKVWriter;
@@ -312,8 +312,8 @@ public class TestIngest {
       try {
         bw.close();
       } catch (MutationsRejectedException e) {
-        if (e.getAuthorizationFailuresMap().size() > 0) {
-          for (Entry<KeyExtent,Set<SecurityErrorCode>> entry : e.getAuthorizationFailuresMap().entrySet()) {
+        if (e.getSecurityErrorCodes().size() > 0) {
+          for (Entry<TabletID,Set<SecurityErrorCode>> entry : e.getSecurityErrorCodes().entrySet()) {
             System.err.println("ERROR : Not authorized to write to : " + entry.getKey() + " due to " + entry.getValue());
           }
         }

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/test/src/main/java/org/apache/accumulo/test/WrongTabletTest.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/WrongTabletTest.java b/test/src/main/java/org/apache/accumulo/test/WrongTabletTest.java
index 0cbc871..6a01e8c 100644
--- a/test/src/main/java/org/apache/accumulo/test/WrongTabletTest.java
+++ b/test/src/main/java/org/apache/accumulo/test/WrongTabletTest.java
@@ -19,10 +19,10 @@ package org.apache.accumulo.test;
 import org.apache.accumulo.core.client.AccumuloSecurityException;
 import org.apache.accumulo.core.client.Instance;
 import org.apache.accumulo.core.client.impl.ClientContext;
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.data.Mutation;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.rpc.ThriftUtil;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.core.tabletserver.thrift.TDurability;
 import org.apache.accumulo.core.tabletserver.thrift.TabletClientService;
 import org.apache.accumulo.core.trace.Tracer;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/test/src/main/java/org/apache/accumulo/test/continuous/ContinuousStatsCollector.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/continuous/ContinuousStatsCollector.java b/test/src/main/java/org/apache/accumulo/test/continuous/ContinuousStatsCollector.java
index d06df4c..cf4e3c1 100644
--- a/test/src/main/java/org/apache/accumulo/test/continuous/ContinuousStatsCollector.java
+++ b/test/src/main/java/org/apache/accumulo/test/continuous/ContinuousStatsCollector.java
@@ -27,11 +27,12 @@ import org.apache.accumulo.core.client.Connector;
 import org.apache.accumulo.core.client.IteratorSetting;
 import org.apache.accumulo.core.client.Scanner;
 import org.apache.accumulo.core.client.impl.ClientContext;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.client.impl.MasterClient;
 import org.apache.accumulo.core.client.impl.Tables;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.iterators.ColumnFamilyCounter;
 import org.apache.accumulo.core.master.thrift.MasterClientService;
 import org.apache.accumulo.core.master.thrift.MasterMonitorInfo;
@@ -39,7 +40,6 @@ import org.apache.accumulo.core.master.thrift.TableInfo;
 import org.apache.accumulo.core.master.thrift.TabletServerStatus;
 import org.apache.accumulo.core.metadata.MetadataTable;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.DataFileColumnFamily;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.core.trace.Tracer;
 import org.apache.accumulo.core.util.CachedConfiguration;
 import org.apache.accumulo.core.util.Stat;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/test/src/main/java/org/apache/accumulo/test/performance/metadata/MetadataBatchScanTest.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/performance/metadata/MetadataBatchScanTest.java b/test/src/main/java/org/apache/accumulo/test/performance/metadata/MetadataBatchScanTest.java
index a611829..34308ae 100644
--- a/test/src/main/java/org/apache/accumulo/test/performance/metadata/MetadataBatchScanTest.java
+++ b/test/src/main/java/org/apache/accumulo/test/performance/metadata/MetadataBatchScanTest.java
@@ -36,10 +36,10 @@ import org.apache.accumulo.core.client.Instance;
 import org.apache.accumulo.core.client.Scanner;
 import org.apache.accumulo.core.client.ZooKeeperInstance;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
 import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.metadata.MetadataTable;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.DataFileColumnFamily;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/test/src/main/java/org/apache/accumulo/test/performance/scan/CollectTabletStats.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/performance/scan/CollectTabletStats.java b/test/src/main/java/org/apache/accumulo/test/performance/scan/CollectTabletStats.java
index 00ff6cf..97fbf59 100644
--- a/test/src/main/java/org/apache/accumulo/test/performance/scan/CollectTabletStats.java
+++ b/test/src/main/java/org/apache/accumulo/test/performance/scan/CollectTabletStats.java
@@ -38,15 +38,16 @@ import org.apache.accumulo.core.client.Connector;
 import org.apache.accumulo.core.client.Instance;
 import org.apache.accumulo.core.client.Scanner;
 import org.apache.accumulo.core.client.impl.ClientContext;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.client.impl.Tables;
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.data.ArrayByteSequence;
 import org.apache.accumulo.core.data.ByteSequence;
 import org.apache.accumulo.core.data.Column;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.data.thrift.IterInfo;
 import org.apache.accumulo.core.file.FileOperations;
 import org.apache.accumulo.core.file.FileSKVIterator;
@@ -61,7 +62,6 @@ import org.apache.accumulo.core.iterators.system.MultiIterator;
 import org.apache.accumulo.core.iterators.system.VisibilityFilter;
 import org.apache.accumulo.core.metadata.MetadataServicer;
 import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.core.util.Stat;
 import org.apache.accumulo.server.cli.ClientOnRequiredTable;
 import org.apache.accumulo.server.conf.ServerConfigurationFactory;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/test/src/main/java/org/apache/accumulo/test/performance/thrift/NullTserver.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/performance/thrift/NullTserver.java b/test/src/main/java/org/apache/accumulo/test/performance/thrift/NullTserver.java
index b429607..d0de29f 100644
--- a/test/src/main/java/org/apache/accumulo/test/performance/thrift/NullTserver.java
+++ b/test/src/main/java/org/apache/accumulo/test/performance/thrift/NullTserver.java
@@ -31,8 +31,8 @@ import org.apache.accumulo.core.client.impl.thrift.SecurityErrorCode;
 import org.apache.accumulo.core.client.impl.thrift.ThriftSecurityException;
 import org.apache.accumulo.core.conf.DefaultConfiguration;
 import org.apache.accumulo.core.conf.Property;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Range;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.data.thrift.InitialMultiScan;
 import org.apache.accumulo.core.data.thrift.InitialScan;
 import org.apache.accumulo.core.data.thrift.IterInfo;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/test/src/main/java/org/apache/accumulo/test/randomwalk/security/AlterTablePerm.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/AlterTablePerm.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/security/AlterTablePerm.java
index 8befe8a..c43ca6c 100644
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/AlterTablePerm.java
+++ b/test/src/main/java/org/apache/accumulo/test/randomwalk/security/AlterTablePerm.java
@@ -22,8 +22,8 @@ import java.util.Random;
 import org.apache.accumulo.core.client.AccumuloException;
 import org.apache.accumulo.core.client.AccumuloSecurityException;
 import org.apache.accumulo.core.client.Connector;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.core.security.TablePermission;
 import org.apache.accumulo.test.randomwalk.Environment;
 import org.apache.accumulo.test.randomwalk.State;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/test/src/main/java/org/apache/accumulo/test/randomwalk/security/Authenticate.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/Authenticate.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/security/Authenticate.java
index bceeaeb..abc5d01 100644
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/Authenticate.java
+++ b/test/src/main/java/org/apache/accumulo/test/randomwalk/security/Authenticate.java
@@ -22,9 +22,9 @@ import java.util.Properties;
 import org.apache.accumulo.core.client.AccumuloException;
 import org.apache.accumulo.core.client.AccumuloSecurityException;
 import org.apache.accumulo.core.client.Connector;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
 import org.apache.accumulo.core.client.security.tokens.PasswordToken;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.test.randomwalk.Environment;
 import org.apache.accumulo.test.randomwalk.State;
 import org.apache.accumulo.test.randomwalk.Test;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/test/src/main/java/org/apache/accumulo/test/randomwalk/security/ChangePass.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/ChangePass.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/security/ChangePass.java
index 28414c2..e8561bb 100644
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/ChangePass.java
+++ b/test/src/main/java/org/apache/accumulo/test/randomwalk/security/ChangePass.java
@@ -22,9 +22,9 @@ import java.util.Random;
 import org.apache.accumulo.core.client.AccumuloException;
 import org.apache.accumulo.core.client.AccumuloSecurityException;
 import org.apache.accumulo.core.client.Connector;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
 import org.apache.accumulo.core.client.security.tokens.PasswordToken;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.test.randomwalk.Environment;
 import org.apache.accumulo.test.randomwalk.State;
 import org.apache.accumulo.test.randomwalk.Test;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/test/src/main/java/org/apache/accumulo/test/randomwalk/security/DropTable.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/DropTable.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/security/DropTable.java
index a0bff7a..f10bef1 100644
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/DropTable.java
+++ b/test/src/main/java/org/apache/accumulo/test/randomwalk/security/DropTable.java
@@ -23,9 +23,9 @@ import org.apache.accumulo.core.client.AccumuloSecurityException;
 import org.apache.accumulo.core.client.Connector;
 import org.apache.accumulo.core.client.TableExistsException;
 import org.apache.accumulo.core.client.TableNotFoundException;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.client.security.SecurityErrorCode;
 import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.test.randomwalk.Environment;
 import org.apache.accumulo.test.randomwalk.State;
 import org.apache.accumulo.test.randomwalk.Test;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/test/src/main/java/org/apache/accumulo/test/randomwalk/security/SetAuths.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/SetAuths.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/security/SetAuths.java
index e80e475..97ce6ed 100644
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/SetAuths.java
+++ b/test/src/main/java/org/apache/accumulo/test/randomwalk/security/SetAuths.java
@@ -22,9 +22,9 @@ import java.util.Random;
 import org.apache.accumulo.core.client.AccumuloException;
 import org.apache.accumulo.core.client.AccumuloSecurityException;
 import org.apache.accumulo.core.client.Connector;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
 import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.test.randomwalk.Environment;
 import org.apache.accumulo.test.randomwalk.State;
 import org.apache.accumulo.test.randomwalk.Test;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/test/src/main/java/org/apache/accumulo/test/randomwalk/security/WalkingSecurity.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/WalkingSecurity.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/security/WalkingSecurity.java
index 6c97751..457b478 100644
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/WalkingSecurity.java
+++ b/test/src/main/java/org/apache/accumulo/test/randomwalk/security/WalkingSecurity.java
@@ -29,12 +29,12 @@ import java.util.TreeSet;
 import org.apache.accumulo.core.client.AccumuloSecurityException;
 import org.apache.accumulo.core.client.NamespaceNotFoundException;
 import org.apache.accumulo.core.client.TableNotFoundException;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.client.impl.thrift.SecurityErrorCode;
 import org.apache.accumulo.core.client.impl.thrift.ThriftSecurityException;
 import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
 import org.apache.accumulo.core.client.security.tokens.PasswordToken;
 import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.core.security.NamespacePermission;
 import org.apache.accumulo.core.security.SystemPermission;
 import org.apache.accumulo.core.security.TablePermission;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/test/src/main/java/org/apache/accumulo/test/randomwalk/sequential/MapRedVerifyTool.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/sequential/MapRedVerifyTool.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/sequential/MapRedVerifyTool.java
index 8c907ae..5de5cf7 100644
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/sequential/MapRedVerifyTool.java
+++ b/test/src/main/java/org/apache/accumulo/test/randomwalk/sequential/MapRedVerifyTool.java
@@ -26,7 +26,7 @@ import org.apache.accumulo.core.client.ZooKeeperInstance;
 import org.apache.accumulo.core.client.admin.DelegationTokenConfig;
 import org.apache.accumulo.core.client.mapreduce.AccumuloInputFormat;
 import org.apache.accumulo.core.client.mapreduce.AccumuloOutputFormat;
-import org.apache.accumulo.core.client.security.tokens.DelegationToken;
+import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
 import org.apache.accumulo.core.client.security.tokens.KerberosToken;
 import org.apache.accumulo.core.client.security.tokens.PasswordToken;
 import org.apache.accumulo.core.data.Key;
@@ -125,7 +125,7 @@ public class MapRedVerifyTool extends Configured implements Tool {
         }
 
         // Fetch a delegation token from Accumulo
-        DelegationToken dt = conn.securityOperations().getDelegationToken(new DelegationTokenConfig());
+        AuthenticationToken dt = conn.securityOperations().getDelegationToken(new DelegationTokenConfig());
 
         // Set the delegation token instead of the kerberos token
         AccumuloInputFormat.setConnectorInfo(job, newPrincipal, dt);

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/test/src/test/java/org/apache/accumulo/server/security/SystemCredentialsIT.java
----------------------------------------------------------------------
diff --git a/test/src/test/java/org/apache/accumulo/server/security/SystemCredentialsIT.java b/test/src/test/java/org/apache/accumulo/server/security/SystemCredentialsIT.java
index 5e85ddb..00c5f51 100644
--- a/test/src/test/java/org/apache/accumulo/server/security/SystemCredentialsIT.java
+++ b/test/src/test/java/org/apache/accumulo/server/security/SystemCredentialsIT.java
@@ -28,6 +28,7 @@ import org.apache.accumulo.core.client.Connector;
 import org.apache.accumulo.core.client.Instance;
 import org.apache.accumulo.core.client.Scanner;
 import org.apache.accumulo.core.client.TableNotFoundException;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.client.security.SecurityErrorCode;
 import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
 import org.apache.accumulo.core.client.security.tokens.PasswordToken;
@@ -36,7 +37,6 @@ import org.apache.accumulo.core.data.Key;
 import org.apache.accumulo.core.data.Value;
 import org.apache.accumulo.core.metadata.RootTable;
 import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.server.client.HdfsZooInstance;
 import org.apache.accumulo.test.functional.ConfigurableMacIT;
 import org.junit.Test;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/test/src/test/java/org/apache/accumulo/test/MasterRepairsDualAssignmentIT.java
----------------------------------------------------------------------
diff --git a/test/src/test/java/org/apache/accumulo/test/MasterRepairsDualAssignmentIT.java b/test/src/test/java/org/apache/accumulo/test/MasterRepairsDualAssignmentIT.java
index d95e0cd..deb7a1c 100644
--- a/test/src/test/java/org/apache/accumulo/test/MasterRepairsDualAssignmentIT.java
+++ b/test/src/test/java/org/apache/accumulo/test/MasterRepairsDualAssignmentIT.java
@@ -28,14 +28,14 @@ import org.apache.accumulo.core.client.BatchWriter;
 import org.apache.accumulo.core.client.BatchWriterConfig;
 import org.apache.accumulo.core.client.Connector;
 import org.apache.accumulo.core.client.impl.ClientContext;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.client.security.tokens.PasswordToken;
 import org.apache.accumulo.core.conf.Property;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.metadata.MetadataTable;
 import org.apache.accumulo.core.metadata.RootTable;
 import org.apache.accumulo.core.replication.ReplicationTable;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.core.security.TablePermission;
 import org.apache.accumulo.fate.util.UtilWaitThread;
 import org.apache.accumulo.minicluster.ServerType;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/test/src/test/java/org/apache/accumulo/test/MetaConstraintRetryIT.java
----------------------------------------------------------------------
diff --git a/test/src/test/java/org/apache/accumulo/test/MetaConstraintRetryIT.java b/test/src/test/java/org/apache/accumulo/test/MetaConstraintRetryIT.java
index ab7e125..dbc10af 100644
--- a/test/src/test/java/org/apache/accumulo/test/MetaConstraintRetryIT.java
+++ b/test/src/test/java/org/apache/accumulo/test/MetaConstraintRetryIT.java
@@ -18,11 +18,11 @@
 package org.apache.accumulo.test;
 
 import org.apache.accumulo.core.client.impl.ClientContext;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.client.impl.Writer;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.metadata.MetadataTable;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.core.security.TablePermission;
 import org.apache.accumulo.core.tabletserver.thrift.ConstraintViolationException;
 import org.apache.accumulo.harness.AccumuloClusterIT;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/test/src/test/java/org/apache/accumulo/test/MultiTableBatchWriterIT.java
----------------------------------------------------------------------
diff --git a/test/src/test/java/org/apache/accumulo/test/MultiTableBatchWriterIT.java b/test/src/test/java/org/apache/accumulo/test/MultiTableBatchWriterIT.java
index d4d0f8a..5e99f6e 100644
--- a/test/src/test/java/org/apache/accumulo/test/MultiTableBatchWriterIT.java
+++ b/test/src/test/java/org/apache/accumulo/test/MultiTableBatchWriterIT.java
@@ -34,13 +34,13 @@ import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.client.TableOfflineException;
 import org.apache.accumulo.core.client.admin.TableOperations;
 import org.apache.accumulo.core.client.impl.ClientContext;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.client.impl.MultiTableBatchWriterImpl;
 import org.apache.accumulo.core.data.Key;
 import org.apache.accumulo.core.data.Mutation;
 import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.Value;
 import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.harness.AccumuloClusterIT;
 import org.junit.Assert;
 import org.junit.Before;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/test/src/test/java/org/apache/accumulo/test/NamespacesIT.java
----------------------------------------------------------------------
diff --git a/test/src/test/java/org/apache/accumulo/test/NamespacesIT.java b/test/src/test/java/org/apache/accumulo/test/NamespacesIT.java
index f5ae882..f29f356 100644
--- a/test/src/test/java/org/apache/accumulo/test/NamespacesIT.java
+++ b/test/src/test/java/org/apache/accumulo/test/NamespacesIT.java
@@ -658,9 +658,9 @@ public class NamespacesIT extends AccumuloClusterIT {
       bw.close();
       fail();
     } catch (MutationsRejectedException e) {
-      assertEquals(1, e.getAuthorizationFailuresMap().size());
-      assertEquals(1, e.getAuthorizationFailuresMap().entrySet().iterator().next().getValue().size());
-      switch (e.getAuthorizationFailuresMap().entrySet().iterator().next().getValue().iterator().next()) {
+      assertEquals(1, e.getSecurityErrorCodes().size());
+      assertEquals(1, e.getSecurityErrorCodes().entrySet().iterator().next().getValue().size());
+      switch (e.getSecurityErrorCodes().entrySet().iterator().next().getValue().iterator().next()) {
         case PERMISSION_DENIED:
           break;
         default:

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/test/src/test/java/org/apache/accumulo/test/SplitRecoveryIT.java
----------------------------------------------------------------------
diff --git a/test/src/test/java/org/apache/accumulo/test/SplitRecoveryIT.java b/test/src/test/java/org/apache/accumulo/test/SplitRecoveryIT.java
index 0f0a7b1..e47b20a 100644
--- a/test/src/test/java/org/apache/accumulo/test/SplitRecoveryIT.java
+++ b/test/src/test/java/org/apache/accumulo/test/SplitRecoveryIT.java
@@ -26,10 +26,10 @@ import org.apache.accumulo.core.client.Connector;
 import org.apache.accumulo.core.client.Scanner;
 import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
 import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.metadata.MetadataTable;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.DataFileColumnFamily;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/test/src/test/java/org/apache/accumulo/test/TransportCachingIT.java
----------------------------------------------------------------------
diff --git a/test/src/test/java/org/apache/accumulo/test/TransportCachingIT.java b/test/src/test/java/org/apache/accumulo/test/TransportCachingIT.java
index fc50843..5f9d601 100644
--- a/test/src/test/java/org/apache/accumulo/test/TransportCachingIT.java
+++ b/test/src/test/java/org/apache/accumulo/test/TransportCachingIT.java
@@ -28,11 +28,11 @@ import org.apache.accumulo.core.client.ClientConfiguration;
 import org.apache.accumulo.core.client.Connector;
 import org.apache.accumulo.core.client.Instance;
 import org.apache.accumulo.core.client.impl.ClientContext;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.client.impl.ThriftTransportKey;
 import org.apache.accumulo.core.client.impl.ThriftTransportPool;
 import org.apache.accumulo.core.conf.DefaultConfiguration;
 import org.apache.accumulo.core.conf.Property;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.core.util.ServerServices;
 import org.apache.accumulo.core.util.ServerServices.Service;
 import org.apache.accumulo.core.zookeeper.ZooUtil;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/test/src/test/java/org/apache/accumulo/test/VolumeIT.java
----------------------------------------------------------------------
diff --git a/test/src/test/java/org/apache/accumulo/test/VolumeIT.java b/test/src/test/java/org/apache/accumulo/test/VolumeIT.java
index 2bb165c..d9b9429 100644
--- a/test/src/test/java/org/apache/accumulo/test/VolumeIT.java
+++ b/test/src/test/java/org/apache/accumulo/test/VolumeIT.java
@@ -49,10 +49,10 @@ import org.apache.accumulo.core.client.admin.NewTableConfiguration;
 import org.apache.accumulo.core.client.security.tokens.PasswordToken;
 import org.apache.accumulo.core.conf.Property;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
 import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.metadata.MetadataTable;
 import org.apache.accumulo.core.metadata.RootTable;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/test/src/test/java/org/apache/accumulo/test/functional/AccumuloInputFormatIT.java
----------------------------------------------------------------------
diff --git a/test/src/test/java/org/apache/accumulo/test/functional/AccumuloInputFormatIT.java b/test/src/test/java/org/apache/accumulo/test/functional/AccumuloInputFormatIT.java
index 602662b..afbcffe 100644
--- a/test/src/test/java/org/apache/accumulo/test/functional/AccumuloInputFormatIT.java
+++ b/test/src/test/java/org/apache/accumulo/test/functional/AccumuloInputFormatIT.java
@@ -94,7 +94,7 @@ public class AccumuloInputFormatIT extends AccumuloClusterIT {
 
       for (ClientProperty prop : sslProperties) {
         // The default property is returned if it's not in the ClientConfiguration so we don't have to check if the value is actually defined
-        clientConf.setProperty(prop, clusterClientConf.get(prop.getAccumuloProperty()));
+        clientConf.setProperty(prop, clusterClientConf.get(prop.getKey()));
       }
     }
 

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/test/src/test/java/org/apache/accumulo/test/functional/BalanceAfterCommsFailureIT.java
----------------------------------------------------------------------
diff --git a/test/src/test/java/org/apache/accumulo/test/functional/BalanceAfterCommsFailureIT.java b/test/src/test/java/org/apache/accumulo/test/functional/BalanceAfterCommsFailureIT.java
index a2a43e4..7b35db4 100644
--- a/test/src/test/java/org/apache/accumulo/test/functional/BalanceAfterCommsFailureIT.java
+++ b/test/src/test/java/org/apache/accumulo/test/functional/BalanceAfterCommsFailureIT.java
@@ -28,6 +28,7 @@ import java.util.TreeSet;
 
 import org.apache.accumulo.core.client.Connector;
 import org.apache.accumulo.core.client.impl.ClientContext;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.client.impl.MasterClient;
 import org.apache.accumulo.core.client.security.tokens.PasswordToken;
 import org.apache.accumulo.core.conf.Property;
@@ -36,7 +37,6 @@ import org.apache.accumulo.core.master.thrift.MasterMonitorInfo;
 import org.apache.accumulo.core.master.thrift.TableInfo;
 import org.apache.accumulo.core.master.thrift.TabletServerStatus;
 import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.core.trace.Tracer;
 import org.apache.accumulo.fate.util.UtilWaitThread;
 import org.apache.accumulo.minicluster.ServerType;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/test/src/test/java/org/apache/accumulo/test/functional/BalanceInPresenceOfOfflineTableIT.java
----------------------------------------------------------------------
diff --git a/test/src/test/java/org/apache/accumulo/test/functional/BalanceInPresenceOfOfflineTableIT.java b/test/src/test/java/org/apache/accumulo/test/functional/BalanceInPresenceOfOfflineTableIT.java
index 8138ac0..b77ce1c 100644
--- a/test/src/test/java/org/apache/accumulo/test/functional/BalanceInPresenceOfOfflineTableIT.java
+++ b/test/src/test/java/org/apache/accumulo/test/functional/BalanceInPresenceOfOfflineTableIT.java
@@ -33,13 +33,13 @@ import org.apache.accumulo.core.client.TableExistsException;
 import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.client.ZooKeeperInstance;
 import org.apache.accumulo.core.client.impl.ClientContext;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.client.impl.MasterClient;
 import org.apache.accumulo.core.client.impl.thrift.ThriftSecurityException;
 import org.apache.accumulo.core.conf.Property;
 import org.apache.accumulo.core.master.thrift.MasterClientService;
 import org.apache.accumulo.core.master.thrift.MasterMonitorInfo;
 import org.apache.accumulo.core.master.thrift.TableInfo;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.core.trace.Tracer;
 import org.apache.accumulo.harness.AccumuloClusterIT;
 import org.apache.accumulo.minicluster.impl.MiniAccumuloConfigImpl;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/test/src/test/java/org/apache/accumulo/test/functional/DynamicThreadPoolsIT.java
----------------------------------------------------------------------
diff --git a/test/src/test/java/org/apache/accumulo/test/functional/DynamicThreadPoolsIT.java b/test/src/test/java/org/apache/accumulo/test/functional/DynamicThreadPoolsIT.java
index 34493b2..2425d20 100644
--- a/test/src/test/java/org/apache/accumulo/test/functional/DynamicThreadPoolsIT.java
+++ b/test/src/test/java/org/apache/accumulo/test/functional/DynamicThreadPoolsIT.java
@@ -25,6 +25,7 @@ import org.apache.accumulo.core.client.ClientConfiguration;
 import org.apache.accumulo.core.client.ClientConfiguration.ClientProperty;
 import org.apache.accumulo.core.client.Connector;
 import org.apache.accumulo.core.client.impl.ClientContext;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.client.impl.MasterClient;
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.conf.Property;
@@ -32,7 +33,6 @@ import org.apache.accumulo.core.master.thrift.MasterClientService;
 import org.apache.accumulo.core.master.thrift.MasterMonitorInfo;
 import org.apache.accumulo.core.master.thrift.TableInfo;
 import org.apache.accumulo.core.master.thrift.TabletServerStatus;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.core.trace.Tracer;
 import org.apache.accumulo.core.util.UtilWaitThread;
 import org.apache.accumulo.harness.AccumuloClusterIT;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/test/src/test/java/org/apache/accumulo/test/functional/KerberosIT.java
----------------------------------------------------------------------
diff --git a/test/src/test/java/org/apache/accumulo/test/functional/KerberosIT.java b/test/src/test/java/org/apache/accumulo/test/functional/KerberosIT.java
index e351c50..2c1dddf 100644
--- a/test/src/test/java/org/apache/accumulo/test/functional/KerberosIT.java
+++ b/test/src/test/java/org/apache/accumulo/test/functional/KerberosIT.java
@@ -45,7 +45,9 @@ import org.apache.accumulo.core.client.TableExistsException;
 import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.client.admin.CompactionConfig;
 import org.apache.accumulo.core.client.admin.DelegationTokenConfig;
-import org.apache.accumulo.core.client.security.tokens.DelegationToken;
+import org.apache.accumulo.core.client.impl.AuthenticationTokenIdentifier;
+import org.apache.accumulo.core.client.impl.DelegationTokenImpl;
+import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
 import org.apache.accumulo.core.client.security.tokens.KerberosToken;
 import org.apache.accumulo.core.client.security.tokens.PasswordToken;
 import org.apache.accumulo.core.conf.Property;
@@ -55,7 +57,6 @@ import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.Value;
 import org.apache.accumulo.core.metadata.MetadataTable;
 import org.apache.accumulo.core.metadata.RootTable;
-import org.apache.accumulo.core.security.AuthenticationTokenIdentifier;
 import org.apache.accumulo.core.security.Authorizations;
 import org.apache.accumulo.core.security.ColumnVisibility;
 import org.apache.accumulo.core.security.SystemPermission;
@@ -344,9 +345,9 @@ public class KerberosIT extends AccumuloIT {
     final int numRows = 100, numColumns = 10;
 
     // As the "root" user, open up the connection and get a delegation token
-    final DelegationToken delegationToken = root.doAs(new PrivilegedExceptionAction<DelegationToken>() {
+    final AuthenticationToken delegationToken = root.doAs(new PrivilegedExceptionAction<AuthenticationToken>() {
       @Override
-      public DelegationToken run() throws Exception {
+      public AuthenticationToken run() throws Exception {
         Connector conn = mac.getConnector(rootUser.getPrincipal(), new KerberosToken());
         log.info("Created connector as {}", rootUser.getPrincipal());
         assertEquals(rootUser.getPrincipal(), conn.whoami());
@@ -395,7 +396,7 @@ public class KerberosIT extends AccumuloIT {
     Connector conn = mac.getConnector(rootUser.getPrincipal(), new KerberosToken());
     log.info("Created connector as {}", rootUser.getPrincipal());
     assertEquals(rootUser.getPrincipal(), conn.whoami());
-    final DelegationToken delegationToken = conn.securityOperations().getDelegationToken(new DelegationTokenConfig());
+    final AuthenticationToken delegationToken = conn.securityOperations().getDelegationToken(new DelegationTokenConfig());
 
     // The above login with keytab doesn't have a way to logout, so make a fake user that won't have krb credentials
     UserGroupInformation userWithoutPrivs = UserGroupInformation.createUserForTesting("fake_user", new String[0]);
@@ -448,14 +449,14 @@ public class KerberosIT extends AccumuloIT {
     log.info("Logged in as {}", rootUser.getPrincipal());
 
     // As the "root" user, open up the connection and get a delegation token
-    final DelegationToken delegationToken1 = root.doAs(new PrivilegedExceptionAction<DelegationToken>() {
+    final AuthenticationToken delegationToken1 = root.doAs(new PrivilegedExceptionAction<AuthenticationToken>() {
       @Override
-      public DelegationToken run() throws Exception {
+      public AuthenticationToken run() throws Exception {
         Connector conn = mac.getConnector(rootUser.getPrincipal(), new KerberosToken());
         log.info("Created connector as {}", rootUser.getPrincipal());
         assertEquals(rootUser.getPrincipal(), conn.whoami());
 
-        DelegationToken token = conn.securityOperations().getDelegationToken(new DelegationTokenConfig());
+        AuthenticationToken token = conn.securityOperations().getDelegationToken(new DelegationTokenConfig());
 
         assertTrue("Could not get tables with delegation token", mac.getConnector(rootUser.getPrincipal(), token).tableOperations().list().size() > 0);
 
@@ -482,14 +483,14 @@ public class KerberosIT extends AccumuloIT {
     });
 
     // Get a new token, so we can compare the keyId on the second to the first
-    final DelegationToken delegationToken2 = root.doAs(new PrivilegedExceptionAction<DelegationToken>() {
+    final AuthenticationToken delegationToken2 = root.doAs(new PrivilegedExceptionAction<AuthenticationToken>() {
       @Override
-      public DelegationToken run() throws Exception {
+      public AuthenticationToken run() throws Exception {
         Connector conn = mac.getConnector(rootUser.getPrincipal(), new KerberosToken());
         log.info("Created connector as {}", rootUser.getPrincipal());
         assertEquals(rootUser.getPrincipal(), conn.whoami());
 
-        DelegationToken token = conn.securityOperations().getDelegationToken(new DelegationTokenConfig());
+        AuthenticationToken token = conn.securityOperations().getDelegationToken(new DelegationTokenConfig());
 
         assertTrue("Could not get tables with delegation token", mac.getConnector(rootUser.getPrincipal(), token).tableOperations().list().size() > 0);
 
@@ -498,7 +499,9 @@ public class KerberosIT extends AccumuloIT {
     });
 
     // A restarted master should reuse the same secret key after a restart if the secret key hasn't expired (1day by default)
-    assertEquals(delegationToken1.getIdentifier().getKeyId(), delegationToken2.getIdentifier().getKeyId());
+    DelegationTokenImpl dt1 = (DelegationTokenImpl)delegationToken1;
+    DelegationTokenImpl dt2 = (DelegationTokenImpl)delegationToken2;
+    assertEquals(dt1.getIdentifier().getKeyId(), dt2.getIdentifier().getKeyId());
   }
 
   @Test(expected = AccumuloException.class)
@@ -509,9 +512,9 @@ public class KerberosIT extends AccumuloIT {
 
     // As the "root" user, open up the connection and get a delegation token
     try {
-      root.doAs(new PrivilegedExceptionAction<DelegationToken>() {
+      root.doAs(new PrivilegedExceptionAction<AuthenticationToken>() {
         @Override
-        public DelegationToken run() throws Exception {
+        public AuthenticationToken run() throws Exception {
           Connector conn = mac.getConnector(rootUser.getPrincipal(), new KerberosToken());
           log.info("Created connector as {}", rootUser.getPrincipal());
           assertEquals(rootUser.getPrincipal(), conn.whoami());
@@ -537,9 +540,9 @@ public class KerberosIT extends AccumuloIT {
     log.info("Logged in as {}", rootUser.getPrincipal());
 
     // As the "root" user, open up the connection and get a delegation token
-    final DelegationToken dt = root.doAs(new PrivilegedExceptionAction<DelegationToken>() {
+    final AuthenticationToken dt = root.doAs(new PrivilegedExceptionAction<AuthenticationToken>() {
       @Override
-      public DelegationToken run() throws Exception {
+      public AuthenticationToken run() throws Exception {
         Connector conn = mac.getConnector(rootUser.getPrincipal(), new KerberosToken());
         log.info("Created connector as {}", rootUser.getPrincipal());
         assertEquals(rootUser.getPrincipal(), conn.whoami());
@@ -548,7 +551,7 @@ public class KerberosIT extends AccumuloIT {
       }
     });
 
-    AuthenticationTokenIdentifier identifier = dt.getIdentifier();
+    AuthenticationTokenIdentifier identifier = ((DelegationTokenImpl)dt).getIdentifier();
     assertTrue("Expected identifier to expire in no more than 5 minutes: " + identifier,
         identifier.getExpirationDate() - identifier.getIssueDate() <= (5 * 60 * 1000));
   }

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/test/src/test/java/org/apache/accumulo/test/functional/MasterAssignmentIT.java
----------------------------------------------------------------------
diff --git a/test/src/test/java/org/apache/accumulo/test/functional/MasterAssignmentIT.java b/test/src/test/java/org/apache/accumulo/test/functional/MasterAssignmentIT.java
index 92c621c..a7cdae5 100644
--- a/test/src/test/java/org/apache/accumulo/test/functional/MasterAssignmentIT.java
+++ b/test/src/test/java/org/apache/accumulo/test/functional/MasterAssignmentIT.java
@@ -26,10 +26,10 @@ import org.apache.accumulo.core.client.BatchWriter;
 import org.apache.accumulo.core.client.BatchWriterConfig;
 import org.apache.accumulo.core.client.Connector;
 import org.apache.accumulo.core.client.impl.ClientContext;
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.data.Mutation;
 import org.apache.accumulo.core.data.Range;
-import org.apache.accumulo.core.security.Credentials;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.fate.util.UtilWaitThread;
 import org.apache.accumulo.harness.AccumuloClusterIT;
 import org.apache.accumulo.server.master.state.MetaDataTableScanner;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/test/src/test/java/org/apache/accumulo/test/functional/MetadataMaxFilesIT.java
----------------------------------------------------------------------
diff --git a/test/src/test/java/org/apache/accumulo/test/functional/MetadataMaxFilesIT.java b/test/src/test/java/org/apache/accumulo/test/functional/MetadataMaxFilesIT.java
index 19977d3..e6c9a0e 100644
--- a/test/src/test/java/org/apache/accumulo/test/functional/MetadataMaxFilesIT.java
+++ b/test/src/test/java/org/apache/accumulo/test/functional/MetadataMaxFilesIT.java
@@ -26,6 +26,7 @@ import java.util.TreeSet;
 
 import org.apache.accumulo.core.client.Connector;
 import org.apache.accumulo.core.client.impl.ClientContext;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.client.impl.MasterClient;
 import org.apache.accumulo.core.client.security.tokens.PasswordToken;
 import org.apache.accumulo.core.conf.Property;
@@ -35,7 +36,6 @@ import org.apache.accumulo.core.master.thrift.TableInfo;
 import org.apache.accumulo.core.master.thrift.TabletServerStatus;
 import org.apache.accumulo.core.metadata.MetadataTable;
 import org.apache.accumulo.core.metadata.RootTable;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.core.trace.Tracer;
 import org.apache.accumulo.core.util.UtilWaitThread;
 import org.apache.accumulo.minicluster.impl.MiniAccumuloConfigImpl;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/test/src/test/java/org/apache/accumulo/test/functional/PermissionsIT.java
----------------------------------------------------------------------
diff --git a/test/src/test/java/org/apache/accumulo/test/functional/PermissionsIT.java b/test/src/test/java/org/apache/accumulo/test/functional/PermissionsIT.java
index 022a3a0..4aea354 100644
--- a/test/src/test/java/org/apache/accumulo/test/functional/PermissionsIT.java
+++ b/test/src/test/java/org/apache/accumulo/test/functional/PermissionsIT.java
@@ -596,7 +596,7 @@ public class PermissionsIT extends AccumuloClusterIT {
           try {
             writer.close();
           } catch (MutationsRejectedException e1) {
-            if (e1.getAuthorizationFailuresMap().size() > 0)
+            if (e1.getSecurityErrorCodes().size() > 0)
               throw new AccumuloSecurityException(test_user_conn.whoami(), org.apache.accumulo.core.client.impl.thrift.SecurityErrorCode.PERMISSION_DENIED, e1);
           }
           throw new IllegalStateException("Should NOT be able to write to a table");

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/test/src/test/java/org/apache/accumulo/test/functional/SimpleBalancerFairnessIT.java
----------------------------------------------------------------------
diff --git a/test/src/test/java/org/apache/accumulo/test/functional/SimpleBalancerFairnessIT.java b/test/src/test/java/org/apache/accumulo/test/functional/SimpleBalancerFairnessIT.java
index 8b140e7..1ad363b 100644
--- a/test/src/test/java/org/apache/accumulo/test/functional/SimpleBalancerFairnessIT.java
+++ b/test/src/test/java/org/apache/accumulo/test/functional/SimpleBalancerFairnessIT.java
@@ -26,6 +26,7 @@ import java.util.TreeSet;
 import org.apache.accumulo.core.cli.BatchWriterOpts;
 import org.apache.accumulo.core.client.Connector;
 import org.apache.accumulo.core.client.impl.ClientContext;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.client.impl.MasterClient;
 import org.apache.accumulo.core.client.security.tokens.PasswordToken;
 import org.apache.accumulo.core.conf.Property;
@@ -33,7 +34,6 @@ import org.apache.accumulo.core.master.thrift.MasterClientService;
 import org.apache.accumulo.core.master.thrift.MasterMonitorInfo;
 import org.apache.accumulo.core.master.thrift.TableInfo;
 import org.apache.accumulo.core.master.thrift.TabletServerStatus;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.core.trace.Tracer;
 import org.apache.accumulo.core.util.UtilWaitThread;
 import org.apache.accumulo.minicluster.MemoryUnit;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/test/src/test/java/org/apache/accumulo/test/functional/SplitIT.java
----------------------------------------------------------------------
diff --git a/test/src/test/java/org/apache/accumulo/test/functional/SplitIT.java b/test/src/test/java/org/apache/accumulo/test/functional/SplitIT.java
index 93a4f69..8e7e2b5 100644
--- a/test/src/test/java/org/apache/accumulo/test/functional/SplitIT.java
+++ b/test/src/test/java/org/apache/accumulo/test/functional/SplitIT.java
@@ -34,8 +34,8 @@ import org.apache.accumulo.core.client.security.tokens.PasswordToken;
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.conf.Property;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.metadata.MetadataTable;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema;
 import org.apache.accumulo.core.security.Authorizations;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/test/src/test/java/org/apache/accumulo/test/functional/SplitRecoveryIT.java
----------------------------------------------------------------------
diff --git a/test/src/test/java/org/apache/accumulo/test/functional/SplitRecoveryIT.java b/test/src/test/java/org/apache/accumulo/test/functional/SplitRecoveryIT.java
index 7439e23..0b0e330 100644
--- a/test/src/test/java/org/apache/accumulo/test/functional/SplitRecoveryIT.java
+++ b/test/src/test/java/org/apache/accumulo/test/functional/SplitRecoveryIT.java
@@ -35,9 +35,9 @@ import org.apache.accumulo.core.client.Scanner;
 import org.apache.accumulo.core.client.impl.ScannerImpl;
 import org.apache.accumulo.core.client.impl.Writer;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.file.rfile.RFile;
 import org.apache.accumulo.core.metadata.MetadataTable;
 import org.apache.accumulo.core.metadata.schema.DataFileValue;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/test/src/test/java/org/apache/accumulo/test/functional/TableIT.java
----------------------------------------------------------------------
diff --git a/test/src/test/java/org/apache/accumulo/test/functional/TableIT.java b/test/src/test/java/org/apache/accumulo/test/functional/TableIT.java
index ded599e..a1c7fc2 100644
--- a/test/src/test/java/org/apache/accumulo/test/functional/TableIT.java
+++ b/test/src/test/java/org/apache/accumulo/test/functional/TableIT.java
@@ -30,7 +30,7 @@ import org.apache.accumulo.core.client.ClientConfiguration.ClientProperty;
 import org.apache.accumulo.core.client.Connector;
 import org.apache.accumulo.core.client.Scanner;
 import org.apache.accumulo.core.client.admin.TableOperations;
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.metadata.MetadataTable;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema;
 import org.apache.accumulo.core.security.Authorizations;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/test/src/test/java/org/apache/accumulo/test/functional/TabletStateChangeIteratorIT.java
----------------------------------------------------------------------
diff --git a/test/src/test/java/org/apache/accumulo/test/functional/TabletStateChangeIteratorIT.java b/test/src/test/java/org/apache/accumulo/test/functional/TabletStateChangeIteratorIT.java
index a0d6008..2e49708 100644
--- a/test/src/test/java/org/apache/accumulo/test/functional/TabletStateChangeIteratorIT.java
+++ b/test/src/test/java/org/apache/accumulo/test/functional/TabletStateChangeIteratorIT.java
@@ -36,8 +36,8 @@ import org.apache.accumulo.core.client.TableExistsException;
 import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.client.impl.Tables;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.master.state.tables.TableState;
 import org.apache.accumulo.core.master.thrift.MasterState;
 import org.apache.accumulo.core.metadata.MetadataTable;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/test/src/test/java/org/apache/accumulo/test/replication/GarbageCollectorCommunicatesWithTServersIT.java
----------------------------------------------------------------------
diff --git a/test/src/test/java/org/apache/accumulo/test/replication/GarbageCollectorCommunicatesWithTServersIT.java b/test/src/test/java/org/apache/accumulo/test/replication/GarbageCollectorCommunicatesWithTServersIT.java
index 5b89d9c..75f61f1 100644
--- a/test/src/test/java/org/apache/accumulo/test/replication/GarbageCollectorCommunicatesWithTServersIT.java
+++ b/test/src/test/java/org/apache/accumulo/test/replication/GarbageCollectorCommunicatesWithTServersIT.java
@@ -28,6 +28,7 @@ import org.apache.accumulo.core.client.Connector;
 import org.apache.accumulo.core.client.Scanner;
 import org.apache.accumulo.core.client.impl.ClientContext;
 import org.apache.accumulo.core.client.impl.ClientExecReturn;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.client.impl.MasterClient;
 import org.apache.accumulo.core.client.security.tokens.PasswordToken;
 import org.apache.accumulo.core.conf.Property;
@@ -42,7 +43,6 @@ import org.apache.accumulo.core.protobuf.ProtobufUtil;
 import org.apache.accumulo.core.replication.ReplicationTable;
 import org.apache.accumulo.core.rpc.ThriftUtil;
 import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.core.tabletserver.thrift.TabletClientService.Client;
 import org.apache.accumulo.core.trace.Tracer;
 import org.apache.accumulo.minicluster.impl.MiniAccumuloConfigImpl;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/test/src/test/java/org/apache/accumulo/test/replication/UnusedWalDoesntCloseReplicationStatusIT.java
----------------------------------------------------------------------
diff --git a/test/src/test/java/org/apache/accumulo/test/replication/UnusedWalDoesntCloseReplicationStatusIT.java b/test/src/test/java/org/apache/accumulo/test/replication/UnusedWalDoesntCloseReplicationStatusIT.java
index f8626aa..bdd5db5 100644
--- a/test/src/test/java/org/apache/accumulo/test/replication/UnusedWalDoesntCloseReplicationStatusIT.java
+++ b/test/src/test/java/org/apache/accumulo/test/replication/UnusedWalDoesntCloseReplicationStatusIT.java
@@ -32,9 +32,9 @@ import org.apache.accumulo.core.client.Connector;
 import org.apache.accumulo.core.client.Scanner;
 import org.apache.accumulo.core.conf.Property;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.metadata.MetadataTable;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema;
 import org.apache.accumulo.core.protobuf.ProtobufUtil;


[3/9] accumulo git commit: ACCUMULO-3657 ACCUMULO-3548 Clarify Accumulo API

Posted by kt...@apache.org.
http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/test/java/org/apache/accumulo/core/rpc/SaslConnectionParamsTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/accumulo/core/rpc/SaslConnectionParamsTest.java b/core/src/test/java/org/apache/accumulo/core/rpc/SaslConnectionParamsTest.java
index 9b77d25..8727e58 100644
--- a/core/src/test/java/org/apache/accumulo/core/rpc/SaslConnectionParamsTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/rpc/SaslConnectionParamsTest.java
@@ -27,14 +27,14 @@ import javax.security.sasl.Sasl;
 
 import org.apache.accumulo.core.client.ClientConfiguration;
 import org.apache.accumulo.core.client.ClientConfiguration.ClientProperty;
+import org.apache.accumulo.core.client.impl.AuthenticationTokenIdentifier;
 import org.apache.accumulo.core.client.impl.ClientContext;
-import org.apache.accumulo.core.client.security.tokens.DelegationToken;
+import org.apache.accumulo.core.client.impl.DelegationTokenImpl;
 import org.apache.accumulo.core.client.security.tokens.KerberosToken;
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.conf.Property;
 import org.apache.accumulo.core.rpc.SaslConnectionParams.QualityOfProtection;
 import org.apache.accumulo.core.rpc.SaslConnectionParams.SaslMechanism;
-import org.apache.accumulo.core.security.AuthenticationTokenIdentifier;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.CommonConfigurationKeysPublic;
 import org.apache.hadoop.security.UserGroupInformation;
@@ -118,8 +118,8 @@ public class SaslConnectionParamsTest {
   }
 
   @Test
-  public void testDelegationToken() throws Exception {
-    final DelegationToken token = new DelegationToken(new byte[0], new AuthenticationTokenIdentifier("user", 1, 10l, 20l, "instanceid"));
+  public void testDelegationTokenImpl() throws Exception {
+    final DelegationTokenImpl token = new DelegationTokenImpl(new byte[0], new AuthenticationTokenIdentifier("user", 1, 10l, 20l, "instanceid"));
     testUser.doAs(new PrivilegedExceptionAction<Void>() {
       @Override
       public Void run() throws Exception {
@@ -189,7 +189,7 @@ public class SaslConnectionParamsTest {
     assertEquals(params1, params2);
     assertEquals(params1.hashCode(), params2.hashCode());
 
-    final DelegationToken delToken1 = new DelegationToken(new byte[0], new AuthenticationTokenIdentifier("user", 1, 10l, 20l, "instanceid"));
+    final DelegationTokenImpl delToken1 = new DelegationTokenImpl(new byte[0], new AuthenticationTokenIdentifier("user", 1, 10l, 20l, "instanceid"));
     SaslConnectionParams params3 = testUser.doAs(new PrivilegedExceptionAction<SaslConnectionParams>() {
       @Override
       public SaslConnectionParams run() throws Exception {
@@ -211,7 +211,7 @@ public class SaslConnectionParamsTest {
     assertNotEquals(params2, params3);
     assertNotEquals(params2.hashCode(), params3.hashCode());
 
-    final DelegationToken delToken2 = new DelegationToken(new byte[0], new AuthenticationTokenIdentifier("user", 1, 10l, 20l, "instanceid"));
+    final DelegationTokenImpl delToken2 = new DelegationTokenImpl(new byte[0], new AuthenticationTokenIdentifier("user", 1, 10l, 20l, "instanceid"));
     SaslConnectionParams params4 = testUser.doAs(new PrivilegedExceptionAction<SaslConnectionParams>() {
       @Override
       public SaslConnectionParams run() throws Exception {

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/test/java/org/apache/accumulo/core/security/AuthenticationTokenIdentifierTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/accumulo/core/security/AuthenticationTokenIdentifierTest.java b/core/src/test/java/org/apache/accumulo/core/security/AuthenticationTokenIdentifierTest.java
index d3c1f20..ef6d7be 100644
--- a/core/src/test/java/org/apache/accumulo/core/security/AuthenticationTokenIdentifierTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/security/AuthenticationTokenIdentifierTest.java
@@ -26,6 +26,7 @@ import java.io.DataInputStream;
 import java.io.DataOutputStream;
 import java.io.IOException;
 
+import org.apache.accumulo.core.client.impl.AuthenticationTokenIdentifier;
 import org.apache.hadoop.security.UserGroupInformation;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/test/java/org/apache/accumulo/core/security/CredentialsTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/accumulo/core/security/CredentialsTest.java b/core/src/test/java/org/apache/accumulo/core/security/CredentialsTest.java
index a399310..0457caa 100644
--- a/core/src/test/java/org/apache/accumulo/core/security/CredentialsTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/security/CredentialsTest.java
@@ -29,6 +29,7 @@ import org.apache.accumulo.core.client.AccumuloException;
 import org.apache.accumulo.core.client.AccumuloSecurityException;
 import org.apache.accumulo.core.client.Connector;
 import org.apache.accumulo.core.client.Instance;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.client.mock.MockInstance;
 import org.apache.accumulo.core.client.security.SecurityErrorCode;
 import org.apache.accumulo.core.client.security.tokens.AuthenticationToken.AuthenticationTokenSerializer;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/test/java/org/apache/accumulo/core/security/VisibilityConstraintTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/accumulo/core/security/VisibilityConstraintTest.java b/core/src/test/java/org/apache/accumulo/core/security/VisibilityConstraintTest.java
index c9aa5d2..b61ae96 100644
--- a/core/src/test/java/org/apache/accumulo/core/security/VisibilityConstraintTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/security/VisibilityConstraintTest.java
@@ -27,6 +27,7 @@ import static org.junit.Assert.assertNull;
 import java.util.Arrays;
 import java.util.List;
 
+import org.apache.accumulo.core.constraints.VisibilityConstraint;
 import org.apache.accumulo.core.constraints.Constraint.Environment;
 import org.apache.accumulo.core.data.ArrayByteSequence;
 import org.apache.accumulo.core.data.Mutation;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/test/java/org/apache/accumulo/core/util/MergeTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/accumulo/core/util/MergeTest.java b/core/src/test/java/org/apache/accumulo/core/util/MergeTest.java
index 95d7b66..5b0dc55 100644
--- a/core/src/test/java/org/apache/accumulo/core/util/MergeTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/util/MergeTest.java
@@ -24,7 +24,7 @@ import java.util.Iterator;
 import java.util.List;
 
 import org.apache.accumulo.core.client.Connector;
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.util.Merge.Size;
 import org.apache.hadoop.io.Text;
 import org.junit.Test;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/examples/simple/src/main/java/org/apache/accumulo/examples/simple/client/RandomBatchWriter.java
----------------------------------------------------------------------
diff --git a/examples/simple/src/main/java/org/apache/accumulo/examples/simple/client/RandomBatchWriter.java b/examples/simple/src/main/java/org/apache/accumulo/examples/simple/client/RandomBatchWriter.java
index b4d92c8..c1fb875 100644
--- a/examples/simple/src/main/java/org/apache/accumulo/examples/simple/client/RandomBatchWriter.java
+++ b/examples/simple/src/main/java/org/apache/accumulo/examples/simple/client/RandomBatchWriter.java
@@ -31,8 +31,8 @@ import org.apache.accumulo.core.client.Connector;
 import org.apache.accumulo.core.client.MutationsRejectedException;
 import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.client.security.SecurityErrorCode;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
+import org.apache.accumulo.core.data.TabletID;
 import org.apache.accumulo.core.data.Value;
 import org.apache.accumulo.core.security.ColumnVisibility;
 import org.apache.hadoop.io.Text;
@@ -155,9 +155,9 @@ public class RandomBatchWriter {
     try {
       bw.close();
     } catch (MutationsRejectedException e) {
-      if (e.getAuthorizationFailuresMap().size() > 0) {
+      if (e.getSecurityErrorCodes().size() > 0) {
         HashMap<String,Set<SecurityErrorCode>> tables = new HashMap<String,Set<SecurityErrorCode>>();
-        for (Entry<KeyExtent,Set<SecurityErrorCode>> ke : e.getAuthorizationFailuresMap().entrySet()) {
+        for (Entry<TabletID,Set<SecurityErrorCode>> ke : e.getSecurityErrorCodes().entrySet()) {
           Set<SecurityErrorCode> secCodes = tables.get(ke.getKey().getTableId().toString());
           if (secCodes == null) {
             secCodes = new HashSet<SecurityErrorCode>();

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/minicluster/pom.xml
----------------------------------------------------------------------
diff --git a/minicluster/pom.xml b/minicluster/pom.xml
index 2f46eaf..fa7cacc 100644
--- a/minicluster/pom.xml
+++ b/minicluster/pom.xml
@@ -135,9 +135,8 @@
                 <exclude>.*[.]impl[.].*</exclude>
               </excludes>
               <allows>
-                <allow>org[.]apache[.]accumulo[.]core[.]client[.].*</allow>
-                <allow>org[.]apache[.]accumulo[.]core[.]data[.](Mutation|Key|Value|Condition|ConditionalMutation|Range|ByteSequence|PartialKey|Column)([$].*)?</allow>
-                <allow>org[.]apache[.]accumulo[.]core[.]security[.](ColumnVisibility|Authorizations|NamespacePermission|SystemPermission|TablePermission)([$].*)?</allow>
+                <allow>org[.]apache[.]accumulo[.]core[.](client|data|security)[.](?!.*(impl|thrift|crypto).*).*</allow>
+                <allow>org.apache.commons.configuration.PropertiesConfiguration</allow>
               </allows>
             </configuration>
           </execution>

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/minicluster/src/main/java/org/apache/accumulo/minicluster/impl/MiniAccumuloClusterImpl.java
----------------------------------------------------------------------
diff --git a/minicluster/src/main/java/org/apache/accumulo/minicluster/impl/MiniAccumuloClusterImpl.java b/minicluster/src/main/java/org/apache/accumulo/minicluster/impl/MiniAccumuloClusterImpl.java
index b1b59f2..a21ba64 100644
--- a/minicluster/src/main/java/org/apache/accumulo/minicluster/impl/MiniAccumuloClusterImpl.java
+++ b/minicluster/src/main/java/org/apache/accumulo/minicluster/impl/MiniAccumuloClusterImpl.java
@@ -61,6 +61,7 @@ import org.apache.accumulo.core.client.Connector;
 import org.apache.accumulo.core.client.Instance;
 import org.apache.accumulo.core.client.ZooKeeperInstance;
 import org.apache.accumulo.core.client.impl.ClientContext;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.client.impl.MasterClient;
 import org.apache.accumulo.core.client.impl.thrift.ThriftSecurityException;
 import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
@@ -70,7 +71,6 @@ import org.apache.accumulo.core.conf.Property;
 import org.apache.accumulo.core.master.thrift.MasterClientService;
 import org.apache.accumulo.core.master.thrift.MasterGoalState;
 import org.apache.accumulo.core.master.thrift.MasterMonitorInfo;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.core.trace.Tracer;
 import org.apache.accumulo.core.util.CachedConfiguration;
 import org.apache.accumulo.core.util.Daemon;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/proxy/src/main/java/org/apache/accumulo/proxy/ProxyServer.java
----------------------------------------------------------------------
diff --git a/proxy/src/main/java/org/apache/accumulo/proxy/ProxyServer.java b/proxy/src/main/java/org/apache/accumulo/proxy/ProxyServer.java
index 0519d84..382b47e 100644
--- a/proxy/src/main/java/org/apache/accumulo/proxy/ProxyServer.java
+++ b/proxy/src/main/java/org/apache/accumulo/proxy/ProxyServer.java
@@ -59,6 +59,7 @@ import org.apache.accumulo.core.client.admin.ActiveScan;
 import org.apache.accumulo.core.client.admin.CompactionConfig;
 import org.apache.accumulo.core.client.admin.NewTableConfiguration;
 import org.apache.accumulo.core.client.admin.TimeType;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.client.impl.thrift.TableOperationExceptionType;
 import org.apache.accumulo.core.client.impl.thrift.ThriftTableOperationException;
 import org.apache.accumulo.core.client.mock.MockInstance;
@@ -68,15 +69,14 @@ import org.apache.accumulo.core.client.security.tokens.PasswordToken;
 import org.apache.accumulo.core.data.Column;
 import org.apache.accumulo.core.data.ConditionalMutation;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
 import org.apache.accumulo.core.data.PartialKey;
 import org.apache.accumulo.core.data.Range;
+import org.apache.accumulo.core.data.TabletID;
 import org.apache.accumulo.core.data.Value;
 import org.apache.accumulo.core.iterators.IteratorUtil.IteratorScope;
 import org.apache.accumulo.core.security.Authorizations;
 import org.apache.accumulo.core.security.ColumnVisibility;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.core.security.SystemPermission;
 import org.apache.accumulo.core.security.TablePermission;
 import org.apache.accumulo.core.util.ByteBufferUtil;
@@ -724,7 +724,7 @@ public class ProxyServer implements AccumuloProxy.Iface {
         pscan.idleTime = scan.getIdleTime();
         pscan.type = ScanType.valueOf(scan.getType().toString());
         pscan.state = ScanState.valueOf(scan.getState().toString());
-        KeyExtent e = scan.getExtent();
+        TabletID e = scan.getTablet();
         pscan.extent = new org.apache.accumulo.proxy.thrift.KeyExtent(e.getTableId().toString(), TextUtil.getByteBuffer(e.getEndRow()),
             TextUtil.getByteBuffer(e.getPrevEndRow()));
         pscan.columns = new ArrayList<org.apache.accumulo.proxy.thrift.Column>();
@@ -776,7 +776,7 @@ public class ProxyServer implements AccumuloProxy.Iface {
         pcomp.age = comp.getAge();
         pcomp.entriesRead = comp.getEntriesRead();
         pcomp.entriesWritten = comp.getEntriesWritten();
-        KeyExtent e = comp.getExtent();
+        TabletID e = comp.getTablet();
         pcomp.extent = new org.apache.accumulo.proxy.thrift.KeyExtent(e.getTableId().toString(), TextUtil.getByteBuffer(e.getEndRow()),
             TextUtil.getByteBuffer(e.getPrevEndRow()));
         pcomp.inputFiles = new ArrayList<String>();

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/main/java/org/apache/accumulo/server/AccumuloServerContext.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/AccumuloServerContext.java b/server/base/src/main/java/org/apache/accumulo/server/AccumuloServerContext.java
index 315ea59..a35f39c 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/AccumuloServerContext.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/AccumuloServerContext.java
@@ -25,12 +25,12 @@ import org.apache.accumulo.core.client.Instance;
 import org.apache.accumulo.core.client.ZooKeeperInstance;
 import org.apache.accumulo.core.client.impl.ClientContext;
 import org.apache.accumulo.core.client.impl.ConnectorImpl;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.client.mock.MockInstance;
 import org.apache.accumulo.core.client.security.tokens.PasswordToken;
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.conf.Property;
 import org.apache.accumulo.core.rpc.SslConnectionParams;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.server.client.HdfsZooInstance;
 import org.apache.accumulo.server.conf.ServerConfigurationFactory;
 import org.apache.accumulo.server.rpc.SaslServerConnectionParams;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/main/java/org/apache/accumulo/server/client/BulkImporter.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/client/BulkImporter.java b/server/base/src/main/java/org/apache/accumulo/server/client/BulkImporter.java
index 747e224..283d304 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/client/BulkImporter.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/client/BulkImporter.java
@@ -46,8 +46,8 @@ import org.apache.accumulo.core.client.impl.thrift.ThriftTableOperationException
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.conf.Property;
 import org.apache.accumulo.core.data.ByteSequence;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Range;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.data.thrift.TKeyExtent;
 import org.apache.accumulo.core.file.FileOperations;
 import org.apache.accumulo.core.file.FileSKVIterator;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/main/java/org/apache/accumulo/server/client/ClientServiceHandler.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/client/ClientServiceHandler.java b/server/base/src/main/java/org/apache/accumulo/server/client/ClientServiceHandler.java
index aabda72..00e0346 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/client/ClientServiceHandler.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/client/ClientServiceHandler.java
@@ -34,6 +34,7 @@ import org.apache.accumulo.core.client.AccumuloSecurityException;
 import org.apache.accumulo.core.client.Instance;
 import org.apache.accumulo.core.client.NamespaceNotFoundException;
 import org.apache.accumulo.core.client.TableNotFoundException;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.client.impl.Namespaces;
 import org.apache.accumulo.core.client.impl.Tables;
 import org.apache.accumulo.core.client.impl.thrift.ClientService;
@@ -50,7 +51,6 @@ import org.apache.accumulo.core.client.security.tokens.PasswordToken;
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.conf.Property;
 import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.core.security.NamespacePermission;
 import org.apache.accumulo.core.security.SystemPermission;
 import org.apache.accumulo.core.security.TablePermission;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/main/java/org/apache/accumulo/server/client/HdfsZooInstance.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/client/HdfsZooInstance.java b/server/base/src/main/java/org/apache/accumulo/server/client/HdfsZooInstance.java
index f64f941..0d7aaf1 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/client/HdfsZooInstance.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/client/HdfsZooInstance.java
@@ -29,16 +29,16 @@ import org.apache.accumulo.core.client.AccumuloException;
 import org.apache.accumulo.core.client.AccumuloSecurityException;
 import org.apache.accumulo.core.client.Connector;
 import org.apache.accumulo.core.client.Instance;
-import org.apache.accumulo.core.client.ZooKeeperInstance;
 import org.apache.accumulo.core.client.impl.ClientContext;
 import org.apache.accumulo.core.client.impl.ConnectorImpl;
+import org.apache.accumulo.core.client.impl.Credentials;
+import org.apache.accumulo.core.client.impl.InstanceOperationsImpl;
 import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
 import org.apache.accumulo.core.client.security.tokens.PasswordToken;
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.conf.Property;
 import org.apache.accumulo.core.conf.SiteConfiguration;
 import org.apache.accumulo.core.metadata.RootTable;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.core.util.ByteBufferUtil;
 import org.apache.accumulo.core.util.OpTimer;
 import org.apache.accumulo.core.util.TextUtil;
@@ -141,7 +141,7 @@ public class HdfsZooInstance implements Instance {
 
   @Override
   public String getInstanceName() {
-    return ZooKeeperInstance.lookupInstanceName(zooCache, UUID.fromString(getInstanceID()));
+    return InstanceOperationsImpl.lookupInstanceName(zooCache, UUID.fromString(getInstanceID()));
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/main/java/org/apache/accumulo/server/conf/ServerConfiguration.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/conf/ServerConfiguration.java b/server/base/src/main/java/org/apache/accumulo/server/conf/ServerConfiguration.java
index f2b2042..0b63927 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/conf/ServerConfiguration.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/conf/ServerConfiguration.java
@@ -18,7 +18,7 @@ package org.apache.accumulo.server.conf;
 
 import org.apache.accumulo.core.client.Instance;
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 
 public abstract class ServerConfiguration {
 

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/main/java/org/apache/accumulo/server/conf/ServerConfigurationFactory.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/conf/ServerConfigurationFactory.java b/server/base/src/main/java/org/apache/accumulo/server/conf/ServerConfigurationFactory.java
index 2ec9ba1..a45ff56 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/conf/ServerConfigurationFactory.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/conf/ServerConfigurationFactory.java
@@ -26,7 +26,7 @@ import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.conf.ConfigSanityCheck;
 import org.apache.accumulo.core.conf.DefaultConfiguration;
 import org.apache.accumulo.core.conf.SiteConfiguration;
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.fate.zookeeper.ZooCacheFactory;
 
 /**

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/main/java/org/apache/accumulo/server/constraints/MetadataConstraints.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/constraints/MetadataConstraints.java b/server/base/src/main/java/org/apache/accumulo/server/constraints/MetadataConstraints.java
index c95fad9..fd5af14 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/constraints/MetadataConstraints.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/constraints/MetadataConstraints.java
@@ -27,9 +27,9 @@ import java.util.List;
 import org.apache.accumulo.core.Constants;
 import org.apache.accumulo.core.constraints.Constraint;
 import org.apache.accumulo.core.data.ColumnUpdate;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.metadata.MetadataTable;
 import org.apache.accumulo.core.metadata.schema.DataFileValue;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/main/java/org/apache/accumulo/server/fs/VolumeManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/fs/VolumeManagerImpl.java b/server/base/src/main/java/org/apache/accumulo/server/fs/VolumeManagerImpl.java
index e047383..d167dd2 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/fs/VolumeManagerImpl.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/fs/VolumeManagerImpl.java
@@ -33,7 +33,7 @@ import org.apache.accumulo.core.conf.DefaultConfiguration;
 import org.apache.accumulo.core.conf.Property;
 import org.apache.accumulo.core.conf.SiteConfiguration;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.file.rfile.RFile;
 import org.apache.accumulo.core.util.CachedConfiguration;
 import org.apache.accumulo.core.volume.NonConfiguredVolume;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/main/java/org/apache/accumulo/server/fs/VolumeUtil.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/fs/VolumeUtil.java b/server/base/src/main/java/org/apache/accumulo/server/fs/VolumeUtil.java
index fc26ca4..c3595cd 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/fs/VolumeUtil.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/fs/VolumeUtil.java
@@ -26,7 +26,7 @@ import java.util.Map.Entry;
 import java.util.SortedMap;
 import java.util.TreeMap;
 
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.metadata.schema.DataFileValue;
 import org.apache.accumulo.core.protobuf.ProtobufUtil;
 import org.apache.accumulo.core.tabletserver.log.LogEntry;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/main/java/org/apache/accumulo/server/init/Initialize.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/init/Initialize.java b/server/base/src/main/java/org/apache/accumulo/server/init/Initialize.java
index e5bdded..c6f1dd8 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/init/Initialize.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/init/Initialize.java
@@ -47,8 +47,8 @@ import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.conf.Property;
 import org.apache.accumulo.core.conf.SiteConfiguration;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.file.FileOperations;
 import org.apache.accumulo.core.file.FileSKVWriter;
 import org.apache.accumulo.core.iterators.Combiner;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/main/java/org/apache/accumulo/server/master/LiveTServerSet.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/master/LiveTServerSet.java b/server/base/src/main/java/org/apache/accumulo/server/master/LiveTServerSet.java
index cad9bb7..0ea6b41 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/master/LiveTServerSet.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/master/LiveTServerSet.java
@@ -29,7 +29,7 @@ import java.util.Set;
 import org.apache.accumulo.core.Constants;
 import org.apache.accumulo.core.client.impl.ClientContext;
 import org.apache.accumulo.core.client.impl.thrift.ThriftSecurityException;
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.master.thrift.TabletServerStatus;
 import org.apache.accumulo.core.rpc.ThriftUtil;
 import org.apache.accumulo.core.tabletserver.thrift.NotServingTabletException;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/main/java/org/apache/accumulo/server/master/balancer/ChaoticLoadBalancer.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/master/balancer/ChaoticLoadBalancer.java b/server/base/src/main/java/org/apache/accumulo/server/master/balancer/ChaoticLoadBalancer.java
index aa8e219..dc58495 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/master/balancer/ChaoticLoadBalancer.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/master/balancer/ChaoticLoadBalancer.java
@@ -26,7 +26,7 @@ import java.util.Set;
 import java.util.SortedMap;
 
 import org.apache.accumulo.core.client.impl.thrift.ThriftSecurityException;
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.master.thrift.TableInfo;
 import org.apache.accumulo.core.master.thrift.TabletServerStatus;
 import org.apache.accumulo.core.metadata.MetadataTable;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/main/java/org/apache/accumulo/server/master/balancer/DefaultLoadBalancer.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/master/balancer/DefaultLoadBalancer.java b/server/base/src/main/java/org/apache/accumulo/server/master/balancer/DefaultLoadBalancer.java
index 810dd25..56b3839 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/master/balancer/DefaultLoadBalancer.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/master/balancer/DefaultLoadBalancer.java
@@ -27,7 +27,7 @@ import java.util.Objects;
 import java.util.Set;
 import java.util.SortedMap;
 
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.master.thrift.TableInfo;
 import org.apache.accumulo.core.master.thrift.TabletServerStatus;
 import org.apache.accumulo.core.tabletserver.thrift.TabletStats;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/main/java/org/apache/accumulo/server/master/balancer/GroupBalancer.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/master/balancer/GroupBalancer.java b/server/base/src/main/java/org/apache/accumulo/server/master/balancer/GroupBalancer.java
index ac74f15..fb4e0d9 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/master/balancer/GroupBalancer.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/master/balancer/GroupBalancer.java
@@ -33,8 +33,8 @@ import org.apache.accumulo.core.client.IsolatedScanner;
 import org.apache.accumulo.core.client.RowIterator;
 import org.apache.accumulo.core.client.Scanner;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.master.thrift.TabletServerStatus;
 import org.apache.accumulo.core.metadata.MetadataTable;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/main/java/org/apache/accumulo/server/master/balancer/RegexGroupBalancer.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/master/balancer/RegexGroupBalancer.java b/server/base/src/main/java/org/apache/accumulo/server/master/balancer/RegexGroupBalancer.java
index 9ebf178..724a606 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/master/balancer/RegexGroupBalancer.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/master/balancer/RegexGroupBalancer.java
@@ -23,7 +23,7 @@ import java.util.regex.Pattern;
 
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.conf.Property;
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.hadoop.io.Text;
 
 import com.google.common.base.Function;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/main/java/org/apache/accumulo/server/master/balancer/TableLoadBalancer.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/master/balancer/TableLoadBalancer.java b/server/base/src/main/java/org/apache/accumulo/server/master/balancer/TableLoadBalancer.java
index dfce953..7d76572 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/master/balancer/TableLoadBalancer.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/master/balancer/TableLoadBalancer.java
@@ -29,7 +29,7 @@ import org.apache.accumulo.core.client.AccumuloException;
 import org.apache.accumulo.core.client.AccumuloSecurityException;
 import org.apache.accumulo.core.client.admin.TableOperations;
 import org.apache.accumulo.core.conf.Property;
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.master.state.tables.TableState;
 import org.apache.accumulo.core.master.thrift.TabletServerStatus;
 import org.apache.accumulo.server.master.state.TServerInstance;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/main/java/org/apache/accumulo/server/master/balancer/TabletBalancer.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/master/balancer/TabletBalancer.java b/server/base/src/main/java/org/apache/accumulo/server/master/balancer/TabletBalancer.java
index 02d5ffb..a199288 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/master/balancer/TabletBalancer.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/master/balancer/TabletBalancer.java
@@ -24,7 +24,7 @@ import java.util.Set;
 import java.util.SortedMap;
 
 import org.apache.accumulo.core.client.impl.thrift.ThriftSecurityException;
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.master.thrift.TabletServerStatus;
 import org.apache.accumulo.core.rpc.ThriftUtil;
 import org.apache.accumulo.core.tabletserver.thrift.TabletClientService;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/main/java/org/apache/accumulo/server/master/state/Assignment.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/master/state/Assignment.java b/server/base/src/main/java/org/apache/accumulo/server/master/state/Assignment.java
index f1a9b3f..6a7530b 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/master/state/Assignment.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/master/state/Assignment.java
@@ -16,7 +16,7 @@
  */
 package org.apache.accumulo.server.master.state;
 
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 
 public class Assignment {
   public KeyExtent tablet;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/main/java/org/apache/accumulo/server/master/state/CurrentState.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/master/state/CurrentState.java b/server/base/src/main/java/org/apache/accumulo/server/master/state/CurrentState.java
index af02dde..8b1c6f3 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/master/state/CurrentState.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/master/state/CurrentState.java
@@ -19,7 +19,7 @@ package org.apache.accumulo.server.master.state;
 import java.util.Collection;
 import java.util.Set;
 
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.master.thrift.MasterState;
 
 public interface CurrentState {

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/main/java/org/apache/accumulo/server/master/state/MergeInfo.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/master/state/MergeInfo.java b/server/base/src/main/java/org/apache/accumulo/server/master/state/MergeInfo.java
index 388da05..076876c 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/master/state/MergeInfo.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/master/state/MergeInfo.java
@@ -20,7 +20,7 @@ import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
 
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.hadoop.io.Writable;
 
 /**

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/main/java/org/apache/accumulo/server/master/state/MetaDataTableScanner.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/master/state/MetaDataTableScanner.java b/server/base/src/main/java/org/apache/accumulo/server/master/state/MetaDataTableScanner.java
index 9be5a67..d64c108 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/master/state/MetaDataTableScanner.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/master/state/MetaDataTableScanner.java
@@ -32,9 +32,9 @@ import org.apache.accumulo.core.client.IteratorSetting;
 import org.apache.accumulo.core.client.ScannerBase;
 import org.apache.accumulo.core.client.impl.ClientContext;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.iterators.user.WholeRowIterator;
 import org.apache.accumulo.core.metadata.MetadataTable;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/main/java/org/apache/accumulo/server/master/state/TabletLocationState.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/master/state/TabletLocationState.java b/server/base/src/main/java/org/apache/accumulo/server/master/state/TabletLocationState.java
index 2e79ba9..fb30440 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/master/state/TabletLocationState.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/master/state/TabletLocationState.java
@@ -20,7 +20,7 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.Set;
 
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.hadoop.io.Text;
 
 /**

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/main/java/org/apache/accumulo/server/master/state/TabletMigration.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/master/state/TabletMigration.java b/server/base/src/main/java/org/apache/accumulo/server/master/state/TabletMigration.java
index 573b2eb..4c18b31 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/master/state/TabletMigration.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/master/state/TabletMigration.java
@@ -16,7 +16,7 @@
  */
 package org.apache.accumulo.server.master.state;
 
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 
 public class TabletMigration {
   public KeyExtent tablet;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/main/java/org/apache/accumulo/server/master/state/TabletStateChangeIterator.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/master/state/TabletStateChangeIterator.java b/server/base/src/main/java/org/apache/accumulo/server/master/state/TabletStateChangeIterator.java
index a972a6a..236b602 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/master/state/TabletStateChangeIterator.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/master/state/TabletStateChangeIterator.java
@@ -31,8 +31,8 @@ import java.util.Set;
 
 import org.apache.accumulo.core.client.IteratorSetting;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.iterators.IteratorEnvironment;
 import org.apache.accumulo.core.iterators.SkippingIterator;
 import org.apache.accumulo.core.iterators.SortedKeyValueIterator;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/main/java/org/apache/accumulo/server/rpc/SaslServerDigestCallbackHandler.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/rpc/SaslServerDigestCallbackHandler.java b/server/base/src/main/java/org/apache/accumulo/server/rpc/SaslServerDigestCallbackHandler.java
index c43f7ed..6e5e8df 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/rpc/SaslServerDigestCallbackHandler.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/rpc/SaslServerDigestCallbackHandler.java
@@ -27,8 +27,8 @@ import javax.security.auth.callback.UnsupportedCallbackException;
 import javax.security.sasl.AuthorizeCallback;
 import javax.security.sasl.RealmCallback;
 
+import org.apache.accumulo.core.client.impl.AuthenticationTokenIdentifier;
 import org.apache.accumulo.core.rpc.SaslDigestCallbackHandler;
-import org.apache.accumulo.core.security.AuthenticationTokenIdentifier;
 import org.apache.accumulo.server.security.delegation.AuthenticationTokenSecretManager;
 import org.apache.hadoop.security.UserGroupInformation;
 import org.apache.hadoop.security.token.SecretManager.InvalidToken;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/main/java/org/apache/accumulo/server/rpc/TCredentialsUpdatingInvocationHandler.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/rpc/TCredentialsUpdatingInvocationHandler.java b/server/base/src/main/java/org/apache/accumulo/server/rpc/TCredentialsUpdatingInvocationHandler.java
index 4e0e931..06ca99f 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/rpc/TCredentialsUpdatingInvocationHandler.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/rpc/TCredentialsUpdatingInvocationHandler.java
@@ -21,10 +21,10 @@ import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.util.concurrent.ConcurrentHashMap;
 
+import org.apache.accumulo.core.client.impl.DelegationTokenImpl;
 import org.apache.accumulo.core.client.impl.thrift.SecurityErrorCode;
 import org.apache.accumulo.core.client.impl.thrift.ThriftSecurityException;
 import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
-import org.apache.accumulo.core.client.security.tokens.DelegationToken;
 import org.apache.accumulo.core.client.security.tokens.KerberosToken;
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.rpc.SaslConnectionParams.SaslMechanism;
@@ -88,7 +88,7 @@ public class TCredentialsUpdatingInvocationHandler<I> implements InvocationHandl
     final String principal = UGIAssumingProcessor.rpcPrincipal();
 
     // If we authenticated the user over DIGEST-MD5 and they have a DelegationToken, the principals should match
-    if (SaslMechanism.DIGEST_MD5 == UGIAssumingProcessor.rpcMechanism() && DelegationToken.class.isAssignableFrom(tokenClass)) {
+    if (SaslMechanism.DIGEST_MD5 == UGIAssumingProcessor.rpcMechanism() && DelegationTokenImpl.class.isAssignableFrom(tokenClass)) {
       if (!principal.equals(tcreds.principal)) {
         log.warn("{} issued RPC with delegation token over DIGEST-MD5 as the Accumulo principal {}. Disallowing RPC", principal, tcreds.principal);
         throw new ThriftSecurityException("RPC principal did not match provided Accumulo principal", SecurityErrorCode.BAD_CREDENTIALS);

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/main/java/org/apache/accumulo/server/security/AuditedSecurityOperation.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/security/AuditedSecurityOperation.java b/server/base/src/main/java/org/apache/accumulo/server/security/AuditedSecurityOperation.java
index 283cba3..60f36e0 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/security/AuditedSecurityOperation.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/security/AuditedSecurityOperation.java
@@ -25,12 +25,13 @@ import java.util.Map;
 import java.util.Map.Entry;
 
 import org.apache.accumulo.core.client.TableNotFoundException;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.client.impl.Tables;
 import org.apache.accumulo.core.client.impl.Translator;
 import org.apache.accumulo.core.client.impl.thrift.ThriftSecurityException;
 import org.apache.accumulo.core.data.Column;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Range;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.data.thrift.IterInfo;
 import org.apache.accumulo.core.data.thrift.TColumn;
 import org.apache.accumulo.core.data.thrift.TKeyExtent;
@@ -38,7 +39,6 @@ import org.apache.accumulo.core.data.thrift.TRange;
 import org.apache.accumulo.core.master.thrift.FateOperation;
 import org.apache.accumulo.core.metadata.MetadataTable;
 import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.core.security.SystemPermission;
 import org.apache.accumulo.core.security.TablePermission;
 import org.apache.accumulo.core.security.thrift.TCredentials;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/main/java/org/apache/accumulo/server/security/SecurityOperation.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/security/SecurityOperation.java b/server/base/src/main/java/org/apache/accumulo/server/security/SecurityOperation.java
index d7bee31..c463cad 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/security/SecurityOperation.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/security/SecurityOperation.java
@@ -27,6 +27,7 @@ import org.apache.accumulo.core.Constants;
 import org.apache.accumulo.core.client.AccumuloSecurityException;
 import org.apache.accumulo.core.client.NamespaceNotFoundException;
 import org.apache.accumulo.core.client.TableNotFoundException;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.client.impl.Namespaces;
 import org.apache.accumulo.core.client.impl.SecurityOperationsImpl;
 import org.apache.accumulo.core.client.impl.thrift.SecurityErrorCode;
@@ -43,7 +44,6 @@ import org.apache.accumulo.core.metadata.MetadataTable;
 import org.apache.accumulo.core.metadata.RootTable;
 import org.apache.accumulo.core.replication.ReplicationTable;
 import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.core.security.NamespacePermission;
 import org.apache.accumulo.core.security.SystemPermission;
 import org.apache.accumulo.core.security.TablePermission;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/main/java/org/apache/accumulo/server/security/SystemCredentials.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/security/SystemCredentials.java b/server/base/src/main/java/org/apache/accumulo/server/security/SystemCredentials.java
index 6a915c6..0b44727 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/security/SystemCredentials.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/security/SystemCredentials.java
@@ -28,12 +28,12 @@ import java.util.Map.Entry;
 
 import org.apache.accumulo.core.Constants;
 import org.apache.accumulo.core.client.Instance;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
 import org.apache.accumulo.core.client.security.tokens.PasswordToken;
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.conf.Property;
 import org.apache.accumulo.core.conf.SiteConfiguration;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.core.security.thrift.TCredentials;
 import org.apache.accumulo.core.util.Base64;
 import org.apache.accumulo.server.ServerConstants;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/main/java/org/apache/accumulo/server/security/delegation/AuthenticationTokenSecretManager.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/security/delegation/AuthenticationTokenSecretManager.java b/server/base/src/main/java/org/apache/accumulo/server/security/delegation/AuthenticationTokenSecretManager.java
index 4848609..a52b5f4 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/security/delegation/AuthenticationTokenSecretManager.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/security/delegation/AuthenticationTokenSecretManager.java
@@ -32,8 +32,8 @@ import javax.crypto.SecretKey;
 import org.apache.accumulo.core.client.AccumuloException;
 import org.apache.accumulo.core.client.Instance;
 import org.apache.accumulo.core.client.admin.DelegationTokenConfig;
-import org.apache.accumulo.core.client.security.tokens.DelegationToken;
-import org.apache.accumulo.core.security.AuthenticationTokenIdentifier;
+import org.apache.accumulo.core.client.impl.AuthenticationTokenIdentifier;
+import org.apache.accumulo.core.client.impl.DelegationTokenImpl;
 import org.apache.hadoop.io.Text;
 import org.apache.hadoop.security.token.SecretManager;
 import org.apache.hadoop.security.token.Token;
@@ -152,7 +152,7 @@ public class AuthenticationTokenSecretManager extends SecretManager<Authenticati
 
     final AuthenticationTokenIdentifier id = new AuthenticationTokenIdentifier(username, cfg);
 
-    final StringBuilder svcName = new StringBuilder(DelegationToken.SERVICE_NAME);
+    final StringBuilder svcName = new StringBuilder(DelegationTokenImpl.SERVICE_NAME);
     if (null != id.getInstanceId()) {
       svcName.append("-").append(id.getInstanceId());
     }

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/main/java/org/apache/accumulo/server/security/handler/KerberosAuthenticator.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/security/handler/KerberosAuthenticator.java b/server/base/src/main/java/org/apache/accumulo/server/security/handler/KerberosAuthenticator.java
index fd7d055..4ec4ba4 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/security/handler/KerberosAuthenticator.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/security/handler/KerberosAuthenticator.java
@@ -24,10 +24,10 @@ import java.util.Set;
 
 import org.apache.accumulo.core.Constants;
 import org.apache.accumulo.core.client.AccumuloSecurityException;
+import org.apache.accumulo.core.client.impl.DelegationTokenImpl;
 import org.apache.accumulo.core.client.impl.thrift.SecurityErrorCode;
 import org.apache.accumulo.core.client.impl.thrift.ThriftSecurityException;
 import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
-import org.apache.accumulo.core.client.security.tokens.DelegationToken;
 import org.apache.accumulo.core.client.security.tokens.KerberosToken;
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.conf.SiteConfiguration;
@@ -132,7 +132,7 @@ public class KerberosAuthenticator implements Authenticator {
     }
 
     // User is authenticated at the transport layer -- nothing extra is necessary
-    if (token instanceof KerberosToken || token instanceof DelegationToken) {
+    if (token instanceof KerberosToken || token instanceof DelegationTokenImpl) {
       return true;
     }
     return false;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/main/java/org/apache/accumulo/server/tabletserver/LargestFirstMemoryManager.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/tabletserver/LargestFirstMemoryManager.java b/server/base/src/main/java/org/apache/accumulo/server/tabletserver/LargestFirstMemoryManager.java
index 2dced61..323e59d 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/tabletserver/LargestFirstMemoryManager.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/tabletserver/LargestFirstMemoryManager.java
@@ -23,7 +23,7 @@ import java.util.Map.Entry;
 import java.util.TreeMap;
 
 import org.apache.accumulo.core.conf.Property;
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.server.conf.ServerConfiguration;
 import org.apache.hadoop.io.Text;
 import org.slf4j.Logger;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/main/java/org/apache/accumulo/server/tabletserver/MemoryManagementActions.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/tabletserver/MemoryManagementActions.java b/server/base/src/main/java/org/apache/accumulo/server/tabletserver/MemoryManagementActions.java
index 3cbe25d..09dbff6 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/tabletserver/MemoryManagementActions.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/tabletserver/MemoryManagementActions.java
@@ -18,7 +18,7 @@ package org.apache.accumulo.server.tabletserver;
 
 import java.util.List;
 
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 
 public class MemoryManagementActions {
   public List<KeyExtent> tabletsToMinorCompact;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/main/java/org/apache/accumulo/server/tabletserver/MemoryManager.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/tabletserver/MemoryManager.java b/server/base/src/main/java/org/apache/accumulo/server/tabletserver/MemoryManager.java
index 11327f6..24aa45f 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/tabletserver/MemoryManager.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/tabletserver/MemoryManager.java
@@ -18,7 +18,7 @@ package org.apache.accumulo.server.tabletserver;
 
 import java.util.List;
 
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.server.conf.ServerConfiguration;
 
 /**

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/main/java/org/apache/accumulo/server/tabletserver/TabletState.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/tabletserver/TabletState.java b/server/base/src/main/java/org/apache/accumulo/server/tabletserver/TabletState.java
index 78301e8..dfb0a70 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/tabletserver/TabletState.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/tabletserver/TabletState.java
@@ -16,7 +16,7 @@
  */
 package org.apache.accumulo.server.tabletserver;
 
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 
 public interface TabletState {
   KeyExtent getExtent();

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/main/java/org/apache/accumulo/server/util/Admin.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/util/Admin.java b/server/base/src/main/java/org/apache/accumulo/server/util/Admin.java
index 8ad8eeb..bdbc7f0 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/util/Admin.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/util/Admin.java
@@ -40,6 +40,7 @@ import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.client.admin.InstanceOperations;
 import org.apache.accumulo.core.client.impl.ClientContext;
 import org.apache.accumulo.core.client.impl.ClientExec;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.client.impl.MasterClient;
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.conf.DefaultConfiguration;
@@ -48,7 +49,6 @@ import org.apache.accumulo.core.conf.SiteConfiguration;
 import org.apache.accumulo.core.master.thrift.MasterClientService;
 import org.apache.accumulo.core.metadata.MetadataTable;
 import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.core.security.NamespacePermission;
 import org.apache.accumulo.core.security.SystemPermission;
 import org.apache.accumulo.core.security.TablePermission;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/main/java/org/apache/accumulo/server/util/CheckForMetadataProblems.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/util/CheckForMetadataProblems.java b/server/base/src/main/java/org/apache/accumulo/server/util/CheckForMetadataProblems.java
index 253b666..b081a60 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/util/CheckForMetadataProblems.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/util/CheckForMetadataProblems.java
@@ -26,8 +26,8 @@ import java.util.TreeSet;
 import org.apache.accumulo.core.client.AccumuloSecurityException;
 import org.apache.accumulo.core.client.Scanner;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.metadata.MetadataTable;
 import org.apache.accumulo.core.metadata.RootTable;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/main/java/org/apache/accumulo/server/util/FileUtil.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/util/FileUtil.java b/server/base/src/main/java/org/apache/accumulo/server/util/FileUtil.java
index 29700c7..04e17d5 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/util/FileUtil.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/util/FileUtil.java
@@ -32,10 +32,10 @@ import java.util.TreeMap;
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.conf.Property;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.PartialKey;
 import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.file.FileOperations;
 import org.apache.accumulo.core.file.FileSKVIterator;
 import org.apache.accumulo.core.file.FileSKVWriter;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/main/java/org/apache/accumulo/server/util/FindOfflineTablets.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/util/FindOfflineTablets.java b/server/base/src/main/java/org/apache/accumulo/server/util/FindOfflineTablets.java
index 9461d8d..1db53a4 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/util/FindOfflineTablets.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/util/FindOfflineTablets.java
@@ -24,8 +24,8 @@ import org.apache.accumulo.core.client.AccumuloException;
 import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.client.impl.ClientContext;
 import org.apache.accumulo.core.client.impl.Tables;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Range;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.master.state.tables.TableState;
 import org.apache.accumulo.core.metadata.MetadataTable;
 import org.apache.accumulo.core.metadata.RootTable;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/main/java/org/apache/accumulo/server/util/MasterMetadataUtil.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/util/MasterMetadataUtil.java b/server/base/src/main/java/org/apache/accumulo/server/util/MasterMetadataUtil.java
index d5a4223..14eba68 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/util/MasterMetadataUtil.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/util/MasterMetadataUtil.java
@@ -33,11 +33,11 @@ import org.apache.accumulo.core.client.Scanner;
 import org.apache.accumulo.core.client.impl.ClientContext;
 import org.apache.accumulo.core.client.impl.ScannerImpl;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
 import org.apache.accumulo.core.data.PartialKey;
 import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.metadata.MetadataTable;
 import org.apache.accumulo.core.metadata.schema.DataFileValue;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/main/java/org/apache/accumulo/server/util/MetadataTableUtil.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/util/MetadataTableUtil.java b/server/base/src/main/java/org/apache/accumulo/server/util/MetadataTableUtil.java
index 0e2a2e7..5e74aac 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/util/MetadataTableUtil.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/util/MetadataTableUtil.java
@@ -48,14 +48,15 @@ import org.apache.accumulo.core.client.Scanner;
 import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.client.impl.BatchWriterImpl;
 import org.apache.accumulo.core.client.impl.ClientContext;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.client.impl.ScannerImpl;
 import org.apache.accumulo.core.client.impl.Writer;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
 import org.apache.accumulo.core.data.PartialKey;
 import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.metadata.MetadataTable;
 import org.apache.accumulo.core.metadata.RootTable;
 import org.apache.accumulo.core.metadata.schema.DataFileValue;
@@ -69,7 +70,6 @@ import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.Sc
 import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.ServerColumnFamily;
 import org.apache.accumulo.core.replication.ReplicationTable;
 import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.core.tabletserver.log.LogEntry;
 import org.apache.accumulo.core.tabletserver.thrift.ConstraintViolationException;
 import org.apache.accumulo.core.util.ColumnFQ;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/main/java/org/apache/accumulo/server/util/RemoveEntriesForMissingFiles.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/util/RemoveEntriesForMissingFiles.java b/server/base/src/main/java/org/apache/accumulo/server/util/RemoveEntriesForMissingFiles.java
index 0a2cbe9..c9d4dd5 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/util/RemoveEntriesForMissingFiles.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/util/RemoveEntriesForMissingFiles.java
@@ -34,18 +34,18 @@ import org.apache.accumulo.core.client.ClientConfiguration;
 import org.apache.accumulo.core.client.Connector;
 import org.apache.accumulo.core.client.Scanner;
 import org.apache.accumulo.core.client.impl.ClientContext;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.client.impl.Tables;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
 import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.metadata.MetadataTable;
 import org.apache.accumulo.core.metadata.RootTable;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.DataFileColumnFamily;
 import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.server.cli.ClientOpts;
 import org.apache.accumulo.server.fs.VolumeManager;
 import org.apache.accumulo.server.fs.VolumeManagerImpl;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/main/java/org/apache/accumulo/server/util/ReplicationTableUtil.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/util/ReplicationTableUtil.java b/server/base/src/main/java/org/apache/accumulo/server/util/ReplicationTableUtil.java
index af02a8d..8e755a3 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/util/ReplicationTableUtil.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/util/ReplicationTableUtil.java
@@ -31,18 +31,18 @@ import org.apache.accumulo.core.client.IteratorSetting.Column;
 import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.client.admin.TableOperations;
 import org.apache.accumulo.core.client.impl.ClientContext;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.client.impl.Writer;
 import org.apache.accumulo.core.conf.Property;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.iterators.Combiner;
 import org.apache.accumulo.core.iterators.IteratorUtil.IteratorScope;
 import org.apache.accumulo.core.metadata.MetadataTable;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema.ReplicationSection;
 import org.apache.accumulo.core.protobuf.ProtobufUtil;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.core.tabletserver.thrift.ConstraintViolationException;
 import org.apache.accumulo.core.util.UtilWaitThread;
 import org.apache.accumulo.server.replication.StatusCombiner;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/main/java/org/apache/accumulo/server/util/TableDiskUsage.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/util/TableDiskUsage.java b/server/base/src/main/java/org/apache/accumulo/server/util/TableDiskUsage.java
index 9086d14..684e532 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/util/TableDiskUsage.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/util/TableDiskUsage.java
@@ -37,8 +37,8 @@ import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.conf.DefaultConfiguration;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.metadata.MetadataTable;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.DataFileColumnFamily;
 import org.apache.accumulo.core.security.Authorizations;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/main/java/org/apache/accumulo/server/util/TabletIterator.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/util/TabletIterator.java b/server/base/src/main/java/org/apache/accumulo/server/util/TabletIterator.java
index 0bfdf6b..ea308d6 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/util/TabletIterator.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/util/TabletIterator.java
@@ -26,10 +26,10 @@ import java.util.TreeMap;
 
 import org.apache.accumulo.core.client.Scanner;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.PartialKey;
 import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.metadata.MetadataTable;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection;
 import org.apache.accumulo.core.util.UtilWaitThread;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/main/java/org/apache/accumulo/server/util/VerifyTabletAssignments.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/util/VerifyTabletAssignments.java b/server/base/src/main/java/org/apache/accumulo/server/util/VerifyTabletAssignments.java
index 42eb414..c0c979b 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/util/VerifyTabletAssignments.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/util/VerifyTabletAssignments.java
@@ -32,10 +32,11 @@ import org.apache.accumulo.core.client.AccumuloSecurityException;
 import org.apache.accumulo.core.client.Connector;
 import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.client.impl.ClientContext;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.client.impl.Tables;
 import org.apache.accumulo.core.client.impl.thrift.ThriftSecurityException;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Range;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.data.thrift.InitialMultiScan;
 import org.apache.accumulo.core.data.thrift.IterInfo;
 import org.apache.accumulo.core.data.thrift.MultiScanResult;
@@ -45,7 +46,6 @@ import org.apache.accumulo.core.data.thrift.TRange;
 import org.apache.accumulo.core.metadata.MetadataServicer;
 import org.apache.accumulo.core.rpc.ThriftUtil;
 import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.core.tabletserver.thrift.NoSuchScanIDException;
 import org.apache.accumulo.core.tabletserver.thrift.TabletClientService;
 import org.apache.accumulo.core.trace.Tracer;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/test/java/org/apache/accumulo/server/AccumuloServerContextTest.java
----------------------------------------------------------------------
diff --git a/server/base/src/test/java/org/apache/accumulo/server/AccumuloServerContextTest.java b/server/base/src/test/java/org/apache/accumulo/server/AccumuloServerContextTest.java
index 92b6be8..a596d9f 100644
--- a/server/base/src/test/java/org/apache/accumulo/server/AccumuloServerContextTest.java
+++ b/server/base/src/test/java/org/apache/accumulo/server/AccumuloServerContextTest.java
@@ -27,12 +27,12 @@ import java.util.Map.Entry;
 import org.apache.accumulo.core.client.ClientConfiguration;
 import org.apache.accumulo.core.client.ClientConfiguration.ClientProperty;
 import org.apache.accumulo.core.client.impl.ClientContext;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.client.mock.MockInstance;
 import org.apache.accumulo.core.client.security.tokens.PasswordToken;
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.conf.Property;
 import org.apache.accumulo.core.conf.SiteConfiguration;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.server.conf.ServerConfigurationFactory;
 import org.apache.accumulo.server.rpc.SaslServerConnectionParams;
 import org.apache.accumulo.server.rpc.ThriftServerType;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/test/java/org/apache/accumulo/server/client/BulkImporterTest.java
----------------------------------------------------------------------
diff --git a/server/base/src/test/java/org/apache/accumulo/server/client/BulkImporterTest.java b/server/base/src/test/java/org/apache/accumulo/server/client/BulkImporterTest.java
index fad6398..8d649d2 100644
--- a/server/base/src/test/java/org/apache/accumulo/server/client/BulkImporterTest.java
+++ b/server/base/src/test/java/org/apache/accumulo/server/client/BulkImporterTest.java
@@ -29,18 +29,18 @@ import org.apache.accumulo.core.client.ClientConfiguration;
 import org.apache.accumulo.core.client.Instance;
 import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.client.impl.ClientContext;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.client.impl.TabletLocator;
 import org.apache.accumulo.core.client.impl.TabletLocator.TabletLocation;
 import org.apache.accumulo.core.client.mock.MockInstance;
 import org.apache.accumulo.core.client.security.tokens.PasswordToken;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
 import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.file.FileOperations;
 import org.apache.accumulo.core.file.FileSKVWriter;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.core.util.CachedConfiguration;
 import org.apache.accumulo.server.fs.VolumeManager;
 import org.apache.accumulo.server.fs.VolumeManagerImpl;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/test/java/org/apache/accumulo/server/master/balancer/ChaoticLoadBalancerTest.java
----------------------------------------------------------------------
diff --git a/server/base/src/test/java/org/apache/accumulo/server/master/balancer/ChaoticLoadBalancerTest.java b/server/base/src/test/java/org/apache/accumulo/server/master/balancer/ChaoticLoadBalancerTest.java
index 1b691c7..0fb9182 100644
--- a/server/base/src/test/java/org/apache/accumulo/server/master/balancer/ChaoticLoadBalancerTest.java
+++ b/server/base/src/test/java/org/apache/accumulo/server/master/balancer/ChaoticLoadBalancerTest.java
@@ -29,7 +29,7 @@ import java.util.SortedMap;
 import java.util.TreeMap;
 
 import org.apache.accumulo.core.client.impl.thrift.ThriftSecurityException;
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.master.thrift.TableInfo;
 import org.apache.accumulo.core.master.thrift.TabletServerStatus;
 import org.apache.accumulo.core.tabletserver.thrift.TabletStats;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/test/java/org/apache/accumulo/server/master/balancer/DefaultLoadBalancerTest.java
----------------------------------------------------------------------
diff --git a/server/base/src/test/java/org/apache/accumulo/server/master/balancer/DefaultLoadBalancerTest.java b/server/base/src/test/java/org/apache/accumulo/server/master/balancer/DefaultLoadBalancerTest.java
index aee15bc..aee1795 100644
--- a/server/base/src/test/java/org/apache/accumulo/server/master/balancer/DefaultLoadBalancerTest.java
+++ b/server/base/src/test/java/org/apache/accumulo/server/master/balancer/DefaultLoadBalancerTest.java
@@ -32,7 +32,7 @@ import java.util.SortedMap;
 import java.util.TreeMap;
 
 import org.apache.accumulo.core.client.impl.thrift.ThriftSecurityException;
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.master.thrift.TableInfo;
 import org.apache.accumulo.core.master.thrift.TabletServerStatus;
 import org.apache.accumulo.core.tabletserver.thrift.TabletStats;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/test/java/org/apache/accumulo/server/master/balancer/GroupBalancerTest.java
----------------------------------------------------------------------
diff --git a/server/base/src/test/java/org/apache/accumulo/server/master/balancer/GroupBalancerTest.java b/server/base/src/test/java/org/apache/accumulo/server/master/balancer/GroupBalancerTest.java
index 3ceb07e..5de4923 100644
--- a/server/base/src/test/java/org/apache/accumulo/server/master/balancer/GroupBalancerTest.java
+++ b/server/base/src/test/java/org/apache/accumulo/server/master/balancer/GroupBalancerTest.java
@@ -28,7 +28,7 @@ import java.util.Set;
 import java.util.SortedMap;
 import java.util.TreeMap;
 
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.master.thrift.TabletServerStatus;
 import org.apache.accumulo.core.util.MapCounter;
 import org.apache.accumulo.core.util.Pair;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/test/java/org/apache/accumulo/server/master/balancer/TableLoadBalancerTest.java
----------------------------------------------------------------------
diff --git a/server/base/src/test/java/org/apache/accumulo/server/master/balancer/TableLoadBalancerTest.java b/server/base/src/test/java/org/apache/accumulo/server/master/balancer/TableLoadBalancerTest.java
index 4d36f47..c957009 100644
--- a/server/base/src/test/java/org/apache/accumulo/server/master/balancer/TableLoadBalancerTest.java
+++ b/server/base/src/test/java/org/apache/accumulo/server/master/balancer/TableLoadBalancerTest.java
@@ -32,7 +32,7 @@ import org.apache.accumulo.core.client.mock.MockInstance;
 import org.apache.accumulo.core.client.security.tokens.PasswordToken;
 import org.apache.accumulo.core.conf.DefaultConfiguration;
 import org.apache.accumulo.core.conf.Property;
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.master.thrift.TableInfo;
 import org.apache.accumulo.core.master.thrift.TabletServerStatus;
 import org.apache.accumulo.core.tabletserver.thrift.TabletStats;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/test/java/org/apache/accumulo/server/master/state/MergeInfoTest.java
----------------------------------------------------------------------
diff --git a/server/base/src/test/java/org/apache/accumulo/server/master/state/MergeInfoTest.java b/server/base/src/test/java/org/apache/accumulo/server/master/state/MergeInfoTest.java
index 6f8795b..1ce5dd8 100644
--- a/server/base/src/test/java/org/apache/accumulo/server/master/state/MergeInfoTest.java
+++ b/server/base/src/test/java/org/apache/accumulo/server/master/state/MergeInfoTest.java
@@ -31,7 +31,7 @@ import java.io.ByteArrayOutputStream;
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
 
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.hadoop.io.DataInputBuffer;
 import org.apache.hadoop.io.DataOutputBuffer;
 import org.apache.hadoop.io.Text;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/test/java/org/apache/accumulo/server/master/state/TabletLocationStateTest.java
----------------------------------------------------------------------
diff --git a/server/base/src/test/java/org/apache/accumulo/server/master/state/TabletLocationStateTest.java b/server/base/src/test/java/org/apache/accumulo/server/master/state/TabletLocationStateTest.java
index a7b673b..0a0afd1 100644
--- a/server/base/src/test/java/org/apache/accumulo/server/master/state/TabletLocationStateTest.java
+++ b/server/base/src/test/java/org/apache/accumulo/server/master/state/TabletLocationStateTest.java
@@ -28,7 +28,7 @@ import static org.junit.Assert.assertTrue;
 import java.util.Collection;
 import java.util.Set;
 
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.hadoop.io.Text;
 import org.junit.Before;
 import org.junit.BeforeClass;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/test/java/org/apache/accumulo/server/rpc/SaslDigestCallbackHandlerTest.java
----------------------------------------------------------------------
diff --git a/server/base/src/test/java/org/apache/accumulo/server/rpc/SaslDigestCallbackHandlerTest.java b/server/base/src/test/java/org/apache/accumulo/server/rpc/SaslDigestCallbackHandlerTest.java
index 6c965ff..616bc45 100644
--- a/server/base/src/test/java/org/apache/accumulo/server/rpc/SaslDigestCallbackHandlerTest.java
+++ b/server/base/src/test/java/org/apache/accumulo/server/rpc/SaslDigestCallbackHandlerTest.java
@@ -34,8 +34,8 @@ import javax.security.auth.callback.UnsupportedCallbackException;
 
 import org.apache.accumulo.core.client.Instance;
 import org.apache.accumulo.core.client.admin.DelegationTokenConfig;
+import org.apache.accumulo.core.client.impl.AuthenticationTokenIdentifier;
 import org.apache.accumulo.core.rpc.SaslDigestCallbackHandler;
-import org.apache.accumulo.core.security.AuthenticationTokenIdentifier;
 import org.apache.accumulo.server.security.delegation.AuthenticationKey;
 import org.apache.accumulo.server.security.delegation.AuthenticationTokenSecretManager;
 import org.apache.hadoop.security.token.Token;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/test/java/org/apache/accumulo/server/security/SystemCredentialsTest.java
----------------------------------------------------------------------
diff --git a/server/base/src/test/java/org/apache/accumulo/server/security/SystemCredentialsTest.java b/server/base/src/test/java/org/apache/accumulo/server/security/SystemCredentialsTest.java
index 9d5dd68..1af908b 100644
--- a/server/base/src/test/java/org/apache/accumulo/server/security/SystemCredentialsTest.java
+++ b/server/base/src/test/java/org/apache/accumulo/server/security/SystemCredentialsTest.java
@@ -24,8 +24,8 @@ import java.io.IOException;
 import java.util.UUID;
 
 import org.apache.accumulo.core.client.impl.ConnectorImpl;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.client.mock.MockInstance;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.server.ServerConstants;
 import org.apache.accumulo.server.security.SystemCredentials.SystemToken;
 import org.junit.BeforeClass;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/test/java/org/apache/accumulo/server/security/delegation/AuthenticationTokenSecretManagerTest.java
----------------------------------------------------------------------
diff --git a/server/base/src/test/java/org/apache/accumulo/server/security/delegation/AuthenticationTokenSecretManagerTest.java b/server/base/src/test/java/org/apache/accumulo/server/security/delegation/AuthenticationTokenSecretManagerTest.java
index b614819..2649a03 100644
--- a/server/base/src/test/java/org/apache/accumulo/server/security/delegation/AuthenticationTokenSecretManagerTest.java
+++ b/server/base/src/test/java/org/apache/accumulo/server/security/delegation/AuthenticationTokenSecretManagerTest.java
@@ -40,7 +40,7 @@ import javax.crypto.KeyGenerator;
 import org.apache.accumulo.core.client.AccumuloException;
 import org.apache.accumulo.core.client.Instance;
 import org.apache.accumulo.core.client.admin.DelegationTokenConfig;
-import org.apache.accumulo.core.security.AuthenticationTokenIdentifier;
+import org.apache.accumulo.core.client.impl.AuthenticationTokenIdentifier;
 import org.apache.hadoop.security.token.SecretManager.InvalidToken;
 import org.apache.hadoop.security.token.Token;
 import org.junit.After;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/test/java/org/apache/accumulo/server/util/CloneTest.java
----------------------------------------------------------------------
diff --git a/server/base/src/test/java/org/apache/accumulo/server/util/CloneTest.java b/server/base/src/test/java/org/apache/accumulo/server/util/CloneTest.java
index ebb83bf..0c696a1 100644
--- a/server/base/src/test/java/org/apache/accumulo/server/util/CloneTest.java
+++ b/server/base/src/test/java/org/apache/accumulo/server/util/CloneTest.java
@@ -28,9 +28,9 @@ import org.apache.accumulo.core.client.Scanner;
 import org.apache.accumulo.core.client.mock.MockInstance;
 import org.apache.accumulo.core.client.security.tokens.PasswordToken;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.metadata.MetadataTable;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.DataFileColumnFamily;


[9/9] accumulo git commit: Merge branch '1.7'

Posted by kt...@apache.org.
Merge branch '1.7'


Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/4e88af79
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/4e88af79
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/4e88af79

Branch: refs/heads/master
Commit: 4e88af793cd8e0bffdd2c1738d7e38fad57ec407
Parents: 7d2eb67 d1e6e79
Author: Keith Turner <kt...@apache.org>
Authored: Tue Apr 21 18:12:08 2015 -0400
Committer: Keith Turner <kt...@apache.org>
Committed: Tue Apr 21 18:12:08 2015 -0400

----------------------------------------------------------------------
 README.md                                       |  30 +-
 core/pom.xml                                    |  57 ++
 core/src/main/findbugs/exclude-filter.xml       |   1 +
 .../core/client/ClientConfiguration.java        |   8 +
 .../core/client/ClientSideIteratorScanner.java  |  27 +-
 .../accumulo/core/client/IsolatedScanner.java   |   4 +-
 .../core/client/MutationsRejectedException.java |  68 +-
 .../accumulo/core/client/ZooKeeperInstance.java |  21 +-
 .../core/client/admin/ActiveCompaction.java     |  12 +-
 .../accumulo/core/client/admin/ActiveScan.java  |  12 +-
 .../client/admin/DelegationTokenConfig.java     |   4 +-
 .../core/client/admin/SecurityOperations.java   |   3 +-
 .../core/client/impl/ActiveCompactionImpl.java  |  19 +-
 .../core/client/impl/ActiveScanImpl.java        |  14 +-
 .../impl/AuthenticationTokenIdentifier.java     | 210 +++++
 .../core/client/impl/ClientContext.java         |   1 -
 .../core/client/impl/ConditionalWriterImpl.java |   2 +-
 .../accumulo/core/client/impl/Credentials.java  | 157 ++++
 .../core/client/impl/DelegationTokenImpl.java   | 144 ++++
 .../client/impl/InstanceOperationsImpl.java     |  18 +
 .../client/impl/NamespaceOperationsImpl.java    |   1 -
 .../core/client/impl/OfflineScanner.java        |   3 +-
 .../core/client/impl/RootTabletLocator.java     |   2 +-
 .../client/impl/SecurityOperationsImpl.java     |   4 +-
 .../core/client/impl/TableOperationsImpl.java   |   2 +-
 .../core/client/impl/TabletLocator.java         |   2 +-
 .../core/client/impl/TabletLocatorImpl.java     |   2 +-
 .../impl/TabletServerBatchReaderIterator.java   |   2 +-
 .../client/impl/TabletServerBatchWriter.java    |   8 +-
 .../accumulo/core/client/impl/TabletType.java   |   2 +-
 .../core/client/impl/ThriftScanner.java         |   2 +-
 .../core/client/impl/TimeoutTabletLocator.java  |   2 +-
 .../accumulo/core/client/impl/Translator.java   |   2 +-
 .../accumulo/core/client/impl/Writer.java       |   2 +-
 .../core/client/mapred/AbstractInputFormat.java |  78 +-
 .../client/mapred/AccumuloFileOutputFormat.java |   5 +-
 .../client/mapred/AccumuloOutputFormat.java     |  23 +-
 .../client/mapreduce/AbstractInputFormat.java   |  82 +-
 .../mapreduce/AccumuloFileOutputFormat.java     |   5 +-
 .../client/mapreduce/AccumuloOutputFormat.java  |  21 +-
 .../core/client/mapreduce/RangeInputSplit.java  |  24 +-
 .../mapreduce/impl/AccumuloInputSplit.java      |  73 +-
 .../client/mapreduce/impl/BatchInputSplit.java  |  21 +-
 .../core/client/mapreduce/impl/SplitUtils.java  |  59 ++
 .../mapreduce/lib/impl/ConfiguratorBase.java    |  16 +-
 .../mapreduce/lib/impl/InputConfigurator.java   |   8 +-
 .../core/client/mock/MockConnector.java         |   2 +-
 .../accumulo/core/client/mock/MockInstance.java |   2 +-
 .../client/mock/impl/MockTabletLocator.java     |   2 +-
 .../client/security/tokens/DelegationToken.java | 134 +---
 .../accumulo/core/constraints/Constraint.java   |   2 +-
 .../core/constraints/VisibilityConstraint.java  |  93 +++
 .../accumulo/core/data/ComparableBytes.java     |   5 +
 .../apache/accumulo/core/data/KeyExtent.java    | 717 +++--------------
 .../org/apache/accumulo/core/data/TabletID.java |  29 +
 .../core/data/impl/ComparableBytes.java         |  53 ++
 .../accumulo/core/data/impl/KeyExtent.java      | 768 +++++++++++++++++++
 .../accumulo/core/data/impl/TabletIDImpl.java   | 100 +++
 .../accumulo/core/iterators/IteratorUtil.java   |  40 +-
 .../core/iterators/system/MultiIterator.java    |   2 +-
 .../core/metadata/MetadataLocationObtainer.java |   2 +-
 .../core/metadata/MetadataServicer.java         |   2 +-
 .../accumulo/core/metadata/RootTable.java       |   2 +-
 .../core/metadata/ServicerForRootTable.java     |   2 +-
 .../core/metadata/TableMetadataServicer.java    |   2 +-
 .../ReplicationConfigurationUtil.java           |   2 +-
 .../rpc/SaslClientDigestCallbackHandler.java    |   4 +-
 .../accumulo/core/rpc/SaslConnectionParams.java |   6 +-
 .../security/AuthenticationTokenIdentifier.java | 210 -----
 .../accumulo/core/security/Credentials.java     | 157 ----
 .../core/security/VisibilityConstraint.java     |  76 +-
 .../core/security/VisibilityEvaluator.java      |  10 +-
 .../core/tabletserver/log/LogEntry.java         |   2 +-
 .../org/apache/accumulo/core/util/Merge.java    |   2 +-
 .../core/client/impl/ScannerImplTest.java       |   1 -
 .../client/impl/TableOperationsImplTest.java    |   3 +-
 .../core/client/impl/TabletLocatorImplTest.java |   3 +-
 .../impl/TabletServerBatchReaderTest.java       |   1 -
 .../mapred/AccumuloFileOutputFormatTest.java    |   5 +-
 .../core/client/mapred/TokenFileTest.java       |   2 +-
 .../mapreduce/AccumuloFileOutputFormatTest.java |   5 +-
 .../core/client/mapreduce/TokenFileTest.java    |   2 +-
 .../tokens/DelegationTokenImplTest.java         |  73 ++
 .../security/tokens/DelegationTokenTest.java    |  72 --
 .../accumulo/core/data/KeyExtentTest.java       |   1 +
 .../apache/accumulo/core/data/RangeTest.java    |   1 +
 .../accumulo/core/file/rfile/RFileTest.java     |   2 +-
 .../core/iterators/IteratorUtilTest.java        |   2 +-
 .../iterators/system/MultiIteratorTest.java     |   2 +-
 .../core/metadata/MetadataServicerTest.java     |   2 +-
 .../ReplicationConfigurationUtilTest.java       |   2 +-
 .../core/rpc/SaslConnectionParamsTest.java      |  12 +-
 .../AuthenticationTokenIdentifierTest.java      |   1 +
 .../accumulo/core/security/CredentialsTest.java |   1 +
 .../core/security/VisibilityConstraintTest.java |   1 +
 .../apache/accumulo/core/util/MergeTest.java    |   2 +-
 .../simple/client/RandomBatchWriter.java        |   6 +-
 minicluster/pom.xml                             |  29 +
 .../impl/MiniAccumuloClusterImpl.java           |   2 +-
 pom.xml                                         |   5 +
 .../org/apache/accumulo/proxy/ProxyServer.java  |   8 +-
 .../accumulo/server/AccumuloServerContext.java  |   2 +-
 .../accumulo/server/client/BulkImporter.java    |   2 +-
 .../server/client/ClientServiceHandler.java     |   2 +-
 .../accumulo/server/client/HdfsZooInstance.java |   6 +-
 .../server/conf/ServerConfiguration.java        |   2 +-
 .../server/conf/ServerConfigurationFactory.java |   2 +-
 .../server/constraints/MetadataConstraints.java |   2 +-
 .../accumulo/server/fs/VolumeManagerImpl.java   |   2 +-
 .../apache/accumulo/server/fs/VolumeUtil.java   |   2 +-
 .../apache/accumulo/server/init/Initialize.java |   2 +-
 .../accumulo/server/master/LiveTServerSet.java  |   2 +-
 .../master/balancer/ChaoticLoadBalancer.java    |   2 +-
 .../master/balancer/DefaultLoadBalancer.java    |   2 +-
 .../server/master/balancer/GroupBalancer.java   |   2 +-
 .../master/balancer/RegexGroupBalancer.java     |   2 +-
 .../master/balancer/TableLoadBalancer.java      |   2 +-
 .../server/master/balancer/TabletBalancer.java  |   2 +-
 .../server/master/state/Assignment.java         |   2 +-
 .../server/master/state/CurrentState.java       |   2 +-
 .../accumulo/server/master/state/MergeInfo.java |   2 +-
 .../master/state/MetaDataTableScanner.java      |   2 +-
 .../master/state/TabletLocationState.java       |   2 +-
 .../server/master/state/TabletMigration.java    |   2 +-
 .../master/state/TabletStateChangeIterator.java |   2 +-
 .../rpc/SaslServerDigestCallbackHandler.java    |   2 +-
 .../TCredentialsUpdatingInvocationHandler.java  |   4 +-
 .../security/AuditedSecurityOperation.java      |   4 +-
 .../server/security/SecurityOperation.java      |   2 +-
 .../server/security/SystemCredentials.java      |   2 +-
 .../AuthenticationTokenSecretManager.java       |   6 +-
 .../security/handler/KerberosAuthenticator.java |   4 +-
 .../tabletserver/LargestFirstMemoryManager.java |   2 +-
 .../tabletserver/MemoryManagementActions.java   |   2 +-
 .../server/tabletserver/MemoryManager.java      |   2 +-
 .../server/tabletserver/TabletState.java        |   2 +-
 .../org/apache/accumulo/server/util/Admin.java  |   2 +-
 .../server/util/CheckForMetadataProblems.java   |   2 +-
 .../apache/accumulo/server/util/FileUtil.java   |   2 +-
 .../server/util/FindOfflineTablets.java         |   2 +-
 .../server/util/MasterMetadataUtil.java         |   2 +-
 .../accumulo/server/util/MetadataTableUtil.java |   4 +-
 .../util/RemoveEntriesForMissingFiles.java      |   4 +-
 .../server/util/ReplicationTableUtil.java       |   4 +-
 .../accumulo/server/util/TableDiskUsage.java    |   2 +-
 .../accumulo/server/util/TabletIterator.java    |   2 +-
 .../server/util/VerifyTabletAssignments.java    |   4 +-
 .../server/AccumuloServerContextTest.java       |   2 +-
 .../server/client/BulkImporterTest.java         |   4 +-
 .../balancer/ChaoticLoadBalancerTest.java       |   2 +-
 .../balancer/DefaultLoadBalancerTest.java       |   2 +-
 .../master/balancer/GroupBalancerTest.java      |   2 +-
 .../master/balancer/TableLoadBalancerTest.java  |   2 +-
 .../server/master/state/MergeInfoTest.java      |   2 +-
 .../master/state/TabletLocationStateTest.java   |   2 +-
 .../rpc/SaslDigestCallbackHandlerTest.java      |   2 +-
 .../server/security/SystemCredentialsTest.java  |   2 +-
 .../AuthenticationTokenSecretManagerTest.java   |   2 +-
 .../apache/accumulo/server/util/CloneTest.java  |   2 +-
 .../server/util/ReplicationTableUtilTest.java   |   4 +-
 .../server/util/TabletIteratorTest.java         |   2 +-
 .../accumulo/gc/GarbageCollectionAlgorithm.java |   2 +-
 .../accumulo/gc/GarbageCollectionTest.java      |   2 +-
 .../accumulo/gc/SimpleGarbageCollectorTest.java |   2 +-
 .../CloseWriteAheadLogReferencesTest.java       |   2 +-
 .../java/org/apache/accumulo/master/Master.java |   2 +-
 .../master/MasterClientServiceHandler.java      |   4 +-
 .../accumulo/master/TabletGroupWatcher.java     |   2 +-
 .../master/recovery/RecoveryManager.java        |   2 +-
 .../accumulo/master/state/MergeStats.java       |   2 +-
 .../accumulo/master/tableOps/BulkImport.java    |   2 +-
 .../accumulo/master/tableOps/CompactRange.java  |   2 +-
 .../accumulo/master/tableOps/CreateTable.java   |   2 +-
 .../accumulo/master/tableOps/DeleteTable.java   |   2 +-
 .../accumulo/master/tableOps/ExportTable.java   |   2 +-
 .../accumulo/master/tableOps/ImportTable.java   |   2 +-
 .../accumulo/master/tableOps/TableRangeOp.java  |   2 +-
 .../master/ReplicationOperationsImplTest.java   |   4 +-
 .../apache/accumulo/master/TestMergeState.java  |   2 +-
 .../replication/SequentialWorkAssignerTest.java |   2 +-
 .../master/replication/StatusMakerTest.java     |   2 +-
 .../replication/UnorderedWorkAssignerTest.java  |   2 +-
 .../master/state/RootTabletStateStoreTest.java  |   2 +-
 .../monitor/servlets/TServersServlet.java       |   2 +-
 .../monitor/servlets/TablesServlet.java         |   2 +-
 .../tserver/ActiveAssignmentRunnable.java       |   2 +-
 .../tserver/ConditionalMutationSet.java         |   2 +-
 .../apache/accumulo/tserver/FileManager.java    |   2 +-
 .../org/apache/accumulo/tserver/RowLocks.java   |   2 +-
 .../apache/accumulo/tserver/TabletServer.java   |   2 +-
 .../tserver/TabletServerResourceManager.java    |   2 +-
 .../accumulo/tserver/TservConstraintEnv.java    |   2 +-
 .../apache/accumulo/tserver/WriteTracker.java   |   2 +-
 .../compaction/MajorCompactionRequest.java      |   2 +-
 .../tserver/constraints/ConstraintChecker.java  |   2 +-
 .../apache/accumulo/tserver/log/DfsLogger.java  |   2 +-
 .../accumulo/tserver/log/SortedLogRecovery.java |   2 +-
 .../tserver/log/TabletServerLogger.java         |   2 +-
 .../accumulo/tserver/logger/LogFileKey.java     |   2 +-
 .../accumulo/tserver/logger/LogReader.java      |   2 +-
 .../mastermessage/SplitReportMessage.java       |   2 +-
 .../mastermessage/TabletStatusMessage.java      |   2 +-
 .../replication/AccumuloReplicaSystem.java      |   2 +-
 .../accumulo/tserver/scan/LookupTask.java       |   2 +-
 .../tserver/session/MultiScanSession.java       |   2 +-
 .../accumulo/tserver/session/ScanSession.java   |   2 +-
 .../accumulo/tserver/session/UpdateSession.java |   2 +-
 .../accumulo/tserver/tablet/CommitSession.java  |   2 +-
 .../accumulo/tserver/tablet/CompactionInfo.java |   2 +-
 .../accumulo/tserver/tablet/Compactor.java      |   2 +-
 .../tserver/tablet/DatafileManager.java         |   2 +-
 .../apache/accumulo/tserver/tablet/Tablet.java  |   2 +-
 .../tserver/tablet/TabletCommitter.java         |   2 +-
 .../LargestFirstMemoryManagerTest.java          |   2 +-
 .../accumulo/tserver/AssignmentWatcherTest.java |   2 +-
 .../tserver/CheckTabletMetadataTest.java        |   2 +-
 .../tserver/TabletResourceManagerTest.java      |   2 +-
 .../DefaultCompactionStrategyTest.java          |   2 +-
 .../SizeLimitCompactionStrategyTest.java        |   2 +-
 .../ConfigurableCompactionStrategyTest.java     |   2 +-
 .../constraints/ConstraintCheckerTest.java      |   2 +-
 .../tserver/log/SortedLogRecoveryTest.java      |   2 +-
 .../accumulo/tserver/logger/LogFileTest.java    |   2 +-
 .../replication/AccumuloReplicaSystemTest.java  |   2 +-
 .../replication/ReplicationProcessorTest.java   |   2 +-
 .../accumulo/tserver/tablet/TabletTest.java     |   2 +-
 .../commands/ActiveCompactionIterator.java      |   2 +-
 .../shell/commands/ActiveScanIterator.java      |   2 +-
 .../shell/commands/CreateTableCommand.java      |   2 +-
 .../shell/commands/GetSplitsCommand.java        |   2 +-
 .../accumulo/shell/commands/InsertCommand.java  |   6 +-
 .../accumulo/test/QueryMetadataTable.java       |   2 +-
 .../org/apache/accumulo/test/TestIngest.java    |   6 +-
 .../apache/accumulo/test/WrongTabletTest.java   |   4 +-
 .../continuous/ContinuousStatsCollector.java    |   4 +-
 .../metadata/MetadataBatchScanTest.java         |   2 +-
 .../performance/scan/CollectTabletStats.java    |   4 +-
 .../test/performance/thrift/NullTserver.java    |   2 +-
 .../randomwalk/security/AlterTablePerm.java     |   2 +-
 .../test/randomwalk/security/Authenticate.java  |   2 +-
 .../test/randomwalk/security/ChangePass.java    |   2 +-
 .../test/randomwalk/security/DropTable.java     |   2 +-
 .../test/randomwalk/security/SetAuths.java      |   2 +-
 .../randomwalk/security/WalkingSecurity.java    |   2 +-
 .../randomwalk/sequential/MapRedVerifyTool.java |   4 +-
 .../server/security/SystemCredentialsIT.java    |   2 +-
 .../test/MasterRepairsDualAssignmentIT.java     |   4 +-
 .../accumulo/test/MetaConstraintRetryIT.java    |   4 +-
 .../accumulo/test/MultiTableBatchWriterIT.java  |   2 +-
 .../org/apache/accumulo/test/NamespacesIT.java  |   6 +-
 .../apache/accumulo/test/SplitRecoveryIT.java   |   2 +-
 .../accumulo/test/TransportCachingIT.java       |   2 +-
 .../java/org/apache/accumulo/test/VolumeIT.java |   2 +-
 .../test/functional/AccumuloInputFormatIT.java  |   2 +-
 .../functional/BalanceAfterCommsFailureIT.java  |   2 +-
 .../BalanceInPresenceOfOfflineTableIT.java      |   2 +-
 .../test/functional/DynamicThreadPoolsIT.java   |   2 +-
 .../accumulo/test/functional/KerberosIT.java    |  37 +-
 .../test/functional/MasterAssignmentIT.java     |   4 +-
 .../test/functional/MetadataMaxFilesIT.java     |   2 +-
 .../accumulo/test/functional/PermissionsIT.java |   2 +-
 .../functional/SimpleBalancerFairnessIT.java    |   2 +-
 .../accumulo/test/functional/SplitIT.java       |   2 +-
 .../test/functional/SplitRecoveryIT.java        |   2 +-
 .../accumulo/test/functional/TableIT.java       |   2 +-
 .../functional/TabletStateChangeIteratorIT.java |   2 +-
 ...bageCollectorCommunicatesWithTServersIT.java |   2 +-
 ...UnusedWalDoesntCloseReplicationStatusIT.java |   2 +-
 268 files changed, 2583 insertions(+), 1779 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/4e88af79/core/pom.xml
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/accumulo/blob/4e88af79/minicluster/pom.xml
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/accumulo/blob/4e88af79/pom.xml
----------------------------------------------------------------------


[2/9] accumulo git commit: ACCUMULO-3657 ACCUMULO-3548 Clarify Accumulo API

Posted by kt...@apache.org.
http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/test/java/org/apache/accumulo/server/util/ReplicationTableUtilTest.java
----------------------------------------------------------------------
diff --git a/server/base/src/test/java/org/apache/accumulo/server/util/ReplicationTableUtilTest.java b/server/base/src/test/java/org/apache/accumulo/server/util/ReplicationTableUtilTest.java
index b1010c2..3983bde 100644
--- a/server/base/src/test/java/org/apache/accumulo/server/util/ReplicationTableUtilTest.java
+++ b/server/base/src/test/java/org/apache/accumulo/server/util/ReplicationTableUtilTest.java
@@ -37,20 +37,20 @@ import org.apache.accumulo.core.client.IteratorSetting;
 import org.apache.accumulo.core.client.IteratorSetting.Column;
 import org.apache.accumulo.core.client.admin.TableOperations;
 import org.apache.accumulo.core.client.impl.ClientContext;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.client.impl.Writer;
 import org.apache.accumulo.core.client.mock.MockInstance;
 import org.apache.accumulo.core.client.security.tokens.PasswordToken;
 import org.apache.accumulo.core.conf.Property;
 import org.apache.accumulo.core.data.ColumnUpdate;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.iterators.Combiner;
 import org.apache.accumulo.core.iterators.IteratorUtil.IteratorScope;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema.ReplicationSection;
 import org.apache.accumulo.core.protobuf.ProtobufUtil;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.server.replication.StatusCombiner;
 import org.apache.accumulo.server.replication.StatusUtil;
 import org.apache.accumulo.server.replication.proto.Replication.Status;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/base/src/test/java/org/apache/accumulo/server/util/TabletIteratorTest.java
----------------------------------------------------------------------
diff --git a/server/base/src/test/java/org/apache/accumulo/server/util/TabletIteratorTest.java b/server/base/src/test/java/org/apache/accumulo/server/util/TabletIteratorTest.java
index 0e81b79..9c6cee1 100644
--- a/server/base/src/test/java/org/apache/accumulo/server/util/TabletIteratorTest.java
+++ b/server/base/src/test/java/org/apache/accumulo/server/util/TabletIteratorTest.java
@@ -27,10 +27,10 @@ import org.apache.accumulo.core.client.Scanner;
 import org.apache.accumulo.core.client.mock.MockInstance;
 import org.apache.accumulo.core.client.security.tokens.PasswordToken;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
 import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.metadata.MetadataTable;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/gc/src/main/java/org/apache/accumulo/gc/GarbageCollectionAlgorithm.java
----------------------------------------------------------------------
diff --git a/server/gc/src/main/java/org/apache/accumulo/gc/GarbageCollectionAlgorithm.java b/server/gc/src/main/java/org/apache/accumulo/gc/GarbageCollectionAlgorithm.java
index 16212c7..b0818fd 100644
--- a/server/gc/src/main/java/org/apache/accumulo/gc/GarbageCollectionAlgorithm.java
+++ b/server/gc/src/main/java/org/apache/accumulo/gc/GarbageCollectionAlgorithm.java
@@ -33,8 +33,8 @@ import org.apache.accumulo.core.client.AccumuloException;
 import org.apache.accumulo.core.client.AccumuloSecurityException;
 import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.DataFileColumnFamily;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.ScanFileColumnFamily;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/gc/src/test/java/org/apache/accumulo/gc/GarbageCollectionTest.java
----------------------------------------------------------------------
diff --git a/server/gc/src/test/java/org/apache/accumulo/gc/GarbageCollectionTest.java b/server/gc/src/test/java/org/apache/accumulo/gc/GarbageCollectionTest.java
index ed71e98..544bd69 100644
--- a/server/gc/src/test/java/org/apache/accumulo/gc/GarbageCollectionTest.java
+++ b/server/gc/src/test/java/org/apache/accumulo/gc/GarbageCollectionTest.java
@@ -31,8 +31,8 @@ import java.util.TreeSet;
 import org.apache.accumulo.core.client.AccumuloException;
 import org.apache.accumulo.core.client.AccumuloSecurityException;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.metadata.schema.DataFileValue;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema;
 import org.apache.accumulo.server.replication.StatusUtil;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/gc/src/test/java/org/apache/accumulo/gc/SimpleGarbageCollectorTest.java
----------------------------------------------------------------------
diff --git a/server/gc/src/test/java/org/apache/accumulo/gc/SimpleGarbageCollectorTest.java b/server/gc/src/test/java/org/apache/accumulo/gc/SimpleGarbageCollectorTest.java
index d30f00b..59f1b36 100644
--- a/server/gc/src/test/java/org/apache/accumulo/gc/SimpleGarbageCollectorTest.java
+++ b/server/gc/src/test/java/org/apache/accumulo/gc/SimpleGarbageCollectorTest.java
@@ -35,10 +35,10 @@ import java.util.Map;
 import java.util.Map.Entry;
 
 import org.apache.accumulo.core.client.Instance;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.conf.ConfigurationCopy;
 import org.apache.accumulo.core.conf.Property;
 import org.apache.accumulo.core.conf.SiteConfiguration;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.core.security.thrift.TCredentials;
 import org.apache.accumulo.core.trace.thrift.TInfo;
 import org.apache.accumulo.gc.SimpleGarbageCollector.Opts;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/gc/src/test/java/org/apache/accumulo/gc/replication/CloseWriteAheadLogReferencesTest.java
----------------------------------------------------------------------
diff --git a/server/gc/src/test/java/org/apache/accumulo/gc/replication/CloseWriteAheadLogReferencesTest.java b/server/gc/src/test/java/org/apache/accumulo/gc/replication/CloseWriteAheadLogReferencesTest.java
index 23db83a..3115de1 100644
--- a/server/gc/src/test/java/org/apache/accumulo/gc/replication/CloseWriteAheadLogReferencesTest.java
+++ b/server/gc/src/test/java/org/apache/accumulo/gc/replication/CloseWriteAheadLogReferencesTest.java
@@ -46,9 +46,9 @@ import org.apache.accumulo.core.conf.ConfigurationCopy;
 import org.apache.accumulo.core.conf.Property;
 import org.apache.accumulo.core.conf.SiteConfiguration;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.metadata.MetadataTable;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema.ReplicationSection;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/master/src/main/java/org/apache/accumulo/master/Master.java
----------------------------------------------------------------------
diff --git a/server/master/src/main/java/org/apache/accumulo/master/Master.java b/server/master/src/main/java/org/apache/accumulo/master/Master.java
index a7e8db1..4d52cc5 100644
--- a/server/master/src/main/java/org/apache/accumulo/master/Master.java
+++ b/server/master/src/main/java/org/apache/accumulo/master/Master.java
@@ -51,8 +51,8 @@ import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.conf.Property;
 import org.apache.accumulo.core.conf.SiteConfiguration;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.master.state.tables.TableState;
 import org.apache.accumulo.core.master.thrift.MasterClientService.Iface;
 import org.apache.accumulo.core.master.thrift.MasterClientService.Processor;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/master/src/main/java/org/apache/accumulo/master/MasterClientServiceHandler.java
----------------------------------------------------------------------
diff --git a/server/master/src/main/java/org/apache/accumulo/master/MasterClientServiceHandler.java b/server/master/src/main/java/org/apache/accumulo/master/MasterClientServiceHandler.java
index 06f91a0..592d9ae 100644
--- a/server/master/src/main/java/org/apache/accumulo/master/MasterClientServiceHandler.java
+++ b/server/master/src/main/java/org/apache/accumulo/master/MasterClientServiceHandler.java
@@ -36,6 +36,7 @@ import org.apache.accumulo.core.client.RowIterator;
 import org.apache.accumulo.core.client.Scanner;
 import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.client.admin.DelegationTokenConfig;
+import org.apache.accumulo.core.client.impl.AuthenticationTokenIdentifier;
 import org.apache.accumulo.core.client.impl.DelegationTokenConfigSerializer;
 import org.apache.accumulo.core.client.impl.Tables;
 import org.apache.accumulo.core.client.impl.thrift.SecurityErrorCode;
@@ -45,9 +46,9 @@ import org.apache.accumulo.core.client.impl.thrift.ThriftSecurityException;
 import org.apache.accumulo.core.client.impl.thrift.ThriftTableOperationException;
 import org.apache.accumulo.core.conf.Property;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.data.thrift.TKeyExtent;
 import org.apache.accumulo.core.master.thrift.MasterClientService;
 import org.apache.accumulo.core.master.thrift.MasterGoalState;
@@ -64,7 +65,6 @@ import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.Lo
 import org.apache.accumulo.core.protobuf.ProtobufUtil;
 import org.apache.accumulo.core.replication.ReplicationSchema.OrderSection;
 import org.apache.accumulo.core.replication.ReplicationTable;
-import org.apache.accumulo.core.security.AuthenticationTokenIdentifier;
 import org.apache.accumulo.core.security.Authorizations;
 import org.apache.accumulo.core.security.thrift.TCredentials;
 import org.apache.accumulo.core.security.thrift.TDelegationToken;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/master/src/main/java/org/apache/accumulo/master/TabletGroupWatcher.java
----------------------------------------------------------------------
diff --git a/server/master/src/main/java/org/apache/accumulo/master/TabletGroupWatcher.java b/server/master/src/main/java/org/apache/accumulo/master/TabletGroupWatcher.java
index 1cf00d4..4c47953 100644
--- a/server/master/src/main/java/org/apache/accumulo/master/TabletGroupWatcher.java
+++ b/server/master/src/main/java/org/apache/accumulo/master/TabletGroupWatcher.java
@@ -42,11 +42,11 @@ import org.apache.accumulo.core.client.RowIterator;
 import org.apache.accumulo.core.client.Scanner;
 import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
 import org.apache.accumulo.core.data.PartialKey;
 import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.master.state.tables.TableState;
 import org.apache.accumulo.core.master.thrift.MasterState;
 import org.apache.accumulo.core.master.thrift.TabletServerStatus;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/master/src/main/java/org/apache/accumulo/master/recovery/RecoveryManager.java
----------------------------------------------------------------------
diff --git a/server/master/src/main/java/org/apache/accumulo/master/recovery/RecoveryManager.java b/server/master/src/main/java/org/apache/accumulo/master/recovery/RecoveryManager.java
index b872d65..c1c1713 100644
--- a/server/master/src/main/java/org/apache/accumulo/master/recovery/RecoveryManager.java
+++ b/server/master/src/main/java/org/apache/accumulo/master/recovery/RecoveryManager.java
@@ -33,7 +33,7 @@ import java.util.concurrent.TimeUnit;
 import org.apache.accumulo.core.Constants;
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.conf.Property;
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.util.NamingThreadFactory;
 import org.apache.accumulo.core.zookeeper.ZooUtil;
 import org.apache.accumulo.master.Master;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/master/src/main/java/org/apache/accumulo/master/state/MergeStats.java
----------------------------------------------------------------------
diff --git a/server/master/src/main/java/org/apache/accumulo/master/state/MergeStats.java b/server/master/src/main/java/org/apache/accumulo/master/state/MergeStats.java
index 5815a46..a3c7e46 100644
--- a/server/master/src/main/java/org/apache/accumulo/master/state/MergeStats.java
+++ b/server/master/src/main/java/org/apache/accumulo/master/state/MergeStats.java
@@ -25,9 +25,9 @@ import org.apache.accumulo.core.client.Connector;
 import org.apache.accumulo.core.client.Scanner;
 import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.metadata.MetadataTable;
 import org.apache.accumulo.core.metadata.RootTable;
 import org.apache.accumulo.core.security.Authorizations;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/master/src/main/java/org/apache/accumulo/master/tableOps/BulkImport.java
----------------------------------------------------------------------
diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/BulkImport.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/BulkImport.java
index 6f77a82..7f83988 100644
--- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/BulkImport.java
+++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/BulkImport.java
@@ -52,8 +52,8 @@ import org.apache.accumulo.core.client.impl.thrift.ThriftTableOperationException
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.conf.Property;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.file.FileOperations;
 import org.apache.accumulo.core.master.state.tables.TableState;
 import org.apache.accumulo.core.metadata.MetadataTable;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/master/src/main/java/org/apache/accumulo/master/tableOps/CompactRange.java
----------------------------------------------------------------------
diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/CompactRange.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/CompactRange.java
index c7b5f0c..133663d 100644
--- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/CompactRange.java
+++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/CompactRange.java
@@ -37,9 +37,9 @@ import org.apache.accumulo.core.client.impl.thrift.TableOperation;
 import org.apache.accumulo.core.client.impl.thrift.TableOperationExceptionType;
 import org.apache.accumulo.core.client.impl.thrift.ThriftTableOperationException;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.master.state.tables.TableState;
 import org.apache.accumulo.core.metadata.MetadataTable;
 import org.apache.accumulo.core.metadata.RootTable;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/master/src/main/java/org/apache/accumulo/master/tableOps/CreateTable.java
----------------------------------------------------------------------
diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/CreateTable.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/CreateTable.java
index 2132ce4..9436704 100644
--- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/CreateTable.java
+++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/CreateTable.java
@@ -26,7 +26,7 @@ import org.apache.accumulo.core.client.admin.TimeType;
 import org.apache.accumulo.core.client.impl.Tables;
 import org.apache.accumulo.core.client.impl.thrift.TableOperation;
 import org.apache.accumulo.core.client.impl.thrift.ThriftSecurityException;
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.master.state.tables.TableState;
 import org.apache.accumulo.core.security.TablePermission;
 import org.apache.accumulo.fate.Repo;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/master/src/main/java/org/apache/accumulo/master/tableOps/DeleteTable.java
----------------------------------------------------------------------
diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/DeleteTable.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/DeleteTable.java
index ab1227f..05676e7 100644
--- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/DeleteTable.java
+++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/DeleteTable.java
@@ -31,9 +31,9 @@ import org.apache.accumulo.core.client.impl.thrift.ThriftSecurityException;
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.conf.Property;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.iterators.user.GrepIterator;
 import org.apache.accumulo.core.master.state.tables.TableState;
 import org.apache.accumulo.core.metadata.MetadataTable;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/master/src/main/java/org/apache/accumulo/master/tableOps/ExportTable.java
----------------------------------------------------------------------
diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/ExportTable.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/ExportTable.java
index 4661dea8..e5b7e86 100644
--- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/ExportTable.java
+++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/ExportTable.java
@@ -44,8 +44,8 @@ import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.conf.DefaultConfiguration;
 import org.apache.accumulo.core.conf.Property;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.master.state.tables.TableState;
 import org.apache.accumulo.core.metadata.MetadataTable;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/master/src/main/java/org/apache/accumulo/master/tableOps/ImportTable.java
----------------------------------------------------------------------
diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/ImportTable.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/ImportTable.java
index 961e899..31bc52c 100644
--- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/ImportTable.java
+++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/ImportTable.java
@@ -45,9 +45,9 @@ import org.apache.accumulo.core.client.impl.thrift.TableOperationExceptionType;
 import org.apache.accumulo.core.client.impl.thrift.ThriftSecurityException;
 import org.apache.accumulo.core.client.impl.thrift.ThriftTableOperationException;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.file.FileOperations;
 import org.apache.accumulo.core.master.state.tables.TableState;
 import org.apache.accumulo.core.metadata.MetadataTable;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/master/src/main/java/org/apache/accumulo/master/tableOps/TableRangeOp.java
----------------------------------------------------------------------
diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/TableRangeOp.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/TableRangeOp.java
index 68c3e72..a9a923b 100644
--- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/TableRangeOp.java
+++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/TableRangeOp.java
@@ -20,7 +20,7 @@ import org.apache.accumulo.core.client.impl.Tables;
 import org.apache.accumulo.core.client.impl.thrift.TableOperation;
 import org.apache.accumulo.core.client.impl.thrift.TableOperationExceptionType;
 import org.apache.accumulo.core.client.impl.thrift.ThriftTableOperationException;
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.metadata.RootTable;
 import org.apache.accumulo.core.util.TextUtil;
 import org.apache.accumulo.fate.Repo;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/master/src/test/java/org/apache/accumulo/master/ReplicationOperationsImplTest.java
----------------------------------------------------------------------
diff --git a/server/master/src/test/java/org/apache/accumulo/master/ReplicationOperationsImplTest.java b/server/master/src/test/java/org/apache/accumulo/master/ReplicationOperationsImplTest.java
index a127dcd..6790858 100644
--- a/server/master/src/test/java/org/apache/accumulo/master/ReplicationOperationsImplTest.java
+++ b/server/master/src/test/java/org/apache/accumulo/master/ReplicationOperationsImplTest.java
@@ -31,21 +31,21 @@ import org.apache.accumulo.core.client.Connector;
 import org.apache.accumulo.core.client.Instance;
 import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.client.impl.ClientContext;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.client.impl.ReplicationOperationsImpl;
 import org.apache.accumulo.core.client.impl.thrift.ThriftTableOperationException;
 import org.apache.accumulo.core.client.mock.MockInstance;
 import org.apache.accumulo.core.client.security.tokens.PasswordToken;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.metadata.MetadataTable;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema.ReplicationSection;
 import org.apache.accumulo.core.protobuf.ProtobufUtil;
 import org.apache.accumulo.core.replication.ReplicationSchema.StatusSection;
 import org.apache.accumulo.core.replication.ReplicationTable;
 import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.core.security.thrift.TCredentials;
 import org.apache.accumulo.core.tabletserver.log.LogEntry;
 import org.apache.accumulo.core.trace.thrift.TInfo;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/master/src/test/java/org/apache/accumulo/master/TestMergeState.java
----------------------------------------------------------------------
diff --git a/server/master/src/test/java/org/apache/accumulo/master/TestMergeState.java b/server/master/src/test/java/org/apache/accumulo/master/TestMergeState.java
index b0240f1..634ee89 100644
--- a/server/master/src/test/java/org/apache/accumulo/master/TestMergeState.java
+++ b/server/master/src/test/java/org/apache/accumulo/master/TestMergeState.java
@@ -28,10 +28,10 @@ import org.apache.accumulo.core.client.Instance;
 import org.apache.accumulo.core.client.MutationsRejectedException;
 import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.client.mock.MockInstance;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
 import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.master.thrift.MasterState;
 import org.apache.accumulo.core.metadata.MetadataTable;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/master/src/test/java/org/apache/accumulo/master/replication/SequentialWorkAssignerTest.java
----------------------------------------------------------------------
diff --git a/server/master/src/test/java/org/apache/accumulo/master/replication/SequentialWorkAssignerTest.java b/server/master/src/test/java/org/apache/accumulo/master/replication/SequentialWorkAssignerTest.java
index 3f3250d..e05a17e 100644
--- a/server/master/src/test/java/org/apache/accumulo/master/replication/SequentialWorkAssignerTest.java
+++ b/server/master/src/test/java/org/apache/accumulo/master/replication/SequentialWorkAssignerTest.java
@@ -29,6 +29,7 @@ import java.util.TreeMap;
 import org.apache.accumulo.core.client.BatchWriter;
 import org.apache.accumulo.core.client.Connector;
 import org.apache.accumulo.core.client.Instance;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.client.mock.MockInstance;
 import org.apache.accumulo.core.client.security.tokens.PasswordToken;
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
@@ -39,7 +40,6 @@ import org.apache.accumulo.core.replication.ReplicationSchema.OrderSection;
 import org.apache.accumulo.core.replication.ReplicationSchema.WorkSection;
 import org.apache.accumulo.core.replication.ReplicationTable;
 import org.apache.accumulo.core.replication.ReplicationTarget;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.core.security.TablePermission;
 import org.apache.accumulo.core.zookeeper.ZooUtil;
 import org.apache.accumulo.server.replication.DistributedWorkQueueWorkAssignerHelper;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/master/src/test/java/org/apache/accumulo/master/replication/StatusMakerTest.java
----------------------------------------------------------------------
diff --git a/server/master/src/test/java/org/apache/accumulo/master/replication/StatusMakerTest.java b/server/master/src/test/java/org/apache/accumulo/master/replication/StatusMakerTest.java
index c691f92..b57fd89 100644
--- a/server/master/src/test/java/org/apache/accumulo/master/replication/StatusMakerTest.java
+++ b/server/master/src/test/java/org/apache/accumulo/master/replication/StatusMakerTest.java
@@ -29,6 +29,7 @@ import org.apache.accumulo.core.client.BatchWriter;
 import org.apache.accumulo.core.client.BatchWriterConfig;
 import org.apache.accumulo.core.client.Connector;
 import org.apache.accumulo.core.client.Scanner;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.client.mock.MockInstance;
 import org.apache.accumulo.core.client.security.tokens.PasswordToken;
 import org.apache.accumulo.core.data.Key;
@@ -40,7 +41,6 @@ import org.apache.accumulo.core.replication.ReplicationSchema.OrderSection;
 import org.apache.accumulo.core.replication.ReplicationSchema.StatusSection;
 import org.apache.accumulo.core.replication.ReplicationTable;
 import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.server.replication.StatusUtil;
 import org.apache.accumulo.server.replication.proto.Replication.Status;
 import org.apache.accumulo.server.util.ReplicationTableUtil;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/master/src/test/java/org/apache/accumulo/master/replication/UnorderedWorkAssignerTest.java
----------------------------------------------------------------------
diff --git a/server/master/src/test/java/org/apache/accumulo/master/replication/UnorderedWorkAssignerTest.java b/server/master/src/test/java/org/apache/accumulo/master/replication/UnorderedWorkAssignerTest.java
index febd54c..35df344 100644
--- a/server/master/src/test/java/org/apache/accumulo/master/replication/UnorderedWorkAssignerTest.java
+++ b/server/master/src/test/java/org/apache/accumulo/master/replication/UnorderedWorkAssignerTest.java
@@ -33,6 +33,7 @@ import org.apache.accumulo.core.Constants;
 import org.apache.accumulo.core.client.BatchWriter;
 import org.apache.accumulo.core.client.Connector;
 import org.apache.accumulo.core.client.Instance;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.client.mock.MockInstance;
 import org.apache.accumulo.core.client.security.tokens.PasswordToken;
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
@@ -43,7 +44,6 @@ import org.apache.accumulo.core.replication.ReplicationSchema.OrderSection;
 import org.apache.accumulo.core.replication.ReplicationSchema.WorkSection;
 import org.apache.accumulo.core.replication.ReplicationTable;
 import org.apache.accumulo.core.replication.ReplicationTarget;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.core.security.TablePermission;
 import org.apache.accumulo.server.replication.DistributedWorkQueueWorkAssignerHelper;
 import org.apache.accumulo.server.replication.StatusUtil;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/master/src/test/java/org/apache/accumulo/master/state/RootTabletStateStoreTest.java
----------------------------------------------------------------------
diff --git a/server/master/src/test/java/org/apache/accumulo/master/state/RootTabletStateStoreTest.java b/server/master/src/test/java/org/apache/accumulo/master/state/RootTabletStateStoreTest.java
index abceae4..d2cc0cf 100644
--- a/server/master/src/test/java/org/apache/accumulo/master/state/RootTabletStateStoreTest.java
+++ b/server/master/src/test/java/org/apache/accumulo/master/state/RootTabletStateStoreTest.java
@@ -27,7 +27,7 @@ import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
 
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.metadata.RootTable;
 import org.apache.accumulo.server.master.state.Assignment;
 import org.apache.accumulo.server.master.state.DistributedStore;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/monitor/src/main/java/org/apache/accumulo/monitor/servlets/TServersServlet.java
----------------------------------------------------------------------
diff --git a/server/monitor/src/main/java/org/apache/accumulo/monitor/servlets/TServersServlet.java b/server/monitor/src/main/java/org/apache/accumulo/monitor/servlets/TServersServlet.java
index 5ead979..16b05d4 100644
--- a/server/monitor/src/main/java/org/apache/accumulo/monitor/servlets/TServersServlet.java
+++ b/server/monitor/src/main/java/org/apache/accumulo/monitor/servlets/TServersServlet.java
@@ -27,7 +27,7 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.accumulo.core.client.impl.ClientContext;
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.master.thrift.DeadServer;
 import org.apache.accumulo.core.master.thrift.MasterMonitorInfo;
 import org.apache.accumulo.core.master.thrift.TableInfo;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/monitor/src/main/java/org/apache/accumulo/monitor/servlets/TablesServlet.java
----------------------------------------------------------------------
diff --git a/server/monitor/src/main/java/org/apache/accumulo/monitor/servlets/TablesServlet.java b/server/monitor/src/main/java/org/apache/accumulo/monitor/servlets/TablesServlet.java
index 3700874..4d7d94d 100644
--- a/server/monitor/src/main/java/org/apache/accumulo/monitor/servlets/TablesServlet.java
+++ b/server/monitor/src/main/java/org/apache/accumulo/monitor/servlets/TablesServlet.java
@@ -29,8 +29,8 @@ import javax.servlet.http.HttpServletResponse;
 
 import org.apache.accumulo.core.client.Instance;
 import org.apache.accumulo.core.client.impl.Tables;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Range;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.master.thrift.TableInfo;
 import org.apache.accumulo.core.master.thrift.TabletServerStatus;
 import org.apache.accumulo.core.metadata.MetadataTable;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/tserver/src/main/java/org/apache/accumulo/tserver/ActiveAssignmentRunnable.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/ActiveAssignmentRunnable.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/ActiveAssignmentRunnable.java
index bfc34a6..a25d22f 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/ActiveAssignmentRunnable.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/ActiveAssignmentRunnable.java
@@ -18,7 +18,7 @@ package org.apache.accumulo.tserver;
 
 import java.util.concurrent.ConcurrentHashMap;
 
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/tserver/src/main/java/org/apache/accumulo/tserver/ConditionalMutationSet.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/ConditionalMutationSet.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/ConditionalMutationSet.java
index 68ccdf0..82e5057 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/ConditionalMutationSet.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/ConditionalMutationSet.java
@@ -24,7 +24,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.tserver.data.ServerConditionalMutation;
 import org.apache.hadoop.io.WritableComparator;
 

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/tserver/src/main/java/org/apache/accumulo/tserver/FileManager.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/FileManager.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/FileManager.java
index b5f5e16..f8d0280 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/FileManager.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/FileManager.java
@@ -31,8 +31,8 @@ import java.util.concurrent.atomic.AtomicBoolean;
 
 import org.apache.accumulo.core.conf.Property;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.file.FileOperations;
 import org.apache.accumulo.core.file.FileSKVIterator;
 import org.apache.accumulo.core.file.blockfile.cache.BlockCache;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/tserver/src/main/java/org/apache/accumulo/tserver/RowLocks.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/RowLocks.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/RowLocks.java
index babd629..03707d1 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/RowLocks.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/RowLocks.java
@@ -25,7 +25,7 @@ import java.util.concurrent.locks.ReentrantLock;
 
 import org.apache.accumulo.core.data.ArrayByteSequence;
 import org.apache.accumulo.core.data.ByteSequence;
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.tserver.ConditionalMutationSet.DeferFilter;
 import org.apache.accumulo.tserver.data.ServerConditionalMutation;
 

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java
index d9c3775..afd3454 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java
@@ -78,10 +78,10 @@ import org.apache.accumulo.core.conf.SiteConfiguration;
 import org.apache.accumulo.core.data.Column;
 import org.apache.accumulo.core.data.ConstraintViolationSummary;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
 import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.data.thrift.InitialMultiScan;
 import org.apache.accumulo.core.data.thrift.InitialScan;
 import org.apache.accumulo.core.data.thrift.IterInfo;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServerResourceManager.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServerResourceManager.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServerResourceManager.java
index 077fbb8..65cbdf1 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServerResourceManager.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServerResourceManager.java
@@ -37,7 +37,7 @@ import java.util.concurrent.atomic.AtomicLong;
 
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.conf.Property;
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.file.blockfile.cache.LruBlockCache;
 import org.apache.accumulo.core.metadata.schema.DataFileValue;
 import org.apache.accumulo.core.util.Daemon;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/tserver/src/main/java/org/apache/accumulo/tserver/TservConstraintEnv.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/TservConstraintEnv.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/TservConstraintEnv.java
index edaca31..fc371c9 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/TservConstraintEnv.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/TservConstraintEnv.java
@@ -22,7 +22,7 @@ import java.util.Collections;
 import org.apache.accumulo.core.client.impl.thrift.ThriftSecurityException;
 import org.apache.accumulo.core.constraints.Constraint.Environment;
 import org.apache.accumulo.core.data.ByteSequence;
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.security.AuthorizationContainer;
 import org.apache.accumulo.core.security.Authorizations;
 import org.apache.accumulo.core.security.thrift.TCredentials;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/tserver/src/main/java/org/apache/accumulo/tserver/WriteTracker.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/WriteTracker.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/WriteTracker.java
index b9b89a1..db02526 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/WriteTracker.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/WriteTracker.java
@@ -25,7 +25,7 @@ import java.util.TreeSet;
 import java.util.concurrent.atomic.AtomicLong;
 
 import org.apache.accumulo.core.client.impl.TabletType;
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.tserver.tablet.Tablet;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/tserver/src/main/java/org/apache/accumulo/tserver/compaction/MajorCompactionRequest.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/compaction/MajorCompactionRequest.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/compaction/MajorCompactionRequest.java
index 03817c1..712e8df 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/compaction/MajorCompactionRequest.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/compaction/MajorCompactionRequest.java
@@ -22,7 +22,7 @@ import java.util.Map;
 
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.conf.Property;
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.file.FileOperations;
 import org.apache.accumulo.core.file.FileSKVIterator;
 import org.apache.accumulo.core.metadata.schema.DataFileValue;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/tserver/src/main/java/org/apache/accumulo/tserver/constraints/ConstraintChecker.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/constraints/ConstraintChecker.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/constraints/ConstraintChecker.java
index 605d768..13e7c4f 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/constraints/ConstraintChecker.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/constraints/ConstraintChecker.java
@@ -26,9 +26,9 @@ import org.apache.accumulo.core.conf.Property;
 import org.apache.accumulo.core.constraints.Constraint;
 import org.apache.accumulo.core.constraints.Constraint.Environment;
 import org.apache.accumulo.core.constraints.Violations;
-import org.apache.accumulo.core.data.ComparableBytes;
 import org.apache.accumulo.core.data.ConstraintViolationSummary;
 import org.apache.accumulo.core.data.Mutation;
+import org.apache.accumulo.core.data.impl.ComparableBytes;
 import org.apache.accumulo.server.conf.TableConfiguration;
 import org.apache.accumulo.start.classloader.vfs.AccumuloVFSClassLoader;
 import org.slf4j.Logger;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/tserver/src/main/java/org/apache/accumulo/tserver/log/DfsLogger.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/log/DfsLogger.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/log/DfsLogger.java
index ed2ce06..8512690 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/log/DfsLogger.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/log/DfsLogger.java
@@ -44,8 +44,8 @@ import java.util.concurrent.atomic.AtomicLong;
 import org.apache.accumulo.core.client.Durability;
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.conf.Property;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.security.crypto.CryptoModule;
 import org.apache.accumulo.core.security.crypto.CryptoModuleFactory;
 import org.apache.accumulo.core.security.crypto.CryptoModuleParameters;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/tserver/src/main/java/org/apache/accumulo/tserver/log/SortedLogRecovery.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/log/SortedLogRecovery.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/log/SortedLogRecovery.java
index c4d9fab..37882cd 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/log/SortedLogRecovery.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/log/SortedLogRecovery.java
@@ -28,8 +28,8 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.metadata.RootTable;
 import org.apache.accumulo.server.fs.VolumeManager;
 import org.apache.accumulo.tserver.logger.LogFileKey;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/tserver/src/main/java/org/apache/accumulo/tserver/log/TabletServerLogger.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/log/TabletServerLogger.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/log/TabletServerLogger.java
index ec5fa38..1d385d9 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/log/TabletServerLogger.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/log/TabletServerLogger.java
@@ -33,8 +33,8 @@ import java.util.concurrent.locks.ReadWriteLock;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
 
 import org.apache.accumulo.core.client.Durability;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.protobuf.ProtobufUtil;
 import org.apache.accumulo.core.replication.ReplicationConfigurationUtil;
 import org.apache.accumulo.core.util.UtilWaitThread;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/tserver/src/main/java/org/apache/accumulo/tserver/logger/LogFileKey.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/logger/LogFileKey.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/logger/LogFileKey.java
index 1959ffb..42f9d76 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/logger/LogFileKey.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/logger/LogFileKey.java
@@ -25,7 +25,7 @@ import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
 
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.hadoop.io.WritableComparable;
 
 public class LogFileKey implements WritableComparable<LogFileKey> {

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/tserver/src/main/java/org/apache/accumulo/tserver/logger/LogReader.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/logger/LogReader.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/logger/LogReader.java
index 09bc705..6ceba5a 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/logger/LogReader.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/logger/LogReader.java
@@ -30,8 +30,8 @@ import java.util.regex.Pattern;
 
 import org.apache.accumulo.core.cli.Help;
 import org.apache.accumulo.core.conf.SiteConfiguration;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.server.fs.VolumeManager;
 import org.apache.accumulo.server.fs.VolumeManagerImpl;
 import org.apache.accumulo.tserver.log.DfsLogger;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/tserver/src/main/java/org/apache/accumulo/tserver/mastermessage/SplitReportMessage.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/mastermessage/SplitReportMessage.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/mastermessage/SplitReportMessage.java
index cd68e36..372209f 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/mastermessage/SplitReportMessage.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/mastermessage/SplitReportMessage.java
@@ -22,7 +22,7 @@ import java.util.TreeMap;
 import org.apache.accumulo.core.client.impl.Translator;
 import org.apache.accumulo.core.client.impl.Translators;
 import org.apache.accumulo.core.client.impl.thrift.ThriftSecurityException;
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.master.thrift.MasterClientService;
 import org.apache.accumulo.core.master.thrift.TabletSplit;
 import org.apache.accumulo.core.security.thrift.TCredentials;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/tserver/src/main/java/org/apache/accumulo/tserver/mastermessage/TabletStatusMessage.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/mastermessage/TabletStatusMessage.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/mastermessage/TabletStatusMessage.java
index d40e514..50d1078 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/mastermessage/TabletStatusMessage.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/mastermessage/TabletStatusMessage.java
@@ -17,7 +17,7 @@
 package org.apache.accumulo.tserver.mastermessage;
 
 import org.apache.accumulo.core.client.impl.thrift.ThriftSecurityException;
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.master.thrift.MasterClientService.Iface;
 import org.apache.accumulo.core.master.thrift.TabletLoadState;
 import org.apache.accumulo.core.security.thrift.TCredentials;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/tserver/src/main/java/org/apache/accumulo/tserver/replication/AccumuloReplicaSystem.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/replication/AccumuloReplicaSystem.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/replication/AccumuloReplicaSystem.java
index d18e434..be68210 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/replication/AccumuloReplicaSystem.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/replication/AccumuloReplicaSystem.java
@@ -38,6 +38,7 @@ import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.client.ZooKeeperInstance;
 import org.apache.accumulo.core.client.impl.ClientContext;
 import org.apache.accumulo.core.client.impl.ClientExecReturn;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.client.impl.ReplicationClient;
 import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
 import org.apache.accumulo.core.client.security.tokens.KerberosToken;
@@ -53,7 +54,6 @@ import org.apache.accumulo.core.replication.thrift.ReplicationCoordinator;
 import org.apache.accumulo.core.replication.thrift.ReplicationServicer;
 import org.apache.accumulo.core.replication.thrift.ReplicationServicer.Client;
 import org.apache.accumulo.core.replication.thrift.WalEdits;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.core.security.thrift.TCredentials;
 import org.apache.accumulo.core.trace.ProbabilitySampler;
 import org.apache.accumulo.core.trace.Span;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/tserver/src/main/java/org/apache/accumulo/tserver/scan/LookupTask.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/scan/LookupTask.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/scan/LookupTask.java
index 85b71b1..08597f4 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/scan/LookupTask.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/scan/LookupTask.java
@@ -29,8 +29,8 @@ import org.apache.accumulo.core.client.impl.Translator;
 import org.apache.accumulo.core.client.impl.Translators;
 import org.apache.accumulo.core.conf.Property;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Range;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.data.thrift.MultiScanResult;
 import org.apache.accumulo.core.data.thrift.TKey;
 import org.apache.accumulo.core.data.thrift.TKeyExtent;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/tserver/src/main/java/org/apache/accumulo/tserver/session/MultiScanSession.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/session/MultiScanSession.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/session/MultiScanSession.java
index b91c9e6..b326e10 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/session/MultiScanSession.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/session/MultiScanSession.java
@@ -21,8 +21,8 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.accumulo.core.data.Column;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Range;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.data.thrift.IterInfo;
 import org.apache.accumulo.core.data.thrift.MultiScanResult;
 import org.apache.accumulo.core.security.Authorizations;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/tserver/src/main/java/org/apache/accumulo/tserver/session/ScanSession.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/session/ScanSession.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/session/ScanSession.java
index f4d72a0..d5b0027 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/session/ScanSession.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/session/ScanSession.java
@@ -22,7 +22,7 @@ import java.util.Set;
 import java.util.concurrent.atomic.AtomicBoolean;
 
 import org.apache.accumulo.core.data.Column;
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.data.thrift.IterInfo;
 import org.apache.accumulo.core.security.Authorizations;
 import org.apache.accumulo.core.security.thrift.TCredentials;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/tserver/src/main/java/org/apache/accumulo/tserver/session/UpdateSession.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/session/UpdateSession.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/session/UpdateSession.java
index 08930ac..4a9b265 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/session/UpdateSession.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/session/UpdateSession.java
@@ -23,8 +23,8 @@ import java.util.Map;
 import org.apache.accumulo.core.client.Durability;
 import org.apache.accumulo.core.client.impl.thrift.SecurityErrorCode;
 import org.apache.accumulo.core.constraints.Violations;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.security.thrift.TCredentials;
 import org.apache.accumulo.core.util.MapCounter;
 import org.apache.accumulo.core.util.Stat;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/CommitSession.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/CommitSession.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/CommitSession.java
index b4814e4..d908f1d 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/CommitSession.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/CommitSession.java
@@ -19,8 +19,8 @@ package org.apache.accumulo.tserver.tablet;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.tserver.InMemoryMap;
 import org.apache.accumulo.tserver.log.DfsLogger;
 import org.slf4j.Logger;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/CompactionInfo.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/CompactionInfo.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/CompactionInfo.java
index 2023d2c..c7ca29d 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/CompactionInfo.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/CompactionInfo.java
@@ -22,7 +22,7 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.accumulo.core.client.IteratorSetting;
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.data.thrift.IterInfo;
 import org.apache.accumulo.core.tabletserver.thrift.ActiveCompaction;
 import org.apache.accumulo.core.tabletserver.thrift.CompactionReason;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Compactor.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Compactor.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Compactor.java
index 7dd819b..0a8a9e3 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Compactor.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Compactor.java
@@ -35,8 +35,8 @@ import org.apache.accumulo.core.client.IteratorSetting;
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.data.ByteSequence;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.file.FileOperations;
 import org.apache.accumulo.core.file.FileSKVIterator;
 import org.apache.accumulo.core.file.FileSKVWriter;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/DatafileManager.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/DatafileManager.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/DatafileManager.java
index 594d9c5..db1b418 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/DatafileManager.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/DatafileManager.java
@@ -31,7 +31,7 @@ import java.util.TreeSet;
 
 import org.apache.accumulo.core.client.Connector;
 import org.apache.accumulo.core.conf.Property;
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.metadata.schema.DataFileValue;
 import org.apache.accumulo.core.replication.ReplicationConfigurationUtil;
 import org.apache.accumulo.core.trace.Span;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Tablet.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Tablet.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Tablet.java
index fd7537d..1f4625b 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Tablet.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Tablet.java
@@ -57,10 +57,10 @@ import org.apache.accumulo.core.data.ByteSequence;
 import org.apache.accumulo.core.data.Column;
 import org.apache.accumulo.core.data.ColumnUpdate;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
 import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.data.thrift.IterInfo;
 import org.apache.accumulo.core.data.thrift.MapFileInfo;
 import org.apache.accumulo.core.file.FileOperations;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/TabletCommitter.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/TabletCommitter.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/TabletCommitter.java
index 3f1af82..c7e3a66 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/TabletCommitter.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/TabletCommitter.java
@@ -20,8 +20,8 @@ import java.util.Collection;
 import java.util.List;
 
 import org.apache.accumulo.core.client.Durability;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.server.conf.TableConfiguration;
 import org.apache.accumulo.tserver.InMemoryMap;
 import org.apache.accumulo.tserver.log.DfsLogger;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/tserver/src/test/java/org/apache/accumulo/server/tabletserver/LargestFirstMemoryManagerTest.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/test/java/org/apache/accumulo/server/tabletserver/LargestFirstMemoryManagerTest.java b/server/tserver/src/test/java/org/apache/accumulo/server/tabletserver/LargestFirstMemoryManagerTest.java
index e17281a..7c15cfc 100644
--- a/server/tserver/src/test/java/org/apache/accumulo/server/tabletserver/LargestFirstMemoryManagerTest.java
+++ b/server/tserver/src/test/java/org/apache/accumulo/server/tabletserver/LargestFirstMemoryManagerTest.java
@@ -25,7 +25,7 @@ import org.apache.accumulo.core.client.Instance;
 import org.apache.accumulo.core.client.mock.MockInstance;
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.conf.DefaultConfiguration;
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.server.conf.NamespaceConfiguration;
 import org.apache.accumulo.server.conf.ServerConfiguration;
 import org.apache.accumulo.server.conf.ServerConfigurationFactory;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/tserver/src/test/java/org/apache/accumulo/tserver/AssignmentWatcherTest.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/test/java/org/apache/accumulo/tserver/AssignmentWatcherTest.java b/server/tserver/src/test/java/org/apache/accumulo/tserver/AssignmentWatcherTest.java
index 6ce893c..b809a35 100644
--- a/server/tserver/src/test/java/org/apache/accumulo/tserver/AssignmentWatcherTest.java
+++ b/server/tserver/src/test/java/org/apache/accumulo/tserver/AssignmentWatcherTest.java
@@ -21,7 +21,7 @@ import java.util.Map;
 
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.conf.Property;
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.server.util.time.SimpleTimer;
 import org.apache.accumulo.tserver.TabletServerResourceManager.AssignmentWatcher;
 import org.apache.hadoop.io.Text;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/tserver/src/test/java/org/apache/accumulo/tserver/CheckTabletMetadataTest.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/test/java/org/apache/accumulo/tserver/CheckTabletMetadataTest.java b/server/tserver/src/test/java/org/apache/accumulo/tserver/CheckTabletMetadataTest.java
index 54be395..8c00ece 100644
--- a/server/tserver/src/test/java/org/apache/accumulo/tserver/CheckTabletMetadataTest.java
+++ b/server/tserver/src/test/java/org/apache/accumulo/tserver/CheckTabletMetadataTest.java
@@ -20,8 +20,8 @@ package org.apache.accumulo.tserver;
 import java.util.TreeMap;
 
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection;
 import org.apache.accumulo.core.util.ColumnFQ;
 import org.apache.accumulo.server.master.state.TServerInstance;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/tserver/src/test/java/org/apache/accumulo/tserver/TabletResourceManagerTest.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/test/java/org/apache/accumulo/tserver/TabletResourceManagerTest.java b/server/tserver/src/test/java/org/apache/accumulo/tserver/TabletResourceManagerTest.java
index baa6f7b..e34ba1a 100644
--- a/server/tserver/src/test/java/org/apache/accumulo/tserver/TabletResourceManagerTest.java
+++ b/server/tserver/src/test/java/org/apache/accumulo/tserver/TabletResourceManagerTest.java
@@ -19,7 +19,7 @@ package org.apache.accumulo.tserver;
 import static org.easymock.EasyMock.createMock;
 import static org.junit.Assert.assertEquals;
 
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.server.conf.TableConfiguration;
 import org.apache.accumulo.tserver.TabletServerResourceManager.TabletResourceManager;
 import org.junit.Before;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/tserver/src/test/java/org/apache/accumulo/tserver/compaction/DefaultCompactionStrategyTest.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/test/java/org/apache/accumulo/tserver/compaction/DefaultCompactionStrategyTest.java b/server/tserver/src/test/java/org/apache/accumulo/tserver/compaction/DefaultCompactionStrategyTest.java
index 6414a03..55226fb 100644
--- a/server/tserver/src/test/java/org/apache/accumulo/tserver/compaction/DefaultCompactionStrategyTest.java
+++ b/server/tserver/src/test/java/org/apache/accumulo/tserver/compaction/DefaultCompactionStrategyTest.java
@@ -33,9 +33,9 @@ import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.conf.DefaultConfiguration;
 import org.apache.accumulo.core.data.ByteSequence;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.file.FileSKVIterator;
 import org.apache.accumulo.core.file.NoSuchMetaStoreException;
 import org.apache.accumulo.core.iterators.IteratorEnvironment;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/tserver/src/test/java/org/apache/accumulo/tserver/compaction/SizeLimitCompactionStrategyTest.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/test/java/org/apache/accumulo/tserver/compaction/SizeLimitCompactionStrategyTest.java b/server/tserver/src/test/java/org/apache/accumulo/tserver/compaction/SizeLimitCompactionStrategyTest.java
index ed75a60..e5cdd72 100644
--- a/server/tserver/src/test/java/org/apache/accumulo/tserver/compaction/SizeLimitCompactionStrategyTest.java
+++ b/server/tserver/src/test/java/org/apache/accumulo/tserver/compaction/SizeLimitCompactionStrategyTest.java
@@ -22,7 +22,7 @@ import java.util.HashSet;
 import java.util.Map;
 
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.metadata.schema.DataFileValue;
 import org.apache.accumulo.server.fs.FileRef;
 import org.apache.hadoop.io.Text;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/tserver/src/test/java/org/apache/accumulo/tserver/compaction/strategies/ConfigurableCompactionStrategyTest.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/test/java/org/apache/accumulo/tserver/compaction/strategies/ConfigurableCompactionStrategyTest.java b/server/tserver/src/test/java/org/apache/accumulo/tserver/compaction/strategies/ConfigurableCompactionStrategyTest.java
index a896537..62962db 100644
--- a/server/tserver/src/test/java/org/apache/accumulo/tserver/compaction/strategies/ConfigurableCompactionStrategyTest.java
+++ b/server/tserver/src/test/java/org/apache/accumulo/tserver/compaction/strategies/ConfigurableCompactionStrategyTest.java
@@ -22,7 +22,7 @@ import java.util.Map;
 
 import org.apache.accumulo.core.compaction.CompactionSettings;
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.metadata.schema.DataFileValue;
 import org.apache.accumulo.server.fs.FileRef;
 import org.apache.accumulo.tserver.compaction.CompactionPlan;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/tserver/src/test/java/org/apache/accumulo/tserver/constraints/ConstraintCheckerTest.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/test/java/org/apache/accumulo/tserver/constraints/ConstraintCheckerTest.java b/server/tserver/src/test/java/org/apache/accumulo/tserver/constraints/ConstraintCheckerTest.java
index dd09f69..ec30da4 100644
--- a/server/tserver/src/test/java/org/apache/accumulo/tserver/constraints/ConstraintCheckerTest.java
+++ b/server/tserver/src/test/java/org/apache/accumulo/tserver/constraints/ConstraintCheckerTest.java
@@ -31,8 +31,8 @@ import java.util.Set;
 import org.apache.accumulo.core.constraints.Constraint;
 import org.apache.accumulo.core.constraints.Constraint.Environment;
 import org.apache.accumulo.core.data.ConstraintViolationSummary;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.hadoop.io.BinaryComparable;
 import org.junit.Before;
 import org.junit.Test;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/tserver/src/test/java/org/apache/accumulo/tserver/log/SortedLogRecoveryTest.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/test/java/org/apache/accumulo/tserver/log/SortedLogRecoveryTest.java b/server/tserver/src/test/java/org/apache/accumulo/tserver/log/SortedLogRecoveryTest.java
index f842a68..b47b376 100644
--- a/server/tserver/src/test/java/org/apache/accumulo/tserver/log/SortedLogRecoveryTest.java
+++ b/server/tserver/src/test/java/org/apache/accumulo/tserver/log/SortedLogRecoveryTest.java
@@ -35,9 +35,9 @@ import java.util.Objects;
 import java.util.Set;
 import java.util.TreeMap;
 
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.server.data.ServerMutation;
 import org.apache.accumulo.server.fs.VolumeManager;
 import org.apache.accumulo.server.fs.VolumeManagerImpl;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/tserver/src/test/java/org/apache/accumulo/tserver/logger/LogFileTest.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/test/java/org/apache/accumulo/tserver/logger/LogFileTest.java b/server/tserver/src/test/java/org/apache/accumulo/tserver/logger/LogFileTest.java
index cf2266f..06fe1d5 100644
--- a/server/tserver/src/test/java/org/apache/accumulo/tserver/logger/LogFileTest.java
+++ b/server/tserver/src/test/java/org/apache/accumulo/tserver/logger/LogFileTest.java
@@ -28,9 +28,9 @@ import static org.junit.Assert.assertTrue;
 import java.io.IOException;
 import java.util.Arrays;
 
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.security.ColumnVisibility;
 import org.apache.accumulo.server.data.ServerMutation;
 import org.apache.hadoop.io.DataInputBuffer;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/tserver/src/test/java/org/apache/accumulo/tserver/replication/AccumuloReplicaSystemTest.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/test/java/org/apache/accumulo/tserver/replication/AccumuloReplicaSystemTest.java b/server/tserver/src/test/java/org/apache/accumulo/tserver/replication/AccumuloReplicaSystemTest.java
index e504dc0..76c8bdf 100644
--- a/server/tserver/src/test/java/org/apache/accumulo/tserver/replication/AccumuloReplicaSystemTest.java
+++ b/server/tserver/src/test/java/org/apache/accumulo/tserver/replication/AccumuloReplicaSystemTest.java
@@ -39,9 +39,9 @@ import java.util.UUID;
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.conf.ConfigurationCopy;
 import org.apache.accumulo.core.conf.Property;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.replication.ReplicationTarget;
 import org.apache.accumulo.core.replication.thrift.ReplicationServicer.Client;
 import org.apache.accumulo.core.replication.thrift.WalEdits;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/tserver/src/test/java/org/apache/accumulo/tserver/replication/ReplicationProcessorTest.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/test/java/org/apache/accumulo/tserver/replication/ReplicationProcessorTest.java b/server/tserver/src/test/java/org/apache/accumulo/tserver/replication/ReplicationProcessorTest.java
index 0c444b9..3ac5f2f 100644
--- a/server/tserver/src/test/java/org/apache/accumulo/tserver/replication/ReplicationProcessorTest.java
+++ b/server/tserver/src/test/java/org/apache/accumulo/tserver/replication/ReplicationProcessorTest.java
@@ -24,11 +24,11 @@ import java.util.Map;
 import org.apache.accumulo.core.client.ClientConfiguration;
 import org.apache.accumulo.core.client.Instance;
 import org.apache.accumulo.core.client.impl.ClientContext;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.client.security.tokens.PasswordToken;
 import org.apache.accumulo.core.conf.ConfigurationCopy;
 import org.apache.accumulo.core.conf.Property;
 import org.apache.accumulo.core.replication.ReplicationTarget;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.server.fs.VolumeManager;
 import org.apache.accumulo.server.replication.DistributedWorkQueueWorkAssignerHelper;
 import org.apache.accumulo.server.replication.ReplicaSystem;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/server/tserver/src/test/java/org/apache/accumulo/tserver/tablet/TabletTest.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/test/java/org/apache/accumulo/tserver/tablet/TabletTest.java b/server/tserver/src/test/java/org/apache/accumulo/tserver/tablet/TabletTest.java
index 930d432..4b1ff9a 100644
--- a/server/tserver/src/test/java/org/apache/accumulo/tserver/tablet/TabletTest.java
+++ b/server/tserver/src/test/java/org/apache/accumulo/tserver/tablet/TabletTest.java
@@ -21,7 +21,7 @@ import java.util.Map.Entry;
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.conf.ConfigurationObserver;
 import org.apache.accumulo.core.conf.Property;
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.server.conf.TableConfiguration;
 import org.apache.accumulo.server.tablets.TabletTime;
 import org.apache.accumulo.tserver.TabletServer;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/shell/src/main/java/org/apache/accumulo/shell/commands/ActiveCompactionIterator.java
----------------------------------------------------------------------
diff --git a/shell/src/main/java/org/apache/accumulo/shell/commands/ActiveCompactionIterator.java b/shell/src/main/java/org/apache/accumulo/shell/commands/ActiveCompactionIterator.java
index c372246..bd039b0 100644
--- a/shell/src/main/java/org/apache/accumulo/shell/commands/ActiveCompactionIterator.java
+++ b/shell/src/main/java/org/apache/accumulo/shell/commands/ActiveCompactionIterator.java
@@ -89,7 +89,7 @@ class ActiveCompactionIterator implements Iterator<String> {
 
           compactions.add(String.format("%21s | %9s | %5s | %6s | %5s | %5s | %15s | %-40s | %5s | %35s | %9s | %s", tserver,
               Duration.format(ac.getAge(), "", "-"), ac.getType(), ac.getReason(), shortenCount(ac.getEntriesRead()), shortenCount(ac.getEntriesWritten()),
-              ac.getTable(), ac.getExtent(), ac.getInputFiles().size(), output, iterList, iterOpts));
+              ac.getTable(), ac.getTablet(), ac.getInputFiles().size(), output, iterList, iterOpts));
         }
       } catch (Exception e) {
         compactions.add(tserver + " ERROR " + e.getMessage());

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/shell/src/main/java/org/apache/accumulo/shell/commands/ActiveScanIterator.java
----------------------------------------------------------------------
diff --git a/shell/src/main/java/org/apache/accumulo/shell/commands/ActiveScanIterator.java b/shell/src/main/java/org/apache/accumulo/shell/commands/ActiveScanIterator.java
index 498eb2f..d446534 100644
--- a/shell/src/main/java/org/apache/accumulo/shell/commands/ActiveScanIterator.java
+++ b/shell/src/main/java/org/apache/accumulo/shell/commands/ActiveScanIterator.java
@@ -45,7 +45,7 @@ class ActiveScanIterator implements Iterator<String> {
           scans
               .add(String.format("%21s |%21s |%9s |%9s |%7s |%6s |%8s |%8s |%10s |%20s |%10s |%10s | %s", tserver, as.getClient(),
                   Duration.format(as.getAge(), "", "-"), Duration.format(as.getLastContactTime(), "", "-"), as.getState(), as.getType(), as.getUser(),
-                  as.getTable(), as.getColumns(), as.getAuthorizations(), (as.getType() == ScanType.SINGLE ? as.getExtent() : "N/A"), as.getSsiList(),
+                  as.getTable(), as.getColumns(), as.getAuthorizations(), (as.getType() == ScanType.SINGLE ? as.getTablet() : "N/A"), as.getSsiList(),
                   as.getSsio()));
         }
       } catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/shell/src/main/java/org/apache/accumulo/shell/commands/CreateTableCommand.java
----------------------------------------------------------------------
diff --git a/shell/src/main/java/org/apache/accumulo/shell/commands/CreateTableCommand.java b/shell/src/main/java/org/apache/accumulo/shell/commands/CreateTableCommand.java
index 48e9f74..b0aca92 100644
--- a/shell/src/main/java/org/apache/accumulo/shell/commands/CreateTableCommand.java
+++ b/shell/src/main/java/org/apache/accumulo/shell/commands/CreateTableCommand.java
@@ -32,8 +32,8 @@ import org.apache.accumulo.core.client.admin.NewTableConfiguration;
 import org.apache.accumulo.core.client.admin.TimeType;
 import org.apache.accumulo.core.client.impl.Tables;
 import org.apache.accumulo.core.conf.Property;
+import org.apache.accumulo.core.constraints.VisibilityConstraint;
 import org.apache.accumulo.core.iterators.IteratorUtil;
-import org.apache.accumulo.core.security.VisibilityConstraint;
 import org.apache.accumulo.shell.Shell;
 import org.apache.accumulo.shell.Shell.Command;
 import org.apache.accumulo.shell.ShellUtil;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/shell/src/main/java/org/apache/accumulo/shell/commands/GetSplitsCommand.java
----------------------------------------------------------------------
diff --git a/shell/src/main/java/org/apache/accumulo/shell/commands/GetSplitsCommand.java b/shell/src/main/java/org/apache/accumulo/shell/commands/GetSplitsCommand.java
index d780aee..9d82269 100644
--- a/shell/src/main/java/org/apache/accumulo/shell/commands/GetSplitsCommand.java
+++ b/shell/src/main/java/org/apache/accumulo/shell/commands/GetSplitsCommand.java
@@ -27,9 +27,9 @@ import org.apache.accumulo.core.client.AccumuloSecurityException;
 import org.apache.accumulo.core.client.Scanner;
 import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.metadata.MetadataTable;
 import org.apache.accumulo.core.metadata.RootTable;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/shell/src/main/java/org/apache/accumulo/shell/commands/InsertCommand.java
----------------------------------------------------------------------
diff --git a/shell/src/main/java/org/apache/accumulo/shell/commands/InsertCommand.java b/shell/src/main/java/org/apache/accumulo/shell/commands/InsertCommand.java
index 05037d5..71e3855 100644
--- a/shell/src/main/java/org/apache/accumulo/shell/commands/InsertCommand.java
+++ b/shell/src/main/java/org/apache/accumulo/shell/commands/InsertCommand.java
@@ -32,8 +32,8 @@ import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.client.security.SecurityErrorCode;
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.data.ConstraintViolationSummary;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
+import org.apache.accumulo.core.data.TabletID;
 import org.apache.accumulo.core.data.Value;
 import org.apache.accumulo.core.security.ColumnVisibility;
 import org.apache.accumulo.core.tabletserver.thrift.ConstraintViolationException;
@@ -107,10 +107,10 @@ public class InsertCommand extends Command {
       bw.close();
     } catch (MutationsRejectedException e) {
       final ArrayList<String> lines = new ArrayList<String>();
-      if (e.getAuthorizationFailuresMap().isEmpty() == false) {
+      if (e.getSecurityErrorCodes().isEmpty() == false) {
         lines.add("\tAuthorization Failures:");
       }
-      for (Entry<KeyExtent,Set<SecurityErrorCode>> entry : e.getAuthorizationFailuresMap().entrySet()) {
+      for (Entry<TabletID,Set<SecurityErrorCode>> entry : e.getSecurityErrorCodes().entrySet()) {
         lines.add("\t\t" + entry);
       }
       if (e.getConstraintViolationSummaries().isEmpty() == false) {

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/test/src/main/java/org/apache/accumulo/test/QueryMetadataTable.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/QueryMetadataTable.java b/test/src/main/java/org/apache/accumulo/test/QueryMetadataTable.java
index 713f3ae..dd58cc8 100644
--- a/test/src/main/java/org/apache/accumulo/test/QueryMetadataTable.java
+++ b/test/src/main/java/org/apache/accumulo/test/QueryMetadataTable.java
@@ -32,9 +32,9 @@ import org.apache.accumulo.core.client.Scanner;
 import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.metadata.MetadataTable;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection;
 import org.apache.accumulo.core.security.Authorizations;


[5/9] accumulo git commit: ACCUMULO-3657 ACCUMULO-3548 Clarify Accumulo API

Posted by kt...@apache.org.
http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/client/mapred/AbstractInputFormat.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/mapred/AbstractInputFormat.java b/core/src/main/java/org/apache/accumulo/core/client/mapred/AbstractInputFormat.java
index df317e3..b97d4de 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/mapred/AbstractInputFormat.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/mapred/AbstractInputFormat.java
@@ -42,7 +42,11 @@ import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.client.TableOfflineException;
 import org.apache.accumulo.core.client.IteratorSetting;
 import org.apache.accumulo.core.client.admin.DelegationTokenConfig;
+import org.apache.accumulo.core.client.admin.SecurityOperations;
+import org.apache.accumulo.core.client.impl.AuthenticationTokenIdentifier;
 import org.apache.accumulo.core.client.impl.ClientContext;
+import org.apache.accumulo.core.client.impl.Credentials;
+import org.apache.accumulo.core.client.impl.DelegationTokenImpl;
 import org.apache.accumulo.core.client.impl.OfflineScanner;
 import org.apache.accumulo.core.client.impl.ScannerImpl;
 import org.apache.accumulo.core.client.impl.Tables;
@@ -58,13 +62,11 @@ import org.apache.accumulo.core.client.security.tokens.DelegationToken;
 import org.apache.accumulo.core.client.security.tokens.KerberosToken;
 import org.apache.accumulo.core.client.security.tokens.PasswordToken;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.master.state.tables.TableState;
-import org.apache.accumulo.core.security.AuthenticationTokenIdentifier;
 import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.core.util.Pair;
 import org.apache.accumulo.core.util.UtilWaitThread;
 import org.apache.hadoop.io.Text;
@@ -90,7 +92,8 @@ public abstract class AbstractInputFormat<K,V> implements InputFormat<K,V> {
    * <p>
    * <b>WARNING:</b> Some tokens, when serialized, divulge sensitive information in the configuration as a means to pass the token to MapReduce tasks. This
    * information is BASE64 encoded to provide a charset safe conversion to a string, but this conversion is not intended to be secure. {@link PasswordToken} is
-   * one example that is insecure in this way; however {@link DelegationToken}s, acquired using a {@link KerberosToken}, is not subject to this concern.
+   * one example that is insecure in this way; however {@link DelegationToken}s, acquired using
+   * {@link SecurityOperations#getDelegationToken(DelegationTokenConfig)}, is not subject to this concern.
    *
    * @param job
    *          the Hadoop job instance to be configured
@@ -112,8 +115,8 @@ public abstract class AbstractInputFormat<K,V> implements InputFormat<K,V> {
       }
     }
     // DelegationTokens can be passed securely from user to task without serializing insecurely in the configuration
-    if (token instanceof DelegationToken) {
-      DelegationToken delegationToken = (DelegationToken) token;
+    if (token instanceof DelegationTokenImpl) {
+      DelegationTokenImpl delegationToken = (DelegationTokenImpl) token;
 
       // Convert it into a Hadoop Token
       AuthenticationTokenIdentifier identifier = delegationToken.getIdentifier();
@@ -304,7 +307,10 @@ public abstract class AbstractInputFormat<K,V> implements InputFormat<K,V> {
    * @throws org.apache.accumulo.core.client.TableNotFoundException
    *           if the table name set on the configuration doesn't exist
    * @since 1.6.0
+   * @deprecated since 1.7.0 This method returns a type that is not part of the public API and is not guaranteed to be stable. The method was deprecated to
+   *             discourage its use.
    */
+  @Deprecated
   protected static TabletLocator getTabletLocator(JobConf job, String tableId) throws TableNotFoundException {
     return InputConfigurator.getTabletLocator(CLASS, job, tableId);
   }
@@ -669,7 +675,7 @@ public abstract class AbstractInputFormat<K,V> implements InputFormat<K,V> {
             binnedRanges = binOfflineTable(job, tableId, ranges);
           }
         } else {
-          tl = getTabletLocator(job, tableId);
+          tl = InputConfigurator.getTabletLocator(CLASS, job, tableId);
           // its possible that the cache could contain complete, but old information about a tables tablets... so clear it
           tl.invalidateCache();
 

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/client/mapred/AccumuloFileOutputFormat.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/mapred/AccumuloFileOutputFormat.java b/core/src/main/java/org/apache/accumulo/core/client/mapred/AccumuloFileOutputFormat.java
index 2f2b4b2..0eb304f 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/mapred/AccumuloFileOutputFormat.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/mapred/AccumuloFileOutputFormat.java
@@ -62,7 +62,10 @@ public class AccumuloFileOutputFormat extends FileOutputFormat<Key,Value> {
    * @param job
    *          the Hadoop context for the configured job
    * @since 1.5.0
+   * @deprecated since 1.7.0 This method returns a type that is not part of the public API and is not guaranteed to be stable. The method was deprecated to
+   *             discourage its use.
    */
+  @Deprecated
   protected static AccumuloConfiguration getAccumuloConfiguration(JobConf job) {
     return FileOutputConfigurator.getAccumuloConfiguration(CLASS, job);
   }
@@ -141,7 +144,7 @@ public class AccumuloFileOutputFormat extends FileOutputFormat<Key,Value> {
   public RecordWriter<Key,Value> getRecordWriter(FileSystem ignored, JobConf job, String name, Progressable progress) throws IOException {
     // get the path of the temporary output file
     final Configuration conf = job;
-    final AccumuloConfiguration acuConf = getAccumuloConfiguration(job);
+    final AccumuloConfiguration acuConf = FileOutputConfigurator.getAccumuloConfiguration(CLASS, job);
 
     final String extension = acuConf.get(Property.TABLE_FILE_TYPE);
     final Path file = new Path(getWorkOutputPath(job), getUniqueName(job, "part") + "." + extension);

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/client/mapred/AccumuloOutputFormat.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/mapred/AccumuloOutputFormat.java b/core/src/main/java/org/apache/accumulo/core/client/mapred/AccumuloOutputFormat.java
index e0ac2c0..62ca05c 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/mapred/AccumuloOutputFormat.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/mapred/AccumuloOutputFormat.java
@@ -35,6 +35,9 @@ import org.apache.accumulo.core.client.TableExistsException;
 import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.client.ZooKeeperInstance;
 import org.apache.accumulo.core.client.admin.DelegationTokenConfig;
+import org.apache.accumulo.core.client.admin.SecurityOperations;
+import org.apache.accumulo.core.client.impl.AuthenticationTokenIdentifier;
+import org.apache.accumulo.core.client.impl.DelegationTokenImpl;
 import org.apache.accumulo.core.client.mapreduce.lib.impl.ConfiguratorBase;
 import org.apache.accumulo.core.client.mapreduce.lib.impl.OutputConfigurator;
 import org.apache.accumulo.core.client.mock.MockInstance;
@@ -43,10 +46,10 @@ import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
 import org.apache.accumulo.core.client.security.tokens.AuthenticationToken.AuthenticationTokenSerializer;
 import org.apache.accumulo.core.client.security.tokens.DelegationToken;
 import org.apache.accumulo.core.client.security.tokens.KerberosToken;
+import org.apache.accumulo.core.client.security.tokens.PasswordToken;
 import org.apache.accumulo.core.data.ColumnUpdate;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
-import org.apache.accumulo.core.security.AuthenticationTokenIdentifier;
+import org.apache.accumulo.core.data.TabletID;
 import org.apache.accumulo.core.security.ColumnVisibility;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.io.Text;
@@ -80,10 +83,12 @@ public class AccumuloOutputFormat implements OutputFormat<Text,Mutation> {
 
   /**
    * Sets the connector information needed to communicate with Accumulo in this job.
-   *
+
    * <p>
-   * <b>WARNING:</b> The serialized token is stored in the configuration and shared with all MapReduce tasks. It is BASE64 encoded to provide a charset safe
-   * conversion to a string, and is not intended to be secure.
+   * <b>WARNING:</b> Some tokens, when serialized, divulge sensitive information in the configuration as a means to pass the token to MapReduce tasks. This
+   * information is BASE64 encoded to provide a charset safe conversion to a string, but this conversion is not intended to be secure. {@link PasswordToken} is
+   * one example that is insecure in this way; however {@link DelegationToken}s, acquired using
+   * {@link SecurityOperations#getDelegationToken(DelegationTokenConfig)}, is not subject to this concern.
    *
    * @param job
    *          the Hadoop job instance to be configured
@@ -105,8 +110,8 @@ public class AccumuloOutputFormat implements OutputFormat<Text,Mutation> {
       }
     }
     // DelegationTokens can be passed securely from user to task without serializing insecurely in the configuration
-    if (token instanceof DelegationToken) {
-      DelegationToken delegationToken = (DelegationToken) token;
+    if (token instanceof DelegationTokenImpl) {
+      DelegationTokenImpl delegationToken = (DelegationTokenImpl) token;
 
       // Convert it into a Hadoop Token
       AuthenticationTokenIdentifier identifier = delegationToken.getIdentifier();
@@ -537,9 +542,9 @@ public class AccumuloOutputFormat implements OutputFormat<Text,Mutation> {
       try {
         mtbw.close();
       } catch (MutationsRejectedException e) {
-        if (e.getAuthorizationFailuresMap().size() >= 0) {
+        if (e.getSecurityErrorCodes().size() >= 0) {
           HashMap<String,Set<SecurityErrorCode>> tables = new HashMap<String,Set<SecurityErrorCode>>();
-          for (Entry<KeyExtent,Set<SecurityErrorCode>> ke : e.getAuthorizationFailuresMap().entrySet()) {
+          for (Entry<TabletID,Set<SecurityErrorCode>> ke : e.getSecurityErrorCodes().entrySet()) {
             Set<SecurityErrorCode> secCodes = tables.get(ke.getKey().getTableId().toString());
             if (secCodes == null) {
               secCodes = new HashSet<SecurityErrorCode>();

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/client/mapreduce/AbstractInputFormat.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/mapreduce/AbstractInputFormat.java b/core/src/main/java/org/apache/accumulo/core/client/mapreduce/AbstractInputFormat.java
index e3c3c42..c7a304c 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/mapreduce/AbstractInputFormat.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/mapreduce/AbstractInputFormat.java
@@ -41,7 +41,11 @@ import org.apache.accumulo.core.client.TableDeletedException;
 import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.client.TableOfflineException;
 import org.apache.accumulo.core.client.admin.DelegationTokenConfig;
+import org.apache.accumulo.core.client.admin.SecurityOperations;
+import org.apache.accumulo.core.client.impl.AuthenticationTokenIdentifier;
 import org.apache.accumulo.core.client.impl.ClientContext;
+import org.apache.accumulo.core.client.impl.Credentials;
+import org.apache.accumulo.core.client.impl.DelegationTokenImpl;
 import org.apache.accumulo.core.client.impl.OfflineScanner;
 import org.apache.accumulo.core.client.impl.ScannerImpl;
 import org.apache.accumulo.core.client.impl.Tables;
@@ -56,13 +60,11 @@ import org.apache.accumulo.core.client.security.tokens.DelegationToken;
 import org.apache.accumulo.core.client.security.tokens.KerberosToken;
 import org.apache.accumulo.core.client.security.tokens.PasswordToken;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.master.state.tables.TableState;
-import org.apache.accumulo.core.security.AuthenticationTokenIdentifier;
 import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.core.util.Pair;
 import org.apache.accumulo.core.util.UtilWaitThread;
 import org.apache.accumulo.core.client.IteratorSetting;
@@ -91,9 +93,10 @@ public abstract class AbstractInputFormat<K,V> extends InputFormat<K,V> {
    * Sets the connector information needed to communicate with Accumulo in this job.
    *
    * <p>
-   * <b>WARNING:</b> For {@link PasswordToken}, the serialized token is stored in the configuration and shared with all MapReduce tasks. It is BASE64 encoded to
-   * provide a charset safe conversion to a string, and is not intended to be secure. This is not the case for {@link KerberosToken} and the corresponding
-   * {@link DelegationToken} acquired using the KerberosToken.
+   * <b>WARNING:</b> Some tokens, when serialized, divulge sensitive information in the configuration as a means to pass the token to MapReduce tasks. This
+   * information is BASE64 encoded to provide a charset safe conversion to a string, but this conversion is not intended to be secure. {@link PasswordToken} is
+   * one example that is insecure in this way; however {@link DelegationToken}s, acquired using
+   * {@link SecurityOperations#getDelegationToken(DelegationTokenConfig)}, is not subject to this concern.
    *
    * @param job
    *          the Hadoop job instance to be configured
@@ -115,8 +118,8 @@ public abstract class AbstractInputFormat<K,V> extends InputFormat<K,V> {
       }
     }
     // DelegationTokens can be passed securely from user to task without serializing insecurely in the configuration
-    if (token instanceof DelegationToken) {
-      DelegationToken delegationToken = (DelegationToken) token;
+    if (token instanceof DelegationTokenImpl) {
+      DelegationTokenImpl delegationToken = (DelegationTokenImpl) token;
 
       // Convert it into a Hadoop Token
       AuthenticationTokenIdentifier identifier = delegationToken.getIdentifier();
@@ -360,7 +363,10 @@ public abstract class AbstractInputFormat<K,V> extends InputFormat<K,V> {
    * @throws org.apache.accumulo.core.client.TableNotFoundException
    *           if the table name set on the configuration doesn't exist
    * @since 1.6.0
+   * @deprecated since 1.7.0 This method returns a type that is not part of the public API and is not guaranteed to be stable. The method was deprecated to
+   *              discourage its use.
    */
+  @Deprecated
   protected static TabletLocator getTabletLocator(JobContext context, String table) throws TableNotFoundException {
     return InputConfigurator.getTabletLocator(CLASS, context.getConfiguration(), table);
   }
@@ -714,7 +720,7 @@ public abstract class AbstractInputFormat<K,V> extends InputFormat<K,V> {
 
           }
         } else {
-          tl = getTabletLocator(context, tableId);
+          tl = InputConfigurator.getTabletLocator(CLASS, context.getConfiguration(), tableId);
           // its possible that the cache could contain complete, but old information about a tables tablets... so clear it
           tl.invalidateCache();
 
@@ -802,4 +808,4 @@ public abstract class AbstractInputFormat<K,V> extends InputFormat<K,V> {
     }
     return splits;
   }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/client/mapreduce/AccumuloFileOutputFormat.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/mapreduce/AccumuloFileOutputFormat.java b/core/src/main/java/org/apache/accumulo/core/client/mapreduce/AccumuloFileOutputFormat.java
index db7b689..abd96b6 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/mapreduce/AccumuloFileOutputFormat.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/mapreduce/AccumuloFileOutputFormat.java
@@ -60,7 +60,10 @@ public class AccumuloFileOutputFormat extends FileOutputFormat<Key,Value> {
    * @param context
    *          the Hadoop context for the configured job
    * @since 1.5.0
+   * @deprecated since 1.7.0 This method returns a type that is not part of the public API and is not guaranteed to be stable. The method was deprecated to
+   *             discourage its use.
    */
+  @Deprecated
   protected static AccumuloConfiguration getAccumuloConfiguration(JobContext context) {
     return FileOutputConfigurator.getAccumuloConfiguration(CLASS, context.getConfiguration());
   }
@@ -139,7 +142,7 @@ public class AccumuloFileOutputFormat extends FileOutputFormat<Key,Value> {
   public RecordWriter<Key,Value> getRecordWriter(TaskAttemptContext context) throws IOException {
     // get the path of the temporary output file
     final Configuration conf = context.getConfiguration();
-    final AccumuloConfiguration acuConf = getAccumuloConfiguration(context);
+    final AccumuloConfiguration acuConf = FileOutputConfigurator.getAccumuloConfiguration(CLASS, context.getConfiguration());
 
     final String extension = acuConf.get(Property.TABLE_FILE_TYPE);
     final Path file = this.getDefaultWorkFile(context, "." + extension);

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/client/mapreduce/AccumuloOutputFormat.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/mapreduce/AccumuloOutputFormat.java b/core/src/main/java/org/apache/accumulo/core/client/mapreduce/AccumuloOutputFormat.java
index 29257d9..76fe523 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/mapreduce/AccumuloOutputFormat.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/mapreduce/AccumuloOutputFormat.java
@@ -35,6 +35,9 @@ import org.apache.accumulo.core.client.TableExistsException;
 import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.client.ZooKeeperInstance;
 import org.apache.accumulo.core.client.admin.DelegationTokenConfig;
+import org.apache.accumulo.core.client.admin.SecurityOperations;
+import org.apache.accumulo.core.client.impl.AuthenticationTokenIdentifier;
+import org.apache.accumulo.core.client.impl.DelegationTokenImpl;
 import org.apache.accumulo.core.client.mapreduce.lib.impl.ConfiguratorBase;
 import org.apache.accumulo.core.client.mapreduce.lib.impl.OutputConfigurator;
 import org.apache.accumulo.core.client.mock.MockInstance;
@@ -43,10 +46,10 @@ import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
 import org.apache.accumulo.core.client.security.tokens.AuthenticationToken.AuthenticationTokenSerializer;
 import org.apache.accumulo.core.client.security.tokens.DelegationToken;
 import org.apache.accumulo.core.client.security.tokens.KerberosToken;
+import org.apache.accumulo.core.client.security.tokens.PasswordToken;
 import org.apache.accumulo.core.data.ColumnUpdate;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
-import org.apache.accumulo.core.security.AuthenticationTokenIdentifier;
+import org.apache.accumulo.core.data.TabletID;
 import org.apache.accumulo.core.security.ColumnVisibility;
 import org.apache.hadoop.io.Text;
 import org.apache.hadoop.mapreduce.Job;
@@ -83,8 +86,10 @@ public class AccumuloOutputFormat extends OutputFormat<Text,Mutation> {
    * Sets the connector information needed to communicate with Accumulo in this job.
    *
    * <p>
-   * <b>WARNING:</b> The serialized token is stored in the configuration and shared with all MapReduce tasks. It is BASE64 encoded to provide a charset safe
-   * conversion to a string, and is not intended to be secure.
+   * <b>WARNING:</b> Some tokens, when serialized, divulge sensitive information in the configuration as a means to pass the token to MapReduce tasks. This
+   * information is BASE64 encoded to provide a charset safe conversion to a string, but this conversion is not intended to be secure. {@link PasswordToken} is
+   * one example that is insecure in this way; however {@link DelegationToken}s, acquired using
+   * {@link SecurityOperations#getDelegationToken(DelegationTokenConfig)}, is not subject to this concern.
    *
    * @param job
    *          the Hadoop job instance to be configured
@@ -106,8 +111,8 @@ public class AccumuloOutputFormat extends OutputFormat<Text,Mutation> {
       }
     }
     // DelegationTokens can be passed securely from user to task without serializing insecurely in the configuration
-    if (token instanceof DelegationToken) {
-      DelegationToken delegationToken = (DelegationToken) token;
+    if (token instanceof DelegationTokenImpl) {
+      DelegationTokenImpl delegationToken = (DelegationTokenImpl) token;
 
       // Convert it into a Hadoop Token
       AuthenticationTokenIdentifier identifier = delegationToken.getIdentifier();
@@ -537,9 +542,9 @@ public class AccumuloOutputFormat extends OutputFormat<Text,Mutation> {
       try {
         mtbw.close();
       } catch (MutationsRejectedException e) {
-        if (e.getAuthorizationFailuresMap().size() >= 0) {
+        if (e.getSecurityErrorCodes().size() >= 0) {
           HashMap<String,Set<SecurityErrorCode>> tables = new HashMap<String,Set<SecurityErrorCode>>();
-          for (Entry<KeyExtent,Set<SecurityErrorCode>> ke : e.getAuthorizationFailuresMap().entrySet()) {
+          for (Entry<TabletID,Set<SecurityErrorCode>> ke : e.getSecurityErrorCodes().entrySet()) {
             Set<SecurityErrorCode> secCodes = tables.get(ke.getKey().getTableId().toString());
             if (secCodes == null) {
               secCodes = new HashSet<SecurityErrorCode>();

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/client/mapreduce/lib/impl/ConfiguratorBase.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/mapreduce/lib/impl/ConfiguratorBase.java b/core/src/main/java/org/apache/accumulo/core/client/mapreduce/lib/impl/ConfiguratorBase.java
index b32d1b3..5364e4a 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/mapreduce/lib/impl/ConfiguratorBase.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/mapreduce/lib/impl/ConfiguratorBase.java
@@ -31,13 +31,13 @@ import org.apache.accumulo.core.client.AccumuloSecurityException;
 import org.apache.accumulo.core.client.ClientConfiguration;
 import org.apache.accumulo.core.client.Instance;
 import org.apache.accumulo.core.client.ZooKeeperInstance;
+import org.apache.accumulo.core.client.impl.AuthenticationTokenIdentifier;
+import org.apache.accumulo.core.client.impl.Credentials;
+import org.apache.accumulo.core.client.impl.DelegationTokenImpl;
 import org.apache.accumulo.core.client.mapreduce.impl.DelegationTokenStub;
 import org.apache.accumulo.core.client.mock.MockInstance;
 import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
 import org.apache.accumulo.core.client.security.tokens.AuthenticationToken.AuthenticationTokenSerializer;
-import org.apache.accumulo.core.client.security.tokens.DelegationToken;
-import org.apache.accumulo.core.security.AuthenticationTokenIdentifier;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.core.util.Base64;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FSDataInputStream;
@@ -149,9 +149,9 @@ public class ConfiguratorBase {
     checkArgument(token != null, "token is null");
     conf.setBoolean(enumToConfKey(implementingClass, ConnectorInfo.IS_CONFIGURED), true);
     conf.set(enumToConfKey(implementingClass, ConnectorInfo.PRINCIPAL), principal);
-    if (token instanceof DelegationToken) {
+    if (token instanceof DelegationTokenImpl) {
       // Avoid serializing the DelegationToken secret in the configuration -- the Job will do that work for us securely
-      DelegationToken delToken = (DelegationToken) token;
+      DelegationTokenImpl delToken = (DelegationTokenImpl) token;
       conf.set(enumToConfKey(implementingClass, ConnectorInfo.TOKEN), TokenSource.JOB.prefix() + token.getClass().getName() + ":"
           + delToken.getServiceName().toString());
     } else {
@@ -252,7 +252,7 @@ public class ConfiguratorBase {
       String[] args = token.substring(TokenSource.JOB.prefix().length()).split(":", 2);
       if (args.length == 2) {
         String className = args[0], serviceName = args[1];
-        if (DelegationToken.class.getName().equals(className)) {
+        if (DelegationTokenImpl.class.getName().equals(className)) {
           return new DelegationTokenStub(serviceName);
         }
       }
@@ -466,7 +466,7 @@ public class ConfiguratorBase {
       AuthenticationTokenIdentifier identifier = new AuthenticationTokenIdentifier();
       try {
         identifier.readFields(new DataInputStream(new ByteArrayInputStream(hadoopToken.getIdentifier())));
-        return new DelegationToken(hadoopToken.getPassword(), identifier);
+        return new DelegationTokenImpl(hadoopToken.getPassword(), identifier);
       } catch (IOException e) {
         throw new RuntimeException("Could not construct DelegationToken from JobConf Credentials", e);
       }
@@ -491,7 +491,7 @@ public class ConfiguratorBase {
       AuthenticationTokenIdentifier identifier = new AuthenticationTokenIdentifier();
       try {
         identifier.readFields(new DataInputStream(new ByteArrayInputStream(hadoopToken.getIdentifier())));
-        return new DelegationToken(hadoopToken.getPassword(), identifier);
+        return new DelegationTokenImpl(hadoopToken.getPassword(), identifier);
       } catch (IOException e) {
         throw new RuntimeException("Could not construct DelegationToken from JobConf Credentials", e);
       }

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/client/mapreduce/lib/impl/InputConfigurator.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/mapreduce/lib/impl/InputConfigurator.java b/core/src/main/java/org/apache/accumulo/core/client/mapreduce/lib/impl/InputConfigurator.java
index 238539b..0e640b4 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/mapreduce/lib/impl/InputConfigurator.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/mapreduce/lib/impl/InputConfigurator.java
@@ -47,23 +47,23 @@ import org.apache.accumulo.core.client.RowIterator;
 import org.apache.accumulo.core.client.Scanner;
 import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.client.impl.ClientContext;
+import org.apache.accumulo.core.client.impl.Credentials;
+import org.apache.accumulo.core.client.impl.DelegationTokenImpl;
 import org.apache.accumulo.core.client.impl.Tables;
 import org.apache.accumulo.core.client.impl.TabletLocator;
 import org.apache.accumulo.core.client.mapreduce.InputTableConfig;
 import org.apache.accumulo.core.client.mock.impl.MockTabletLocator;
 import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
-import org.apache.accumulo.core.client.security.tokens.DelegationToken;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.PartialKey;
 import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.iterators.SortedKeyValueIterator;
 import org.apache.accumulo.core.master.state.tables.TableState;
 import org.apache.accumulo.core.metadata.MetadataTable;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema;
 import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.core.security.TablePermission;
 import org.apache.accumulo.core.util.Base64;
 import org.apache.accumulo.core.util.Pair;
@@ -718,7 +718,7 @@ public class InputConfigurator extends ConfiguratorBase {
    *
    * <p>
    * The implementation (JobContext or JobConf which created the Configuration) needs to be used to extract the proper {@link AuthenticationToken} for
-   * {@link DelegationToken} support.
+   * {@link DelegationTokenImpl} support.
    *
    * @param implementingClass
    *          the class whose name will be used as a prefix for the property configuration key

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/client/mock/MockConnector.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/mock/MockConnector.java b/core/src/main/java/org/apache/accumulo/core/client/mock/MockConnector.java
index 4d32093..d348400 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/mock/MockConnector.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/mock/MockConnector.java
@@ -35,10 +35,10 @@ import org.apache.accumulo.core.client.admin.NamespaceOperations;
 import org.apache.accumulo.core.client.admin.ReplicationOperations;
 import org.apache.accumulo.core.client.admin.SecurityOperations;
 import org.apache.accumulo.core.client.admin.TableOperations;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.client.impl.thrift.SecurityErrorCode;
 import org.apache.accumulo.core.client.security.tokens.NullToken;
 import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.core.security.Credentials;
 
 public class MockConnector extends Connector {
 

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/client/mock/MockInstance.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/mock/MockInstance.java b/core/src/main/java/org/apache/accumulo/core/client/mock/MockInstance.java
index 01dc91b..57cd5ee 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/mock/MockInstance.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/mock/MockInstance.java
@@ -27,12 +27,12 @@ import org.apache.accumulo.core.client.AccumuloException;
 import org.apache.accumulo.core.client.AccumuloSecurityException;
 import org.apache.accumulo.core.client.Connector;
 import org.apache.accumulo.core.client.Instance;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.client.impl.thrift.SecurityErrorCode;
 import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
 import org.apache.accumulo.core.client.security.tokens.PasswordToken;
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.conf.DefaultConfiguration;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.core.util.ByteBufferUtil;
 import org.apache.accumulo.core.util.CachedConfiguration;
 import org.apache.accumulo.core.util.TextUtil;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/client/mock/impl/MockTabletLocator.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/mock/impl/MockTabletLocator.java b/core/src/main/java/org/apache/accumulo/core/client/mock/impl/MockTabletLocator.java
index 8927495..1c0c6a9 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/mock/impl/MockTabletLocator.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/mock/impl/MockTabletLocator.java
@@ -27,9 +27,9 @@ import org.apache.accumulo.core.client.Instance;
 import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.client.impl.ClientContext;
 import org.apache.accumulo.core.client.impl.TabletLocator;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
 import org.apache.accumulo.core.data.Range;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.hadoop.io.Text;
 
 public class MockTabletLocator extends TabletLocator {

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/client/security/tokens/DelegationToken.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/security/tokens/DelegationToken.java b/core/src/main/java/org/apache/accumulo/core/client/security/tokens/DelegationToken.java
index 1c52bcf..8256d66 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/security/tokens/DelegationToken.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/security/tokens/DelegationToken.java
@@ -14,138 +14,22 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.accumulo.core.client.security.tokens;
-
-import static com.google.common.base.Preconditions.checkNotNull;
 
-import java.io.DataInput;
-import java.io.DataOutput;
-import java.io.IOException;
-import java.util.Collections;
-import java.util.Set;
+package org.apache.accumulo.core.client.security.tokens;
 
-import org.apache.accumulo.core.client.Instance;
-import org.apache.accumulo.core.security.AuthenticationTokenIdentifier;
-import org.apache.hadoop.io.Text;
-import org.apache.hadoop.security.Credentials;
-import org.apache.hadoop.security.UserGroupInformation;
-import org.apache.hadoop.security.token.Token;
-import org.apache.hadoop.security.token.TokenIdentifier;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.apache.accumulo.core.client.admin.SecurityOperations;
 
 /**
- * An {@link AuthenticationToken} that wraps a "Hadoop style" delegation token created by Accumulo. The only intended scope of this implementation is when a
- * KerberosToken cannot be used instead. The most common reason for this is within YARN jobs. The Kerberos credentials of the user are not passed over the wire
- * to the job itself. The delegation token serves as a mechanism to obtain a shared secret with Accumulo using a {@link KerberosToken} and then run some task
- * authenticating with that shared secret, this {@link DelegationToken}.
+ * An {@link AuthenticationToken} that wraps a "Hadoop style" delegation token created by Accumulo. The intended scope of this token is when a KerberosToken
+ * cannot be used instead. The most common reason for this is within YARN jobs. The Kerberos credentials of the user are not passed over the wire to the job
+ * itself. The delegation token serves as a mechanism to obtain a transient shared secret with Accumulo using a {@link KerberosToken} and then run some task
+ * authenticating with that shared secret.
+ *
+ * <p>Obtain a delegation token by calling {@link SecurityOperations#getDelegationToken(org.apache.accumulo.core.client.admin.DelegationTokenConfig)}
  *
  * @since 1.7.0
  */
-public class DelegationToken extends PasswordToken {
-  private static final Logger log = LoggerFactory.getLogger(DelegationToken.class);
-
-  public static final String SERVICE_NAME = "AccumuloDelegationToken";
-
-  private AuthenticationTokenIdentifier identifier;
-
-  public DelegationToken() {
-    super();
-  }
-
-  public DelegationToken(byte[] delegationTokenPassword, AuthenticationTokenIdentifier identifier) {
-    checkNotNull(delegationTokenPassword);
-    checkNotNull(identifier);
-    setPassword(delegationTokenPassword);
-    this.identifier = identifier;
-  }
-
-  public DelegationToken(Instance instance, UserGroupInformation user, AuthenticationTokenIdentifier identifier) {
-    checkNotNull(instance);
-    checkNotNull(user);
-    checkNotNull(identifier);
-
-    Credentials creds = user.getCredentials();
-    Token<? extends TokenIdentifier> token = creds.getToken(new Text(SERVICE_NAME + "-" + instance.getInstanceID()));
-    if (null == token) {
-      throw new IllegalArgumentException("Did not find Accumulo delegation token in provided UserGroupInformation");
-    }
-    setPasswordFromToken(token, identifier);
-  }
-
-  public DelegationToken(Token<? extends TokenIdentifier> token, AuthenticationTokenIdentifier identifier) {
-    checkNotNull(token);
-    checkNotNull(identifier);
-    setPasswordFromToken(token, identifier);
-  }
-
-  private void setPasswordFromToken(Token<? extends TokenIdentifier> token, AuthenticationTokenIdentifier identifier) {
-    if (!AuthenticationTokenIdentifier.TOKEN_KIND.equals(token.getKind())) {
-      String msg = "Expected an AuthenticationTokenIdentifier but got a " + token.getKind();
-      log.error(msg);
-      throw new IllegalArgumentException(msg);
-    }
-
-    setPassword(token.getPassword());
-    this.identifier = identifier;
-  }
-
-  /**
-   * The identifier for this token, may be null.
-   */
-  public AuthenticationTokenIdentifier getIdentifier() {
-    return identifier;
-  }
-
-  /**
-   * The service name used to identify the {@link Token}
-   */
-  public Text getServiceName() {
-    checkNotNull(identifier);
-    return new Text(SERVICE_NAME + "-" + identifier.getInstanceId());
-  }
-
-  @Override
-  public void init(Properties properties) {
-    // Encourage use of UserGroupInformation as entry point
-  }
-
-  @Override
-  public Set<TokenProperty> getProperties() {
-    // Encourage use of UserGroupInformation as entry point
-    return Collections.emptySet();
-  }
-
-  @Override
-  public void write(DataOutput out) throws IOException {
-    super.write(out);
-    identifier.write(out);
-  }
-
-  @Override
-  public void readFields(DataInput in) throws IOException {
-    super.readFields(in);
-    identifier = new AuthenticationTokenIdentifier();
-    identifier.readFields(in);
-  }
-
-  @Override
-  public DelegationToken clone() {
-    DelegationToken copy = (DelegationToken) super.clone();
-    copy.setPassword(getPassword());
-    copy.identifier = new AuthenticationTokenIdentifier(identifier);
-    return copy;
-  }
-
-  @Override
-  public int hashCode() {
-    return super.hashCode() ^ identifier.hashCode();
-  }
 
-  @Override
-  public boolean equals(Object obj) {
-    // We assume we can cast obj to DelegationToken because the super.equals(obj) check ensures obj is of the same type as this
-    return super.equals(obj) && identifier.equals(((DelegationToken) obj).identifier);
-  }
+public interface DelegationToken extends AuthenticationToken {
 
 }

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/constraints/Constraint.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/constraints/Constraint.java b/core/src/main/java/org/apache/accumulo/core/constraints/Constraint.java
index e95088a..78ec0ac 100644
--- a/core/src/main/java/org/apache/accumulo/core/constraints/Constraint.java
+++ b/core/src/main/java/org/apache/accumulo/core/constraints/Constraint.java
@@ -18,8 +18,8 @@ package org.apache.accumulo.core.constraints;
 
 import java.util.List;
 
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.security.AuthorizationContainer;
 import org.apache.accumulo.core.security.Authorizations;
 

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/constraints/VisibilityConstraint.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/constraints/VisibilityConstraint.java b/core/src/main/java/org/apache/accumulo/core/constraints/VisibilityConstraint.java
new file mode 100644
index 0000000..91bc22f
--- /dev/null
+++ b/core/src/main/java/org/apache/accumulo/core/constraints/VisibilityConstraint.java
@@ -0,0 +1,93 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.accumulo.core.constraints;
+
+import static java.nio.charset.StandardCharsets.UTF_8;
+
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+
+import org.apache.accumulo.core.data.ColumnUpdate;
+import org.apache.accumulo.core.data.Mutation;
+import org.apache.accumulo.core.security.ColumnVisibility;
+import org.apache.accumulo.core.security.VisibilityEvaluator;
+import org.apache.accumulo.core.security.VisibilityParseException;
+import org.apache.accumulo.core.util.BadArgumentException;
+
+/**
+ * A constraint that checks the visibility of columns against the actor's authorizations. Violation codes:
+ * <p>
+ * <ul>
+ * <li>1 = failure to parse visibility expression</li>
+ * <li>2 = insufficient authorization</li>
+ * </ul>
+ */
+public class VisibilityConstraint implements Constraint {
+
+  @Override
+  public String getViolationDescription(short violationCode) {
+    switch (violationCode) {
+      case 1:
+        return "Malformed column visibility";
+      case 2:
+        return "User does not have authorization on column visibility";
+    }
+
+    return null;
+  }
+
+  @Override
+  public List<Short> check(Environment env, Mutation mutation) {
+    List<ColumnUpdate> updates = mutation.getUpdates();
+
+    HashSet<String> ok = null;
+    if (updates.size() > 1)
+      ok = new HashSet<String>();
+
+    VisibilityEvaluator ve = null;
+
+    for (ColumnUpdate update : updates) {
+
+      byte[] cv = update.getColumnVisibility();
+      if (cv.length > 0) {
+        String key = null;
+        if (ok != null && ok.contains(key = new String(cv, UTF_8)))
+          continue;
+
+        try {
+
+          if (ve == null)
+            ve = new VisibilityEvaluator(env.getAuthorizationsContainer());
+
+          if (!ve.evaluate(new ColumnVisibility(cv)))
+            return Collections.singletonList(Short.valueOf((short) 2));
+
+        } catch (BadArgumentException bae) {
+          return Collections.singletonList(new Short((short) 1));
+        } catch (VisibilityParseException e) {
+          return Collections.singletonList(new Short((short) 1));
+        }
+
+        if (ok != null)
+          ok.add(key);
+      }
+    }
+
+    return null;
+  }
+}

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/data/ComparableBytes.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/data/ComparableBytes.java b/core/src/main/java/org/apache/accumulo/core/data/ComparableBytes.java
index 11aaf2b..78c0e56 100644
--- a/core/src/main/java/org/apache/accumulo/core/data/ComparableBytes.java
+++ b/core/src/main/java/org/apache/accumulo/core/data/ComparableBytes.java
@@ -20,7 +20,12 @@ import org.apache.hadoop.io.BinaryComparable;
 
 /**
  * An array of bytes wrapped so as to extend Hadoop's <code>BinaryComparable</code> class.
+ *
+ * @deprecated since 1.7.0 In an attempt to clean up types in the data package that were not intended to be in public API this type was deprecated. Technically
+ *             this method was not considered part of the public API in 1.6.0 and earlier, therefore it could have been deleted. However a decision was made to
+ *             deprecate in order to be cautious and avoid confusion between 1.6.0 and 1.7.0.
  */
+@Deprecated
 public class ComparableBytes extends BinaryComparable {
 
   public byte[] data;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/data/KeyExtent.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/data/KeyExtent.java b/core/src/main/java/org/apache/accumulo/core/data/KeyExtent.java
index fe7f776..f730cf6 100644
--- a/core/src/main/java/org/apache/accumulo/core/data/KeyExtent.java
+++ b/core/src/main/java/org/apache/accumulo/core/data/KeyExtent.java
@@ -16,750 +16,243 @@
  */
 package org.apache.accumulo.core.data;
 
-/**
- * keeps track of information needed to identify a tablet
- * apparently, we only need the endKey and not the start as well
- *
- */
-
-import java.io.ByteArrayOutputStream;
 import java.io.DataInput;
 import java.io.DataOutput;
-import java.io.DataOutputStream;
 import java.io.IOException;
-import java.lang.ref.WeakReference;
-import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.Map.Entry;
 import java.util.Set;
 import java.util.SortedMap;
 import java.util.SortedSet;
+import java.util.TreeMap;
 import java.util.TreeSet;
 import java.util.UUID;
-import java.util.WeakHashMap;
 
 import org.apache.accumulo.core.data.thrift.TKeyExtent;
-import org.apache.accumulo.core.metadata.MetadataTable;
-import org.apache.accumulo.core.metadata.RootTable;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema;
-import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection;
-import org.apache.accumulo.core.util.ByteBufferUtil;
-import org.apache.accumulo.core.util.TextUtil;
 import org.apache.hadoop.io.BinaryComparable;
 import org.apache.hadoop.io.Text;
 import org.apache.hadoop.io.WritableComparable;
 
+/**
+ * keeps track of information needed to identify a tablet
+ *
+ * @deprecated since 1.7.0 use {@link TabletID}
+ */
+@Deprecated
 public class KeyExtent implements WritableComparable<KeyExtent> {
 
-  private static final WeakHashMap<Text,WeakReference<Text>> tableIds = new WeakHashMap<Text,WeakReference<Text>>();
-
-  private static Text dedupeTableId(Text tableId) {
-    synchronized (tableIds) {
-      WeakReference<Text> etir = tableIds.get(tableId);
-      if (etir != null) {
-        Text eti = etir.get();
-        if (eti != null) {
-          return eti;
-        }
-      }
-
-      tableId = new Text(tableId);
-      tableIds.put(tableId, new WeakReference<Text>(tableId));
-      return tableId;
-    }
-  }
-
-  private Text textTableId;
-  private Text textEndRow;
-  private Text textPrevEndRow;
-
-  private void check() {
-
-    if (getTableId() == null)
-      throw new IllegalArgumentException("null table id not allowed");
+  // Wrapping impl.KeyExtent to resuse code. Did not want to extend impl.KeyExtent because any changes to impl.KeyExtent would be reflected in this class.
+  // Wrapping impl.KeyExtent allows the API of this deprecated class to be frozen.
+  private org.apache.accumulo.core.data.impl.KeyExtent wrapped;
 
-    if (getEndRow() == null || getPrevEndRow() == null)
-      return;
-
-    if (getPrevEndRow().compareTo(getEndRow()) >= 0) {
-      throw new IllegalArgumentException("prevEndRow (" + getPrevEndRow() + ") >= endRow (" + getEndRow() + ")");
-    }
-  }
-
-  /**
-   * Default constructor
-   *
-   */
   public KeyExtent() {
-    this.setTableId(new Text());
-    this.setEndRow(new Text(), false, false);
-    this.setPrevEndRow(new Text(), false, false);
+    this.wrapped = new org.apache.accumulo.core.data.impl.KeyExtent();
   }
 
   public KeyExtent(Text table, Text endRow, Text prevEndRow) {
-    this.setTableId(table);
-    this.setEndRow(endRow, false, true);
-    this.setPrevEndRow(prevEndRow, false, true);
-
-    check();
+    this.wrapped = new org.apache.accumulo.core.data.impl.KeyExtent(table, endRow, prevEndRow);
   }
 
   public KeyExtent(KeyExtent extent) {
-    // extent has already deduped table id, so there is no need to do it again
-    this.textTableId = extent.textTableId;
-    this.setEndRow(extent.getEndRow(), false, true);
-    this.setPrevEndRow(extent.getPrevEndRow(), false, true);
-
-    check();
+    this.wrapped = new org.apache.accumulo.core.data.impl.KeyExtent(extent.getTableId(), extent.getEndRow(), extent.getPrevEndRow());
   }
 
   public KeyExtent(TKeyExtent tke) {
-    this.setTableId(new Text(ByteBufferUtil.toBytes(tke.table)));
-    this.setEndRow(tke.endRow == null ? null : new Text(ByteBufferUtil.toBytes(tke.endRow)), false, false);
-    this.setPrevEndRow(tke.prevEndRow == null ? null : new Text(ByteBufferUtil.toBytes(tke.prevEndRow)), false, false);
-
-    check();
-  }
-
-  /**
-   * Returns a String representing this extent's entry in the Metadata table
-   *
-   */
-  public Text getMetadataEntry() {
-    return getMetadataEntry(getTableId(), getEndRow());
-  }
-
-  public static Text getMetadataEntry(Text tableId, Text endRow) {
-    return MetadataSchema.TabletsSection.getRow(tableId, endRow);
+    this.wrapped = new org.apache.accumulo.core.data.impl.KeyExtent(tke);
   }
 
   // constructor for loading extents from metadata rows
   public KeyExtent(Text flattenedExtent, Value prevEndRow) {
-    decodeMetadataRow(flattenedExtent);
-
-    // decode the prev row
-    this.setPrevEndRow(decodePrevEndRow(prevEndRow), false, true);
-
-    check();
+    this.wrapped = new org.apache.accumulo.core.data.impl.KeyExtent(flattenedExtent, prevEndRow);
   }
 
   // recreates an encoded extent from a string representation
   // this encoding is what is stored as the row id of the metadata table
   public KeyExtent(Text flattenedExtent, Text prevEndRow) {
+    this.wrapped = new org.apache.accumulo.core.data.impl.KeyExtent(flattenedExtent, prevEndRow);
+  }
 
-    decodeMetadataRow(flattenedExtent);
-
-    this.setPrevEndRow(null, false, false);
-    if (prevEndRow != null)
-      this.setPrevEndRow(prevEndRow, false, true);
-
-    check();
+  public Text getMetadataEntry() {
+    return wrapped.getMetadataEntry();
   }
 
-  /**
-   * Sets the extents table id
-   *
-   */
   public void setTableId(Text tId) {
-
-    if (tId == null)
-      throw new IllegalArgumentException("null table name not allowed");
-
-    this.textTableId = dedupeTableId(tId);
-
-    hashCode = 0;
+    wrapped.setTableId(tId);
   }
 
-  /**
-   * Returns the extent's table id
-   *
-   */
   public Text getTableId() {
-    return textTableId;
+    return wrapped.getTableId();
   }
 
-  private void setEndRow(Text endRow, boolean check, boolean copy) {
-    if (endRow != null)
-      if (copy)
-        this.textEndRow = new Text(endRow);
-      else
-        this.textEndRow = endRow;
-    else
-      this.textEndRow = null;
-
-    hashCode = 0;
-    if (check)
-      check();
-  }
-
-  /**
-   * Sets this extent's end row
-   *
-   */
   public void setEndRow(Text endRow) {
-    setEndRow(endRow, true, true);
+    wrapped.setEndRow(endRow);
   }
 
-  /**
-   * Returns this extent's end row
-   *
-   */
   public Text getEndRow() {
-    return textEndRow;
+    return wrapped.getEndRow();
   }
 
-  /**
-   * Return the previous extent's end row
-   *
-   */
   public Text getPrevEndRow() {
-    return textPrevEndRow;
-  }
-
-  private void setPrevEndRow(Text prevEndRow, boolean check, boolean copy) {
-    if (prevEndRow != null)
-      if (copy)
-        this.textPrevEndRow = new Text(prevEndRow);
-      else
-        this.textPrevEndRow = prevEndRow;
-    else
-      this.textPrevEndRow = null;
-
-    hashCode = 0;
-    if (check)
-      check();
+    return wrapped.getPrevEndRow();
   }
 
-  /**
-   * Sets the previous extent's end row
-   *
-   */
   public void setPrevEndRow(Text prevEndRow) {
-    setPrevEndRow(prevEndRow, true, true);
+    wrapped.setPrevEndRow(prevEndRow);
   }
 
   @Override
   public void readFields(DataInput in) throws IOException {
-    Text tid = new Text();
-    tid.readFields(in);
-    setTableId(tid);
-    boolean hasRow = in.readBoolean();
-    if (hasRow) {
-      Text er = new Text();
-      er.readFields(in);
-      setEndRow(er, false, false);
-    } else {
-      setEndRow(null, false, false);
-    }
-    boolean hasPrevRow = in.readBoolean();
-    if (hasPrevRow) {
-      Text per = new Text();
-      per.readFields(in);
-      setPrevEndRow(per, false, true);
-    } else {
-      setPrevEndRow((Text) null);
-    }
-
-    hashCode = 0;
-    check();
+    wrapped.readFields(in);
   }
 
   @Override
   public void write(DataOutput out) throws IOException {
-    getTableId().write(out);
-    if (getEndRow() != null) {
-      out.writeBoolean(true);
-      getEndRow().write(out);
-    } else {
-      out.writeBoolean(false);
-    }
-    if (getPrevEndRow() != null) {
-      out.writeBoolean(true);
-      getPrevEndRow().write(out);
-    } else {
-      out.writeBoolean(false);
-    }
+    wrapped.write(out);
   }
 
-  /**
-   * Returns a String representing the previous extent's entry in the Metadata table
-   *
-   */
   public Mutation getPrevRowUpdateMutation() {
-    return getPrevRowUpdateMutation(this);
-  }
-
-  /**
-   * Empty start or end rows tell the method there are no start or end rows, and to use all the keyextents that are before the end row if no start row etc.
-   *
-   * @deprecated this method not intended for public use and is likely to be removed in a future version.
-   * @return all the key extents that the rows cover
-   */
-  @Deprecated
-  public static Collection<KeyExtent> getKeyExtentsForRange(Text startRow, Text endRow, Set<KeyExtent> kes) {
-    if (kes == null)
-      return Collections.emptyList();
-    if (startRow == null)
-      startRow = new Text();
-    if (endRow == null)
-      endRow = new Text();
-    Collection<KeyExtent> keys = new ArrayList<KeyExtent>();
-    for (KeyExtent ckes : kes) {
-      if (ckes.getPrevEndRow() == null) {
-        if (ckes.getEndRow() == null) {
-          // only tablet
-          keys.add(ckes);
-        } else {
-          // first tablet
-          // if start row = '' then we want everything up to the endRow which will always include the first tablet
-          if (startRow.getLength() == 0) {
-            keys.add(ckes);
-          } else if (ckes.getEndRow().compareTo(startRow) >= 0) {
-            keys.add(ckes);
-          }
-        }
-      } else {
-        if (ckes.getEndRow() == null) {
-          // last tablet
-          // if endRow = '' and we're at the last tablet, add it
-          if (endRow.getLength() == 0) {
-            keys.add(ckes);
-          }
-          if (ckes.getPrevEndRow().compareTo(endRow) < 0) {
-            keys.add(ckes);
-          }
-        } else {
-          // tablet in the middle
-          if (startRow.getLength() == 0) {
-            // no start row
-
-            if (endRow.getLength() == 0) {
-              // no start & end row
-              keys.add(ckes);
-            } else {
-              // just no start row
-              if (ckes.getPrevEndRow().compareTo(endRow) < 0) {
-                keys.add(ckes);
-              }
-            }
-          } else if (endRow.getLength() == 0) {
-            // no end row
-            if (ckes.getEndRow().compareTo(startRow) >= 0) {
-              keys.add(ckes);
-            }
-          } else {
-            // no null prevend or endrows and no empty string start or end rows
-            if (ckes.getPrevEndRow().compareTo(endRow) < 0 && ckes.getEndRow().compareTo(startRow) >= 0) {
-              keys.add(ckes);
-            }
-          }
-
-        }
-      }
-    }
-    return keys;
-  }
-
-  public static Text decodePrevEndRow(Value ibw) {
-    Text per = null;
-
-    if (ibw.get()[0] != 0) {
-      per = new Text();
-      per.set(ibw.get(), 1, ibw.get().length - 1);
-    }
-
-    return per;
-  }
-
-  public static Value encodePrevEndRow(Text per) {
-    if (per == null)
-      return new Value(new byte[] {0});
-    byte[] b = new byte[per.getLength() + 1];
-    b[0] = 1;
-    System.arraycopy(per.getBytes(), 0, b, 1, per.getLength());
-    return new Value(b);
-  }
-
-  public static Mutation getPrevRowUpdateMutation(KeyExtent ke) {
-    Mutation m = new Mutation(ke.getMetadataEntry());
-    TabletsSection.TabletColumnFamily.PREV_ROW_COLUMN.put(m, encodePrevEndRow(ke.getPrevEndRow()));
-    return m;
+    return wrapped.getPrevRowUpdateMutation();
   }
 
   @Override
   public int compareTo(KeyExtent other) {
-
-    int result = getTableId().compareTo(other.getTableId());
-    if (result != 0)
-      return result;
-
-    if (this.getEndRow() == null) {
-      if (other.getEndRow() != null)
-        return 1;
-    } else {
-      if (other.getEndRow() == null)
-        return -1;
-
-      result = getEndRow().compareTo(other.getEndRow());
-      if (result != 0)
-        return result;
-    }
-    if (this.getPrevEndRow() == null) {
-      if (other.getPrevEndRow() == null)
-        return 0;
-      return -1;
-    }
-    if (other.getPrevEndRow() == null)
-      return 1;
-    return this.getPrevEndRow().compareTo(other.getPrevEndRow());
+    return wrapped.compareTo(other.wrapped);
   }
 
-  private int hashCode = 0;
-
   @Override
   public int hashCode() {
-    if (hashCode != 0)
-      return hashCode;
-
-    int prevEndRowHash = 0;
-    int endRowHash = 0;
-    if (this.getEndRow() != null) {
-      endRowHash = this.getEndRow().hashCode();
-    }
-
-    if (this.getPrevEndRow() != null) {
-      prevEndRowHash = this.getPrevEndRow().hashCode();
-    }
-
-    hashCode = getTableId().hashCode() + endRowHash + prevEndRowHash;
-    return hashCode;
-  }
-
-  private boolean equals(Text t1, Text t2) {
-    if (t1 == null || t2 == null)
-      return t1 == t2;
-
-    return t1.equals(t2);
+    return wrapped.hashCode();
   }
 
   @Override
   public boolean equals(Object o) {
-    if (o == this)
-      return true;
-    if (!(o instanceof KeyExtent))
-      return false;
-    KeyExtent oke = (KeyExtent) o;
-    return textTableId.equals(oke.textTableId) && equals(textEndRow, oke.textEndRow) && equals(textPrevEndRow, oke.textPrevEndRow);
+    if(o instanceof KeyExtent){
+      return wrapped.equals(((KeyExtent)o).wrapped);
+    }
+
+    return false;
   }
 
   @Override
   public String toString() {
-    String endRowString;
-    String prevEndRowString;
-    String tableIdString = getTableId().toString().replaceAll(";", "\\\\;").replaceAll("\\\\", "\\\\\\\\");
-
-    if (getEndRow() == null)
-      endRowString = "<";
-    else
-      endRowString = ";" + TextUtil.truncate(getEndRow()).toString().replaceAll(";", "\\\\;").replaceAll("\\\\", "\\\\\\\\");
-
-    if (getPrevEndRow() == null)
-      prevEndRowString = "<";
-    else
-      prevEndRowString = ";" + TextUtil.truncate(getPrevEndRow()).toString().replaceAll(";", "\\\\;").replaceAll("\\\\", "\\\\\\\\");
-
-    return tableIdString + endRowString + prevEndRowString;
+    return wrapped.toString();
   }
 
   public UUID getUUID() {
-    try {
-
-      ByteArrayOutputStream baos = new ByteArrayOutputStream();
-      DataOutputStream dos = new DataOutputStream(baos);
-
-      // to get a unique hash it is important to encode the data
-      // like it is being serialized
-
-      this.write(dos);
-
-      dos.close();
-
-      return UUID.nameUUIDFromBytes(baos.toByteArray());
-
-    } catch (IOException e) {
-      // should not happen since we are writing to memory
-      throw new RuntimeException(e);
-    }
-  }
-
-  // note: this is only the encoding of the table id and the last row, not the prev row
-  /**
-   * Populates the extent's fields based on a flatted extent
-   *
-   */
-  private void decodeMetadataRow(Text flattenedExtent) {
-    int semiPos = -1;
-    int ltPos = -1;
-
-    for (int i = 0; i < flattenedExtent.getLength(); i++) {
-      if (flattenedExtent.getBytes()[i] == ';' && semiPos < 0) {
-        // want the position of the first semicolon
-        semiPos = i;
-      }
-
-      if (flattenedExtent.getBytes()[i] == '<') {
-        ltPos = i;
-      }
-    }
-
-    if (semiPos < 0 && ltPos < 0) {
-      throw new IllegalArgumentException("Metadata row does not contain ; or <  " + flattenedExtent);
-    }
-
-    if (semiPos < 0) {
-
-      if (ltPos != flattenedExtent.getLength() - 1) {
-        throw new IllegalArgumentException("< must come at end of Metadata row  " + flattenedExtent);
-      }
-
-      Text tableId = new Text();
-      tableId.set(flattenedExtent.getBytes(), 0, flattenedExtent.getLength() - 1);
-      this.setTableId(tableId);
-      this.setEndRow(null, false, false);
-    } else {
-
-      Text tableId = new Text();
-      tableId.set(flattenedExtent.getBytes(), 0, semiPos);
-
-      Text endRow = new Text();
-      endRow.set(flattenedExtent.getBytes(), semiPos + 1, flattenedExtent.getLength() - (semiPos + 1));
-
-      this.setTableId(tableId);
-
-      this.setEndRow(endRow, false, false);
-    }
-  }
-
-  public static byte[] tableOfMetadataRow(Text row) {
-    KeyExtent ke = new KeyExtent();
-    ke.decodeMetadataRow(row);
-    return TextUtil.getBytes(ke.getTableId());
+    return wrapped.getUUID();
   }
 
-  public boolean contains(final ByteSequence bsrow) {
-    if (bsrow == null) {
-      throw new IllegalArgumentException("Passing null to contains is ambiguous, could be in first or last extent of table");
-    }
-
-    BinaryComparable row = new BinaryComparable() {
-
-      @Override
-      public int getLength() {
-        return bsrow.length();
-      }
-
-      @Override
-      public byte[] getBytes() {
-        if (bsrow.isBackedByArray() && bsrow.offset() == 0)
-          return bsrow.getBackingArray();
-
-        return bsrow.toArray();
-      }
-    };
-
-    if ((this.getPrevEndRow() == null || this.getPrevEndRow().compareTo(row) < 0) && (this.getEndRow() == null || this.getEndRow().compareTo(row) >= 0)) {
-      return true;
-    }
-    return false;
+  public boolean contains(ByteSequence bsrow) {
+    return wrapped.contains(bsrow);
   }
 
   public boolean contains(BinaryComparable row) {
-    if (row == null) {
-      throw new IllegalArgumentException("Passing null to contains is ambiguous, could be in first or last extent of table");
-    }
-
-    if ((this.getPrevEndRow() == null || this.getPrevEndRow().compareTo(row) < 0) && (this.getEndRow() == null || this.getEndRow().compareTo(row) >= 0)) {
-      return true;
-    }
-    return false;
+    return wrapped.contains(row);
   }
 
   public Range toDataRange() {
-    return new Range(getPrevEndRow(), false, getEndRow(), true);
+    return wrapped.toDataRange();
   }
 
   public Range toMetadataRange() {
-    Text metadataPrevRow = new Text(getTableId());
-    metadataPrevRow.append(new byte[] {';'}, 0, 1);
-    if (getPrevEndRow() != null) {
-      metadataPrevRow.append(getPrevEndRow().getBytes(), 0, getPrevEndRow().getLength());
-    }
-
-    Range range = new Range(metadataPrevRow, getPrevEndRow() == null, getMetadataEntry(), true);
-    return range;
+    return wrapped.toMetadataRange();
   }
 
-  public static SortedSet<KeyExtent> findChildren(KeyExtent ke, SortedSet<KeyExtent> tablets) {
-
-    SortedSet<KeyExtent> children = null;
-
-    for (KeyExtent tabletKe : tablets) {
-
-      if (ke.getPrevEndRow() == tabletKe.getPrevEndRow() || ke.getPrevEndRow() != null && tabletKe.getPrevEndRow() != null
-          && tabletKe.getPrevEndRow().compareTo(ke.getPrevEndRow()) == 0) {
-        children = new TreeSet<KeyExtent>();
-      }
-
-      if (children != null) {
-        children.add(tabletKe);
-      }
-
-      if (ke.getEndRow() == tabletKe.getEndRow() || ke.getEndRow() != null && tabletKe.getEndRow() != null
-          && tabletKe.getEndRow().compareTo(ke.getEndRow()) == 0) {
-        return children;
-      }
-    }
-
-    return new TreeSet<KeyExtent>();
+  public boolean overlaps(KeyExtent other) {
+    return wrapped.overlaps(other.wrapped);
   }
 
-  public static KeyExtent findContainingExtent(KeyExtent extent, SortedSet<KeyExtent> extents) {
-
-    KeyExtent lookupExtent = new KeyExtent(extent);
-    lookupExtent.setPrevEndRow((Text) null);
-
-    SortedSet<KeyExtent> tailSet = extents.tailSet(lookupExtent);
-
-    if (tailSet.isEmpty()) {
-      return null;
-    }
-
-    KeyExtent first = tailSet.first();
-
-    if (first.getTableId().compareTo(extent.getTableId()) != 0) {
-      return null;
-    }
-
-    if (first.getPrevEndRow() == null) {
-      return first;
-    }
-
-    if (extent.getPrevEndRow() == null) {
-      return null;
-    }
+  public TKeyExtent toThrift() {
+    return wrapped.toThrift();
+  }
 
-    if (extent.getPrevEndRow().compareTo(first.getPrevEndRow()) >= 0)
-      return first;
-    return null;
+  public boolean isPreviousExtent(KeyExtent prevExtent) {
+    return wrapped.isPreviousExtent(prevExtent.wrapped);
   }
 
-  private static boolean startsAfter(KeyExtent nke, KeyExtent ke) {
+  public boolean isMeta() {
+    return wrapped.isMeta();
+  }
 
-    int tiCmp = ke.getTableId().compareTo(nke.getTableId());
+  public boolean isRootTablet() {
+    return wrapped.isRootTablet();
+  }
 
-    if (tiCmp > 0) {
-      return true;
+  private static SortedSet<org.apache.accumulo.core.data.impl.KeyExtent> unwrap(Set<KeyExtent> tablets){
+    SortedSet<org.apache.accumulo.core.data.impl.KeyExtent> trans = new TreeSet<>();
+    for (KeyExtent wrapper : tablets) {
+      trans.add(wrapper.wrapped);
     }
 
-    return ke.getPrevEndRow() != null && nke.getEndRow() != null && ke.getPrevEndRow().compareTo(nke.getEndRow()) >= 0;
+    return trans;
   }
 
-  private static Text rowAfterPrevRow(KeyExtent nke) {
-    Text row = new Text(nke.getPrevEndRow());
-    row.append(new byte[] {0}, 0, 1);
-    return row;
+  private static KeyExtent wrap(org.apache.accumulo.core.data.impl.KeyExtent ke){
+    return new KeyExtent(ke.getTableId(), ke.getEndRow(), ke.getPrevEndRow());
   }
 
-  // Some duplication with TabletLocatorImpl
-  public static Set<KeyExtent> findOverlapping(KeyExtent nke, SortedSet<KeyExtent> extents) {
-    if (nke == null || extents == null || extents.isEmpty())
-      return Collections.emptySet();
-
-    SortedSet<KeyExtent> start;
-
-    if (nke.getPrevEndRow() != null) {
-      Text row = rowAfterPrevRow(nke);
-      KeyExtent lookupKey = new KeyExtent(nke.getTableId(), row, null);
-      start = extents.tailSet(lookupKey);
-    } else {
-      KeyExtent lookupKey = new KeyExtent(nke.getTableId(), new Text(), null);
-      start = extents.tailSet(lookupKey);
+  private static SortedSet<KeyExtent> wrap(Collection<org.apache.accumulo.core.data.impl.KeyExtent> unwrapped){
+    SortedSet<KeyExtent> wrapped = new TreeSet<>();
+    for (org.apache.accumulo.core.data.impl.KeyExtent wrappee : unwrapped) {
+      wrapped.add(wrap(wrappee));
     }
 
-    TreeSet<KeyExtent> result = new TreeSet<KeyExtent>();
-    for (KeyExtent ke : start) {
-      if (startsAfter(nke, ke)) {
-        break;
-      }
-      result.add(ke);
-    }
-    return result;
+    return wrapped;
   }
 
-  public boolean overlaps(KeyExtent other) {
-    SortedSet<KeyExtent> set = new TreeSet<KeyExtent>();
-    set.add(other);
-    return !findOverlapping(this, set).isEmpty();
+  public static Text getMetadataEntry(Text tableId, Text endRow) {
+    return MetadataSchema.TabletsSection.getRow(tableId, endRow);
   }
 
-  // Specialization of findOverlapping(KeyExtent, SortedSet<KeyExtent> to work with SortedMap
-  public static Set<KeyExtent> findOverlapping(KeyExtent nke, SortedMap<KeyExtent,?> extents) {
-    if (nke == null || extents == null || extents.isEmpty())
-      return Collections.emptySet();
-
-    SortedMap<KeyExtent,?> start;
-
-    if (nke.getPrevEndRow() != null) {
-      Text row = rowAfterPrevRow(nke);
-      KeyExtent lookupKey = new KeyExtent(nke.getTableId(), row, null);
-      start = extents.tailMap(lookupKey);
-    } else {
-      KeyExtent lookupKey = new KeyExtent(nke.getTableId(), new Text(), null);
-      start = extents.tailMap(lookupKey);
-    }
-
-    TreeSet<KeyExtent> result = new TreeSet<KeyExtent>();
-    for (Entry<KeyExtent,?> entry : start.entrySet()) {
-      KeyExtent ke = entry.getKey();
-      if (startsAfter(nke, ke)) {
-        break;
-      }
-      result.add(ke);
-    }
-    return result;
+  /**
+   * Empty start or end rows tell the method there are no start or end rows, and to use all the keyextents that are before the end row if no start row etc.
+   *
+   * @deprecated this method not intended for public use and is likely to be removed in a future version.
+   * @return all the key extents that the rows cover
+   */
+  @Deprecated
+  public static Collection<KeyExtent> getKeyExtentsForRange(Text startRow, Text endRow, Set<KeyExtent> kes) {
+    return wrap(org.apache.accumulo.core.data.impl.KeyExtent.getKeyExtentsForRange(startRow, endRow, unwrap(kes)));
   }
 
-  public static Text getMetadataEntry(KeyExtent extent) {
-    return getMetadataEntry(extent.getTableId(), extent.getEndRow());
+  public static Text decodePrevEndRow(Value ibw) {
+    return org.apache.accumulo.core.data.impl.KeyExtent.decodePrevEndRow(ibw);
   }
 
-  public TKeyExtent toThrift() {
-    return new TKeyExtent(TextUtil.getByteBuffer(textTableId), textEndRow == null ? null : TextUtil.getByteBuffer(textEndRow), textPrevEndRow == null ? null
-        : TextUtil.getByteBuffer(textPrevEndRow));
+  public static Value encodePrevEndRow(Text per) {
+    return org.apache.accumulo.core.data.impl.KeyExtent.encodePrevEndRow(per);
   }
 
-  public boolean isPreviousExtent(KeyExtent prevExtent) {
-    if (prevExtent == null)
-      return getPrevEndRow() == null;
-
-    if (!prevExtent.getTableId().equals(getTableId()))
-      throw new IllegalArgumentException("Cannot compare accross tables " + prevExtent + " " + this);
+  public static Mutation getPrevRowUpdateMutation(KeyExtent ke) {
+   return org.apache.accumulo.core.data.impl.KeyExtent.getPrevRowUpdateMutation(ke.wrapped);
+  }
 
-    if (prevExtent.getEndRow() == null)
-      return false;
+  public static byte[] tableOfMetadataRow(Text row) {
+    return org.apache.accumulo.core.data.impl.KeyExtent.tableOfMetadataRow(row);
+  }
 
-    if (getPrevEndRow() == null)
-      return false;
+  public static SortedSet<KeyExtent> findChildren(KeyExtent ke, SortedSet<KeyExtent> tablets) {
+    return wrap(org.apache.accumulo.core.data.impl.KeyExtent.findChildren(ke.wrapped, unwrap(tablets)));
+  }
 
-    return prevExtent.getEndRow().equals(getPrevEndRow());
+  public static KeyExtent findContainingExtent(KeyExtent extent, SortedSet<KeyExtent> extents) {
+    return wrap(org.apache.accumulo.core.data.impl.KeyExtent.findContainingExtent(extent.wrapped, unwrap(extents)));
   }
 
-  public boolean isMeta() {
-    return getTableId().toString().equals(MetadataTable.ID) || isRootTablet();
+  public static Set<KeyExtent> findOverlapping(KeyExtent nke, SortedSet<KeyExtent> extents) {
+    return wrap(org.apache.accumulo.core.data.impl.KeyExtent.findOverlapping(nke.wrapped, unwrap(extents)));
   }
 
-  public boolean isRootTablet() {
-    return getTableId().toString().equals(RootTable.ID);
+  public static Set<KeyExtent> findOverlapping(KeyExtent nke, SortedMap<KeyExtent,?> extents) {
+    SortedMap<org.apache.accumulo.core.data.impl.KeyExtent,Object> trans = new TreeMap<>();
+    for(Entry<KeyExtent, ?> entry : extents.entrySet()){
+      trans.put(entry.getKey().wrapped, entry.getValue());
+    }
+
+    return wrap(org.apache.accumulo.core.data.impl.KeyExtent.findOverlapping(nke.wrapped, trans));
+  }
+  public static Text getMetadataEntry(KeyExtent extent) {
+    return org.apache.accumulo.core.data.impl.KeyExtent.getMetadataEntry(extent.wrapped);
   }
 }

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/data/TabletID.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/data/TabletID.java b/core/src/main/java/org/apache/accumulo/core/data/TabletID.java
new file mode 100644
index 0000000..bfcb742
--- /dev/null
+++ b/core/src/main/java/org/apache/accumulo/core/data/TabletID.java
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
+package org.apache.accumulo.core.data;
+
+import org.apache.hadoop.io.Text;
+
+/**
+ * @since 1.7.0
+ */
+public interface TabletID extends Comparable<TabletID> {
+  public Text getTableId();
+  public Text getEndRow();
+  public Text getPrevEndRow();
+}

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/data/impl/ComparableBytes.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/data/impl/ComparableBytes.java b/core/src/main/java/org/apache/accumulo/core/data/impl/ComparableBytes.java
new file mode 100644
index 0000000..3bf4357
--- /dev/null
+++ b/core/src/main/java/org/apache/accumulo/core/data/impl/ComparableBytes.java
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.accumulo.core.data.impl;
+
+import org.apache.hadoop.io.BinaryComparable;
+
+/**
+ * An array of bytes wrapped so as to extend Hadoop's <code>BinaryComparable</code> class.
+ */
+public class ComparableBytes extends BinaryComparable {
+
+  public byte[] data;
+
+  /**
+   * Creates a new byte wrapper. The given byte array is used directly as a backing array, so later changes made to the array reflect into the new object.
+   *
+   * @param b
+   *          bytes to wrap
+   */
+  public ComparableBytes(byte[] b) {
+    this.data = b;
+  }
+
+  /**
+   * Gets the wrapped bytes in this object.
+   *
+   * @return bytes
+   */
+  @Override
+  public byte[] getBytes() {
+    return data;
+  }
+
+  @Override
+  public int getLength() {
+    return data.length;
+  }
+
+}


[6/9] accumulo git commit: ACCUMULO-3657 ACCUMULO-3548 Clarify Accumulo API

Posted by kt...@apache.org.
ACCUMULO-3657 ACCUMULO-3548 Clarify Accumulo API

The following changes were made.

 * Fix API problems with IsolatedScanner
 * Deprecated public inner class in ClientSiderIteratorScanner that was not intended to be in public API
 * ACCUMULO-3488 Deprecated KeyExtent from public API
 * Deprecated use of Property in ClientConfiguration
 * deprecated ZooKeeperInstance.lookupIntanceName(ZooCache, UUID)
 * deprecated IteratorUtil.getProperty(IteratorScope)
 * deprecated class ComparableBytes
 * ACCUMULO-3724 moved DelegationToken and AuthenticationTokenIdentifier out of public API
 * deprecated getTabletLocator() in both AbstractInputFormat classes
 * deprecated getAccumuloConfiguration() in both AccumuloFileOutputFormat classes
 * deperecated and moved VisibilityConstraint
 * updated README to accurately communicate Accumulo's API.  Update APILyzer config to enforce ACCUMULO-3720
 * moved Credentials from core.security to core.client.impl


Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/c6252914
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/c6252914
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/c6252914

Branch: refs/heads/master
Commit: c62529142b9ded096a1080d82c6934c3a309690c
Parents: 18a3188
Author: Keith Turner <kt...@apache.org>
Authored: Fri Apr 10 15:01:43 2015 -0400
Committer: Keith Turner <kt...@apache.org>
Committed: Tue Apr 21 17:53:31 2015 -0400

----------------------------------------------------------------------
 README.md                                       |  30 +-
 core/pom.xml                                    |  37 +-
 core/src/main/findbugs/exclude-filter.xml       |   1 +
 .../core/client/ClientConfiguration.java        |   8 +
 .../core/client/ClientSideIteratorScanner.java  |  27 +-
 .../accumulo/core/client/IsolatedScanner.java   |   4 +-
 .../core/client/MutationsRejectedException.java |  68 +-
 .../accumulo/core/client/ZooKeeperInstance.java |  21 +-
 .../core/client/admin/ActiveCompaction.java     |  12 +-
 .../accumulo/core/client/admin/ActiveScan.java  |  12 +-
 .../client/admin/DelegationTokenConfig.java     |   4 +-
 .../core/client/admin/SecurityOperations.java   |   3 +-
 .../core/client/impl/ActiveCompactionImpl.java  |  19 +-
 .../core/client/impl/ActiveScanImpl.java        |  14 +-
 .../impl/AuthenticationTokenIdentifier.java     | 210 +++++
 .../core/client/impl/ClientContext.java         |   1 -
 .../core/client/impl/ConditionalWriterImpl.java |   2 +-
 .../accumulo/core/client/impl/Credentials.java  | 157 ++++
 .../core/client/impl/DelegationTokenImpl.java   | 144 ++++
 .../client/impl/InstanceOperationsImpl.java     |  18 +
 .../client/impl/NamespaceOperationsImpl.java    |   1 -
 .../core/client/impl/OfflineScanner.java        |   3 +-
 .../core/client/impl/RootTabletLocator.java     |   2 +-
 .../client/impl/SecurityOperationsImpl.java     |   4 +-
 .../core/client/impl/TableOperationsImpl.java   |   2 +-
 .../core/client/impl/TabletLocator.java         |   2 +-
 .../core/client/impl/TabletLocatorImpl.java     |   2 +-
 .../impl/TabletServerBatchReaderIterator.java   |   2 +-
 .../client/impl/TabletServerBatchWriter.java    |   8 +-
 .../accumulo/core/client/impl/TabletType.java   |   2 +-
 .../core/client/impl/ThriftScanner.java         |   2 +-
 .../core/client/impl/TimeoutTabletLocator.java  |   2 +-
 .../accumulo/core/client/impl/Translator.java   |   2 +-
 .../accumulo/core/client/impl/Writer.java       |   2 +-
 .../core/client/mapred/AbstractInputFormat.java |  20 +-
 .../client/mapred/AccumuloFileOutputFormat.java |   5 +-
 .../client/mapred/AccumuloOutputFormat.java     |  23 +-
 .../client/mapreduce/AbstractInputFormat.java   |  26 +-
 .../mapreduce/AccumuloFileOutputFormat.java     |   5 +-
 .../client/mapreduce/AccumuloOutputFormat.java  |  21 +-
 .../mapreduce/lib/impl/ConfiguratorBase.java    |  16 +-
 .../mapreduce/lib/impl/InputConfigurator.java   |   8 +-
 .../core/client/mock/MockConnector.java         |   2 +-
 .../accumulo/core/client/mock/MockInstance.java |   2 +-
 .../client/mock/impl/MockTabletLocator.java     |   2 +-
 .../client/security/tokens/DelegationToken.java | 134 +---
 .../accumulo/core/constraints/Constraint.java   |   2 +-
 .../core/constraints/VisibilityConstraint.java  |  93 +++
 .../accumulo/core/data/ComparableBytes.java     |   5 +
 .../apache/accumulo/core/data/KeyExtent.java    | 717 +++--------------
 .../org/apache/accumulo/core/data/TabletID.java |  29 +
 .../core/data/impl/ComparableBytes.java         |  53 ++
 .../accumulo/core/data/impl/KeyExtent.java      | 768 +++++++++++++++++++
 .../accumulo/core/data/impl/TabletIDImpl.java   | 100 +++
 .../accumulo/core/iterators/IteratorUtil.java   |  40 +-
 .../core/iterators/system/MultiIterator.java    |   2 +-
 .../core/metadata/MetadataLocationObtainer.java |   2 +-
 .../core/metadata/MetadataServicer.java         |   2 +-
 .../accumulo/core/metadata/RootTable.java       |   2 +-
 .../core/metadata/ServicerForRootTable.java     |   2 +-
 .../core/metadata/TableMetadataServicer.java    |   2 +-
 .../ReplicationConfigurationUtil.java           |   2 +-
 .../rpc/SaslClientDigestCallbackHandler.java    |   4 +-
 .../accumulo/core/rpc/SaslConnectionParams.java |   6 +-
 .../security/AuthenticationTokenIdentifier.java | 210 -----
 .../accumulo/core/security/Credentials.java     | 157 ----
 .../core/security/VisibilityConstraint.java     |  76 +-
 .../core/security/VisibilityEvaluator.java      |  10 +-
 .../core/tabletserver/log/LogEntry.java         |   2 +-
 .../org/apache/accumulo/core/util/Merge.java    |   2 +-
 .../core/client/impl/ScannerImplTest.java       |   1 -
 .../client/impl/TableOperationsImplTest.java    |   3 +-
 .../core/client/impl/TabletLocatorImplTest.java |   3 +-
 .../impl/TabletServerBatchReaderTest.java       |   1 -
 .../mapred/AccumuloFileOutputFormatTest.java    |   5 +-
 .../core/client/mapred/TokenFileTest.java       |   2 +-
 .../mapreduce/AccumuloFileOutputFormatTest.java |   5 +-
 .../core/client/mapreduce/TokenFileTest.java    |   2 +-
 .../tokens/DelegationTokenImplTest.java         |  73 ++
 .../security/tokens/DelegationTokenTest.java    |  72 --
 .../accumulo/core/data/KeyExtentTest.java       |   1 +
 .../apache/accumulo/core/data/RangeTest.java    |   1 +
 .../accumulo/core/file/rfile/RFileTest.java     |   2 +-
 .../core/iterators/IteratorUtilTest.java        |   2 +-
 .../iterators/system/MultiIteratorTest.java     |   2 +-
 .../core/metadata/MetadataServicerTest.java     |   2 +-
 .../ReplicationConfigurationUtilTest.java       |   2 +-
 .../core/rpc/SaslConnectionParamsTest.java      |  12 +-
 .../AuthenticationTokenIdentifierTest.java      |   1 +
 .../accumulo/core/security/CredentialsTest.java |   1 +
 .../core/security/VisibilityConstraintTest.java |   1 +
 .../apache/accumulo/core/util/MergeTest.java    |   2 +-
 .../simple/client/RandomBatchWriter.java        |   6 +-
 minicluster/pom.xml                             |   5 +-
 .../impl/MiniAccumuloClusterImpl.java           |   2 +-
 .../org/apache/accumulo/proxy/ProxyServer.java  |   8 +-
 .../accumulo/server/AccumuloServerContext.java  |   2 +-
 .../accumulo/server/client/BulkImporter.java    |   2 +-
 .../server/client/ClientServiceHandler.java     |   2 +-
 .../accumulo/server/client/HdfsZooInstance.java |   6 +-
 .../server/conf/ServerConfiguration.java        |   2 +-
 .../server/conf/ServerConfigurationFactory.java |   2 +-
 .../server/constraints/MetadataConstraints.java |   2 +-
 .../accumulo/server/fs/VolumeManagerImpl.java   |   2 +-
 .../apache/accumulo/server/fs/VolumeUtil.java   |   2 +-
 .../apache/accumulo/server/init/Initialize.java |   2 +-
 .../accumulo/server/master/LiveTServerSet.java  |   2 +-
 .../master/balancer/ChaoticLoadBalancer.java    |   2 +-
 .../master/balancer/DefaultLoadBalancer.java    |   2 +-
 .../server/master/balancer/GroupBalancer.java   |   2 +-
 .../master/balancer/RegexGroupBalancer.java     |   2 +-
 .../master/balancer/TableLoadBalancer.java      |   2 +-
 .../server/master/balancer/TabletBalancer.java  |   2 +-
 .../server/master/state/Assignment.java         |   2 +-
 .../server/master/state/CurrentState.java       |   2 +-
 .../accumulo/server/master/state/MergeInfo.java |   2 +-
 .../master/state/MetaDataTableScanner.java      |   2 +-
 .../master/state/TabletLocationState.java       |   2 +-
 .../server/master/state/TabletMigration.java    |   2 +-
 .../master/state/TabletStateChangeIterator.java |   2 +-
 .../rpc/SaslServerDigestCallbackHandler.java    |   2 +-
 .../TCredentialsUpdatingInvocationHandler.java  |   4 +-
 .../security/AuditedSecurityOperation.java      |   4 +-
 .../server/security/SecurityOperation.java      |   2 +-
 .../server/security/SystemCredentials.java      |   2 +-
 .../AuthenticationTokenSecretManager.java       |   6 +-
 .../security/handler/KerberosAuthenticator.java |   4 +-
 .../tabletserver/LargestFirstMemoryManager.java |   2 +-
 .../tabletserver/MemoryManagementActions.java   |   2 +-
 .../server/tabletserver/MemoryManager.java      |   2 +-
 .../server/tabletserver/TabletState.java        |   2 +-
 .../org/apache/accumulo/server/util/Admin.java  |   2 +-
 .../server/util/CheckForMetadataProblems.java   |   2 +-
 .../apache/accumulo/server/util/FileUtil.java   |   2 +-
 .../server/util/FindOfflineTablets.java         |   2 +-
 .../server/util/MasterMetadataUtil.java         |   2 +-
 .../accumulo/server/util/MetadataTableUtil.java |   4 +-
 .../util/RemoveEntriesForMissingFiles.java      |   4 +-
 .../server/util/ReplicationTableUtil.java       |   4 +-
 .../accumulo/server/util/TableDiskUsage.java    |   2 +-
 .../accumulo/server/util/TabletIterator.java    |   2 +-
 .../server/util/VerifyTabletAssignments.java    |   4 +-
 .../server/AccumuloServerContextTest.java       |   2 +-
 .../server/client/BulkImporterTest.java         |   4 +-
 .../balancer/ChaoticLoadBalancerTest.java       |   2 +-
 .../balancer/DefaultLoadBalancerTest.java       |   2 +-
 .../master/balancer/GroupBalancerTest.java      |   2 +-
 .../master/balancer/TableLoadBalancerTest.java  |   2 +-
 .../server/master/state/MergeInfoTest.java      |   2 +-
 .../master/state/TabletLocationStateTest.java   |   2 +-
 .../rpc/SaslDigestCallbackHandlerTest.java      |   2 +-
 .../server/security/SystemCredentialsTest.java  |   2 +-
 .../AuthenticationTokenSecretManagerTest.java   |   2 +-
 .../apache/accumulo/server/util/CloneTest.java  |   2 +-
 .../server/util/ReplicationTableUtilTest.java   |   4 +-
 .../server/util/TabletIteratorTest.java         |   2 +-
 .../accumulo/gc/GarbageCollectionAlgorithm.java |   2 +-
 .../accumulo/gc/GarbageCollectionTest.java      |   2 +-
 .../accumulo/gc/SimpleGarbageCollectorTest.java |   2 +-
 .../CloseWriteAheadLogReferencesTest.java       |   2 +-
 .../java/org/apache/accumulo/master/Master.java |   2 +-
 .../master/MasterClientServiceHandler.java      |   4 +-
 .../accumulo/master/TabletGroupWatcher.java     |   2 +-
 .../master/recovery/RecoveryManager.java        |   2 +-
 .../accumulo/master/state/MergeStats.java       |   2 +-
 .../accumulo/master/tableOps/BulkImport.java    |   2 +-
 .../accumulo/master/tableOps/CompactRange.java  |   2 +-
 .../accumulo/master/tableOps/CreateTable.java   |   2 +-
 .../accumulo/master/tableOps/DeleteTable.java   |   2 +-
 .../accumulo/master/tableOps/ExportTable.java   |   2 +-
 .../accumulo/master/tableOps/ImportTable.java   |   2 +-
 .../accumulo/master/tableOps/TableRangeOp.java  |   2 +-
 .../master/ReplicationOperationsImplTest.java   |   4 +-
 .../apache/accumulo/master/TestMergeState.java  |   2 +-
 .../replication/SequentialWorkAssignerTest.java |   2 +-
 .../master/replication/StatusMakerTest.java     |   2 +-
 .../replication/UnorderedWorkAssignerTest.java  |   2 +-
 .../master/state/RootTabletStateStoreTest.java  |   2 +-
 .../monitor/servlets/TServersServlet.java       |   2 +-
 .../monitor/servlets/TablesServlet.java         |   2 +-
 .../tserver/ActiveAssignmentRunnable.java       |   2 +-
 .../tserver/ConditionalMutationSet.java         |   2 +-
 .../apache/accumulo/tserver/FileManager.java    |   2 +-
 .../org/apache/accumulo/tserver/RowLocks.java   |   2 +-
 .../apache/accumulo/tserver/TabletServer.java   |   2 +-
 .../tserver/TabletServerResourceManager.java    |   2 +-
 .../accumulo/tserver/TservConstraintEnv.java    |   2 +-
 .../apache/accumulo/tserver/WriteTracker.java   |   2 +-
 .../compaction/MajorCompactionRequest.java      |   2 +-
 .../tserver/constraints/ConstraintChecker.java  |   2 +-
 .../apache/accumulo/tserver/log/DfsLogger.java  |   2 +-
 .../accumulo/tserver/log/SortedLogRecovery.java |   2 +-
 .../tserver/log/TabletServerLogger.java         |   2 +-
 .../accumulo/tserver/logger/LogFileKey.java     |   2 +-
 .../accumulo/tserver/logger/LogReader.java      |   2 +-
 .../mastermessage/SplitReportMessage.java       |   2 +-
 .../mastermessage/TabletStatusMessage.java      |   2 +-
 .../replication/AccumuloReplicaSystem.java      |   2 +-
 .../accumulo/tserver/scan/LookupTask.java       |   2 +-
 .../tserver/session/MultiScanSession.java       |   2 +-
 .../accumulo/tserver/session/ScanSession.java   |   2 +-
 .../accumulo/tserver/session/UpdateSession.java |   2 +-
 .../accumulo/tserver/tablet/CommitSession.java  |   2 +-
 .../accumulo/tserver/tablet/CompactionInfo.java |   2 +-
 .../accumulo/tserver/tablet/Compactor.java      |   2 +-
 .../tserver/tablet/DatafileManager.java         |   2 +-
 .../apache/accumulo/tserver/tablet/Tablet.java  |   2 +-
 .../tserver/tablet/TabletCommitter.java         |   2 +-
 .../LargestFirstMemoryManagerTest.java          |   2 +-
 .../accumulo/tserver/AssignmentWatcherTest.java |   2 +-
 .../tserver/CheckTabletMetadataTest.java        |   2 +-
 .../tserver/TabletResourceManagerTest.java      |   2 +-
 .../DefaultCompactionStrategyTest.java          |   2 +-
 .../SizeLimitCompactionStrategyTest.java        |   2 +-
 .../ConfigurableCompactionStrategyTest.java     |   2 +-
 .../constraints/ConstraintCheckerTest.java      |   2 +-
 .../tserver/log/SortedLogRecoveryTest.java      |   2 +-
 .../accumulo/tserver/logger/LogFileTest.java    |   2 +-
 .../replication/AccumuloReplicaSystemTest.java  |   2 +-
 .../replication/ReplicationProcessorTest.java   |   2 +-
 .../accumulo/tserver/tablet/TabletTest.java     |   2 +-
 .../commands/ActiveCompactionIterator.java      |   2 +-
 .../shell/commands/ActiveScanIterator.java      |   2 +-
 .../shell/commands/CreateTableCommand.java      |   2 +-
 .../shell/commands/GetSplitsCommand.java        |   2 +-
 .../accumulo/shell/commands/InsertCommand.java  |   6 +-
 .../accumulo/test/QueryMetadataTable.java       |   2 +-
 .../org/apache/accumulo/test/TestIngest.java    |   6 +-
 .../apache/accumulo/test/WrongTabletTest.java   |   4 +-
 .../continuous/ContinuousStatsCollector.java    |   4 +-
 .../metadata/MetadataBatchScanTest.java         |   2 +-
 .../performance/scan/CollectTabletStats.java    |   4 +-
 .../test/performance/thrift/NullTserver.java    |   2 +-
 .../randomwalk/security/AlterTablePerm.java     |   2 +-
 .../test/randomwalk/security/Authenticate.java  |   2 +-
 .../test/randomwalk/security/ChangePass.java    |   2 +-
 .../test/randomwalk/security/DropTable.java     |   2 +-
 .../test/randomwalk/security/SetAuths.java      |   2 +-
 .../randomwalk/security/WalkingSecurity.java    |   2 +-
 .../randomwalk/sequential/MapRedVerifyTool.java |   4 +-
 .../server/security/SystemCredentialsIT.java    |   2 +-
 .../test/MasterRepairsDualAssignmentIT.java     |   4 +-
 .../accumulo/test/MetaConstraintRetryIT.java    |   4 +-
 .../accumulo/test/MultiTableBatchWriterIT.java  |   2 +-
 .../org/apache/accumulo/test/NamespacesIT.java  |   6 +-
 .../apache/accumulo/test/SplitRecoveryIT.java   |   2 +-
 .../accumulo/test/TransportCachingIT.java       |   2 +-
 .../java/org/apache/accumulo/test/VolumeIT.java |   2 +-
 .../test/functional/AccumuloInputFormatIT.java  |   2 +-
 .../functional/BalanceAfterCommsFailureIT.java  |   2 +-
 .../BalanceInPresenceOfOfflineTableIT.java      |   2 +-
 .../test/functional/DynamicThreadPoolsIT.java   |   2 +-
 .../accumulo/test/functional/KerberosIT.java    |  37 +-
 .../test/functional/MasterAssignmentIT.java     |   4 +-
 .../test/functional/MetadataMaxFilesIT.java     |   2 +-
 .../accumulo/test/functional/PermissionsIT.java |   2 +-
 .../functional/SimpleBalancerFairnessIT.java    |   2 +-
 .../accumulo/test/functional/SplitIT.java       |   2 +-
 .../test/functional/SplitRecoveryIT.java        |   2 +-
 .../accumulo/test/functional/TableIT.java       |   2 +-
 .../functional/TabletStateChangeIteratorIT.java |   2 +-
 ...bageCollectorCommunicatesWithTServersIT.java |   2 +-
 ...UnusedWalDoesntCloseReplicationStatusIT.java |   2 +-
 263 files changed, 2364 insertions(+), 1658 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/README.md
----------------------------------------------------------------------
diff --git a/README.md b/README.md
index 15be8db..633e1b5 100644
--- a/README.md
+++ b/README.md
@@ -76,15 +76,26 @@ API
 
 The public Accumulo API is composed of :
 
- * All public classes and interfaces in the org.apache.accumulo.core.client
-   package, as as well as all of its subpackages excluding those named *impl*.
- * Key, Mutation, Value, Range, Condition, and ConditionalMutation in
-   org.apache.accumulo.core.data.
- * All public classes and interfaces in the org.apache.accumulo.minicluster
-   package, as well as all of its subpackages excluding those named *impl*.
- * Anything with public or protected acccess within any Class or Interface that
-   is in the public API. This includes, but is not limited to: methods, members
-   classes, interfaces, and enums.
+All public types in the following packages and their subpackages excluding
+those named *impl*, *thrift*, or *crypto*. 
+
+   * org.apache.accumulo.core.client
+   * org.apache.accumulo.core.data
+   * org.apache.accumulo.core.security
+   * org.apache.accumulo.minicluster
+
+A type is a class, interface, or enum.  Anything with public or protected
+acccess in an API type is in the API.  This includes, but is not limited to:
+methods, members classes, interfaces, and enums.  Package-private types in
+the above packages are *not* considered public API.
+
+The following regex matches imports that are *not* Accumulo public API.  This
+regex can be used with [RegexpSingleline][13] to automatically find suspicious
+imports in a project using Accumulo. 
+
+```
+import\s+org\.apache\.accumulo\.(.*\.(impl|thrift|crypto)\..*|(?!core|minicluster).*|core\.(?!client|data|security).*)
+```
 
 The Accumulo project maintains binary compatibility across this API within a
 major release, as defined in the Java Language Specification 3rd ed. Starting
@@ -100,3 +111,4 @@ with Accumulo 1.6.2 and 1.7.0 all API changes will follow [semver 2.0][12]
 [8]: http://accumulo.apache.org/notable_features.html
 [9]: http://maven.apache.org/
 [12]: http://semver.org/spec/v2.0.0.html
+[13]: http://checkstyle.sourceforge.net/config_regexp.html

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/pom.xml
----------------------------------------------------------------------
diff --git a/core/pom.xml b/core/pom.xml
index f4918bc..521411c 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -177,19 +177,46 @@
             <configuration>
               <includes>
                 <include>org[.]apache[.]accumulo[.]core[.]client[.].*</include>
-                <include>org[.]apache[.]accumulo[.]core[.]data[.](Mutation|Key|Value|Condition|ConditionalMutation|Range|ByteSequence|PartialKey|Column)([$].*)?</include>
-                <include>org[.]apache[.]accumulo[.]core[.]security[.](ColumnVisibility|Authorizations|NamespacePermission|SystemPermission|TablePermission)([$].*)?</include>
+                <include>org[.]apache[.]accumulo[.]core[.]data[.].*</include>
+                <include>org[.]apache[.]accumulo[.]core[.]security[.].*</include>
+		<!-- The following types are not advertised as in API, but are
+		     used in a such a way by API classes that we want to
+		     ensure they do not reference non public API types.
+		     Ideally no new uses of these classes would occur in the
+		     API.  These types were not placed in the allows set
+		     because no analysis is done on types in that set. -->
+                <include>org[.]apache[.]accumulo[.]core[.]util[.](Pair|ComparablePair)</include>
+                <include>org[.]apache[.]accumulo[.]core[.]iterators[.]IteratorUtil[$]IteratorScope</include>
               </includes>
               <excludes>
                 <exclude>.*Impl</exclude>
                 <exclude>.*[.]impl[.].*</exclude>
+                <exclude>.*[.]thrift[.].*</exclude>
+                <exclude>org[.]apache[.]accumulo[.]core[.]security[.]crypto[.].*</exclude>
                 <exclude>org[.]apache[.]accumulo[.]core[.]client[.]mock[.].*</exclude>
               </excludes>
               <allows>
+		<!--Allow API data types to reference thrift types, but do not
+		     analyze thrift types -->
                 <allow>org[.]apache[.]accumulo[.].*[.]thrift[.].*</allow>
-                <allow>org[.]apache[.]commons[.].*</allow>
-                <allow>org[.]apache[.]hadoop[.].*</allow>
-                <allow>org[.]apache[.]log4j[.].*</allow>
+		<!--ClientConfiguration indirectly extends
+		     AbstractConfiguration and EventSource.  These two types
+		     bring in many types from apache commons.  Added these two
+		     types instead of all of the types they reference.-->
+                <allow>org[.]apache[.]commons[.]configuration[.]Configuration</allow>
+                <allow>org[.]apache[.]commons[.]configuration[.]AbstractConfiguration</allow>
+                <allow>org[.]apache[.]commons[.]configuration[.]event[.]EventSource</allow>
+		<!--Type from hadoop used in API.  If adding a new type from
+		     Hadoop to the Accumulo API ensure its annotated as
+		     stable.-->
+                <allow>org[.]apache[.]hadoop[.]conf[.]Configuration</allow>
+                <allow>org[.]apache[.]hadoop[.]fs[.](FileSystem|Path)</allow>
+                <allow>org[.]apache[.]hadoop[.]io[.](Text|Writable|WritableComparable|WritableComparator)</allow>
+                <allow>org[.]apache[.]hadoop[.]mapred[.](JobConf|RecordReader|InputSplit|RecordWriter|Reporter)</allow>
+                <allow>org[.]apache[.]hadoop[.]mapreduce[.](Job|JobContext|RecordReader|InputSplit|TaskAttemptContext|RecordWriter|OutputCommitter|TaskInputOutputContext)</allow>
+                <allow>org[.]apache[.]hadoop[.]util[.]Progressable</allow>
+                <!--ugghhh-->
+                <allow>org[.]apache[.]log4j[.](Level|Logger)</allow>
               </allows>
             </configuration>
           </execution>

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/findbugs/exclude-filter.xml
----------------------------------------------------------------------
diff --git a/core/src/main/findbugs/exclude-filter.xml b/core/src/main/findbugs/exclude-filter.xml
index 3cc5e30..aa854f0 100644
--- a/core/src/main/findbugs/exclude-filter.xml
+++ b/core/src/main/findbugs/exclude-filter.xml
@@ -52,6 +52,7 @@
       <Class name="org.apache.accumulo.core.client.mapred.impl.BatchInputSplit" />
       <Class name="org.apache.accumulo.core.util.AddressUtil" />
       <Class name="org.apache.accumulo.core.zookeeper.ZooUtil" />
+      <Class name="org.apache.accumulo.core.security.VisibilityConstraint" />
     </Or>
     <Or>
       <Bug code="NM" pattern="NM_SAME_SIMPLE_NAME_AS_SUPERCLASS" />

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/client/ClientConfiguration.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/ClientConfiguration.java b/core/src/main/java/org/apache/accumulo/core/client/ClientConfiguration.java
index 0677365..a926d35 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/ClientConfiguration.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/ClientConfiguration.java
@@ -119,6 +119,10 @@ public class ClientConfiguration extends CompositeConfiguration {
       return defaultValue;
     }
 
+    /**
+     * @deprecated since 1.7.0 This method returns a type that is not part of the public API and not guaranteed to be stable.
+     */
+    @Deprecated
     public PropertyType getType() {
       return type;
     }
@@ -127,6 +131,10 @@ public class ClientConfiguration extends CompositeConfiguration {
       return description;
     }
 
+    /**
+     * @deprecated since 1.7.0 This method returns a type that is not part of the public API and not guaranteed to be stable.
+     */
+    @Deprecated
     public Property getAccumuloProperty() {
       return accumuloProperty;
     }

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/client/ClientSideIteratorScanner.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/ClientSideIteratorScanner.java b/core/src/main/java/org/apache/accumulo/core/client/ClientSideIteratorScanner.java
index ec13b1f..c75f54a 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/ClientSideIteratorScanner.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/ClientSideIteratorScanner.java
@@ -62,9 +62,24 @@ public class ClientSideIteratorScanner extends ScannerOptions implements Scanner
   private long readaheadThreshold = Constants.SCANNER_DEFAULT_READAHEAD_THRESHOLD;
 
   /**
+   * @deprecated since 1.7.0 was never intended for public use.  However this could have been used by anything extending this class.
+   */
+  @Deprecated
+  public class ScannerTranslator extends ScannerTranslatorImpl {
+    public ScannerTranslator(Scanner scanner) {
+      super(scanner);
+    }
+
+    @Override
+    public SortedKeyValueIterator<Key,Value> deepCopy(final IteratorEnvironment env) {
+      return new ScannerTranslator(scanner);
+    }
+  }
+
+  /**
    * A class that wraps a Scanner in a SortedKeyValueIterator so that other accumulo iterators can use it as a source.
    */
-  public class ScannerTranslator implements SortedKeyValueIterator<Key,Value> {
+  private class ScannerTranslatorImpl implements SortedKeyValueIterator<Key,Value> {
     protected Scanner scanner;
     Iterator<Entry<Key,Value>> iter;
     Entry<Key,Value> top = null;
@@ -75,7 +90,7 @@ public class ClientSideIteratorScanner extends ScannerOptions implements Scanner
      * @param scanner
      *          the scanner to iterate over
      */
-    public ScannerTranslator(final Scanner scanner) {
+    public ScannerTranslatorImpl(final Scanner scanner) {
       this.scanner = scanner;
     }
 
@@ -123,11 +138,11 @@ public class ClientSideIteratorScanner extends ScannerOptions implements Scanner
 
     @Override
     public SortedKeyValueIterator<Key,Value> deepCopy(final IteratorEnvironment env) {
-      return new ScannerTranslator(scanner);
+      return new ScannerTranslatorImpl(scanner);
     }
   }
 
-  private ScannerTranslator smi;
+  private ScannerTranslatorImpl smi;
 
   /**
    * Constructs a scanner that can execute client-side iterators.
@@ -136,7 +151,7 @@ public class ClientSideIteratorScanner extends ScannerOptions implements Scanner
    *          the source scanner
    */
   public ClientSideIteratorScanner(final Scanner scanner) {
-    smi = new ScannerTranslator(scanner);
+    smi = new ScannerTranslatorImpl(scanner);
     this.range = scanner.getRange();
     this.size = scanner.getBatchSize();
     this.timeOut = scanner.getTimeout(TimeUnit.MILLISECONDS);
@@ -147,7 +162,7 @@ public class ClientSideIteratorScanner extends ScannerOptions implements Scanner
    * Sets the source Scanner.
    */
   public void setSource(final Scanner scanner) {
-    smi = new ScannerTranslator(scanner);
+    smi = new ScannerTranslatorImpl(scanner);
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/client/IsolatedScanner.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/IsolatedScanner.java b/core/src/main/java/org/apache/accumulo/core/client/IsolatedScanner.java
index 3546cdf..e530100 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/IsolatedScanner.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/IsolatedScanner.java
@@ -170,11 +170,11 @@ public class IsolatedScanner extends ScannerOptions implements Scanner {
 
   }
 
-  interface RowBufferFactory {
+  public static interface RowBufferFactory {
     RowBuffer newBuffer();
   }
 
-  interface RowBuffer extends Iterable<Entry<Key,Value>> {
+  public static interface RowBuffer extends Iterable<Entry<Key,Value>> {
     void add(Entry<Key,Value> entry);
 
     @Override

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/client/MutationsRejectedException.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/MutationsRejectedException.java b/core/src/main/java/org/apache/accumulo/core/client/MutationsRejectedException.java
index 962ef25..1a7e1ac 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/MutationsRejectedException.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/MutationsRejectedException.java
@@ -28,7 +28,11 @@ import java.util.Set;
 import org.apache.accumulo.core.client.impl.Tables;
 import org.apache.accumulo.core.client.security.SecurityErrorCode;
 import org.apache.accumulo.core.data.ConstraintViolationSummary;
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.TabletID;
+import org.apache.accumulo.core.data.impl.TabletIDImpl;
+
+import com.google.common.base.Function;
+import com.google.common.collect.Collections2;
 
 /**
  * Communicate the failed mutations of a BatchWriter back to the client.
@@ -38,10 +42,19 @@ public class MutationsRejectedException extends AccumuloException {
   private static final long serialVersionUID = 1L;
 
   private List<ConstraintViolationSummary> cvsl;
-  private Map<KeyExtent,Set<SecurityErrorCode>> af;
+  private Map<TabletID,Set<SecurityErrorCode>> af;
   private Collection<String> es;
   private int unknownErrors;
 
+  private static <K, V, L> Map<L, V> transformKeys(Map<K, V> map, Function<K, L> keyFunction) {
+    HashMap<L, V> ret = new HashMap<L,V>();
+    for(Entry<K, V> entry : map.entrySet()){
+      ret.put(keyFunction.apply(entry.getKey()), entry.getValue());
+    }
+
+    return ret;
+  }
+
   /**
    * @param cvsList
    *          list of constraint violations
@@ -55,12 +68,12 @@ public class MutationsRejectedException extends AccumuloException {
    * @deprecated since 1.6.0, see {@link #MutationsRejectedException(Instance, List, HashMap, Collection, int, Throwable)}
    */
   @Deprecated
-  public MutationsRejectedException(List<ConstraintViolationSummary> cvsList, HashMap<KeyExtent,Set<SecurityErrorCode>> hashMap,
+  public MutationsRejectedException(List<ConstraintViolationSummary> cvsList, HashMap<org.apache.accumulo.core.data.KeyExtent,Set<SecurityErrorCode>> hashMap,
       Collection<String> serverSideErrors, int unknownErrors, Throwable cause) {
     super("# constraint violations : " + cvsList.size() + "  security codes: " + hashMap.values() + "  # server errors " + serverSideErrors.size()
         + " # exceptions " + unknownErrors, cause);
     this.cvsl = cvsList;
-    this.af = hashMap;
+    this.af = transformKeys(hashMap, TabletIDImpl.KE_2_TID_OLD);
     this.es = serverSideErrors;
     this.unknownErrors = unknownErrors;
   }
@@ -74,8 +87,34 @@ public class MutationsRejectedException extends AccumuloException {
    *          server side errors
    * @param unknownErrors
    *          number of unknown errors
+   *
+   * @deprecated since 1.7.0 see {@link #MutationsRejectedException(Instance, List, Map, Collection, int, Throwable)}
    */
-  public MutationsRejectedException(Instance instance, List<ConstraintViolationSummary> cvsList, HashMap<KeyExtent,Set<SecurityErrorCode>> hashMap,
+  @Deprecated
+  public MutationsRejectedException(Instance instance, List<ConstraintViolationSummary> cvsList, HashMap<org.apache.accumulo.core.data.KeyExtent,Set<SecurityErrorCode>> hashMap,
+      Collection<String> serverSideErrors, int unknownErrors, Throwable cause) {
+    super("# constraint violations : " + cvsList.size() + "  security codes: " + format(transformKeys(hashMap, TabletIDImpl.KE_2_TID_OLD), instance)
+        + "  # server errors " + serverSideErrors.size() + " # exceptions " + unknownErrors, cause);
+    this.cvsl = cvsList;
+    this.af = transformKeys(hashMap, TabletIDImpl.KE_2_TID_OLD);
+    this.es = serverSideErrors;
+    this.unknownErrors = unknownErrors;
+  }
+
+  /**
+   *
+   * @param cvsList
+   *          list of constraint violations
+   * @param hashMap
+   *          authorization failures
+   * @param serverSideErrors
+   *          server side errors
+   * @param unknownErrors
+   *          number of unknown errors
+   *
+   * @since 1.7.0
+   */
+  public MutationsRejectedException(Instance instance, List<ConstraintViolationSummary> cvsList, Map<TabletID,Set<SecurityErrorCode>> hashMap,
       Collection<String> serverSideErrors, int unknownErrors, Throwable cause) {
     super("# constraint violations : " + cvsList.size() + "  security codes: " + format(hashMap, instance) + "  # server errors " + serverSideErrors.size()
         + " # exceptions " + unknownErrors, cause);
@@ -85,10 +124,10 @@ public class MutationsRejectedException extends AccumuloException {
     this.unknownErrors = unknownErrors;
   }
 
-  private static String format(HashMap<KeyExtent,Set<SecurityErrorCode>> hashMap, Instance instance) {
+  private static String format(Map<TabletID,Set<SecurityErrorCode>> hashMap, Instance instance) {
     Map<String,Set<SecurityErrorCode>> result = new HashMap<String,Set<SecurityErrorCode>>();
 
-    for (Entry<KeyExtent,Set<SecurityErrorCode>> entry : hashMap.entrySet()) {
+    for (Entry<TabletID,Set<SecurityErrorCode>> entry : hashMap.entrySet()) {
       String tableInfo = Tables.getPrintableTableInfoFromId(instance, entry.getKey().getTableId().toString());
 
       if (!result.containsKey(tableInfo)) {
@@ -113,15 +152,24 @@ public class MutationsRejectedException extends AccumuloException {
    * @deprecated since 1.5, see {@link #getAuthorizationFailuresMap()}
    */
   @Deprecated
-  public List<KeyExtent> getAuthorizationFailures() {
-    return new ArrayList<KeyExtent>(af.keySet());
+  public List<org.apache.accumulo.core.data.KeyExtent> getAuthorizationFailures() {
+    return new ArrayList<org.apache.accumulo.core.data.KeyExtent>(Collections2.transform(af.keySet(), TabletIDImpl.TID_2_KE_OLD));
   }
 
   /**
    * @return the internal mapping of keyextent mappings to SecurityErrorCode
    * @since 1.5.0
+   * @deprecated since 1.7.0 see {@link #getSecurityErrorCodes()}
+   */
+  @Deprecated
+  public Map<org.apache.accumulo.core.data.KeyExtent,Set<SecurityErrorCode>> getAuthorizationFailuresMap() {
+    return transformKeys(af, TabletIDImpl.TID_2_KE_OLD);
+  }
+
+  /**
+   * @return the internal mapping of TabletID to SecurityErrorCodes
    */
-  public Map<KeyExtent,Set<SecurityErrorCode>> getAuthorizationFailuresMap() {
+  public Map<TabletID,Set<SecurityErrorCode>> getSecurityErrorCodes(){
     return af;
   }
 

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/client/ZooKeeperInstance.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/ZooKeeperInstance.java b/core/src/main/java/org/apache/accumulo/core/client/ZooKeeperInstance.java
index 38078d2..c5cb482 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/ZooKeeperInstance.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/ZooKeeperInstance.java
@@ -28,12 +28,13 @@ import org.apache.accumulo.core.Constants;
 import org.apache.accumulo.core.client.ClientConfiguration.ClientProperty;
 import org.apache.accumulo.core.client.impl.ClientContext;
 import org.apache.accumulo.core.client.impl.ConnectorImpl;
+import org.apache.accumulo.core.client.impl.Credentials;
+import org.apache.accumulo.core.client.impl.InstanceOperationsImpl;
 import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
 import org.apache.accumulo.core.client.security.tokens.PasswordToken;
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.conf.DefaultConfiguration;
 import org.apache.accumulo.core.metadata.RootTable;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.core.util.ByteBufferUtil;
 import org.apache.accumulo.core.util.OpTimer;
 import org.apache.accumulo.core.util.TextUtil;
@@ -215,7 +216,7 @@ public class ZooKeeperInstance implements Instance {
   @Override
   public String getInstanceName() {
     if (instanceName == null)
-      instanceName = lookupInstanceName(zooCache, UUID.fromString(getInstanceID()));
+      instanceName = InstanceOperationsImpl.lookupInstanceName(zooCache, UUID.fromString(getInstanceID()));
 
     return instanceName;
   }
@@ -267,19 +268,13 @@ public class ZooKeeperInstance implements Instance {
 
   /**
    * Given a zooCache and instanceId, look up the instance name.
+   *
+   * @deprecated since 1.7.0 {@link ZooCache} is not part of the public API, but its a parameter to this method. Therefore code that uses this method is not
+   *             guaranteed to be stable. This method was deprecated to discourage its use.
    */
+  @Deprecated
   public static String lookupInstanceName(ZooCache zooCache, UUID instanceId) {
-    checkArgument(zooCache != null, "zooCache is null");
-    checkArgument(instanceId != null, "instanceId is null");
-    for (String name : zooCache.getChildren(Constants.ZROOT + Constants.ZINSTANCES)) {
-      String instanceNamePath = Constants.ZROOT + Constants.ZINSTANCES + "/" + name;
-      byte[] bytes = zooCache.get(instanceNamePath);
-      UUID iid = UUID.fromString(new String(bytes, UTF_8));
-      if (iid.equals(instanceId)) {
-        return name;
-      }
-    }
-    return null;
+    return InstanceOperationsImpl.lookupInstanceName(zooCache, instanceId);
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/client/admin/ActiveCompaction.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/admin/ActiveCompaction.java b/core/src/main/java/org/apache/accumulo/core/client/admin/ActiveCompaction.java
index b9de4c2..8f3a5aa 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/admin/ActiveCompaction.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/admin/ActiveCompaction.java
@@ -20,7 +20,7 @@ import java.util.List;
 
 import org.apache.accumulo.core.client.IteratorSetting;
 import org.apache.accumulo.core.client.TableNotFoundException;
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.TabletID;
 
 /**
  *
@@ -78,8 +78,16 @@ public abstract class ActiveCompaction {
 
   /**
    * @return tablet thats is compacting
+   * @deprecated since 1.7.0 use {@link #getTablet()}
    */
-  public abstract KeyExtent getExtent();
+  @Deprecated
+  public abstract org.apache.accumulo.core.data.KeyExtent getExtent();
+
+  /**
+   * @return tablet thats is compacting
+   * @since 1.7.0
+   */
+  public abstract TabletID getTablet();
 
   /**
    * @return how long the compaction has been running in milliseconds

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/client/admin/ActiveScan.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/admin/ActiveScan.java b/core/src/main/java/org/apache/accumulo/core/client/admin/ActiveScan.java
index cde5d27..4621399 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/admin/ActiveScan.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/admin/ActiveScan.java
@@ -20,7 +20,7 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.accumulo.core.data.Column;
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.TabletID;
 import org.apache.accumulo.core.security.Authorizations;
 
 /**
@@ -65,8 +65,16 @@ public abstract class ActiveScan {
 
   /**
    * @return tablet the scan is running against, if a batch scan may be one of many or null
+   * @deprecated since 1.7.0 use {@link #getTablet()}
    */
-  public abstract KeyExtent getExtent();
+  @Deprecated
+  public abstract org.apache.accumulo.core.data.KeyExtent getExtent();
+
+  /**
+   * @return tablet the scan is running against, if a batch scan may be one of many or null
+   * @since 1.7.0
+   */
+  public abstract TabletID getTablet();
 
   /**
    * @return columns requested by the scan

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/client/admin/DelegationTokenConfig.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/admin/DelegationTokenConfig.java b/core/src/main/java/org/apache/accumulo/core/client/admin/DelegationTokenConfig.java
index 2e25c3d..dab146c 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/admin/DelegationTokenConfig.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/admin/DelegationTokenConfig.java
@@ -21,10 +21,8 @@ import static com.google.common.base.Preconditions.checkNotNull;
 
 import java.util.concurrent.TimeUnit;
 
-import org.apache.accumulo.core.client.security.tokens.DelegationToken;
-
 /**
- * Configuration options for obtaining a {@link DelegationToken}
+ * Configuration options for obtaining a delegation token created by {@link SecurityOperations#getDelegationToken(DelegationTokenConfig)}
  *
  * @since 1.7.0
  */

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/client/admin/SecurityOperations.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/admin/SecurityOperations.java b/core/src/main/java/org/apache/accumulo/core/client/admin/SecurityOperations.java
index 2682f95..cb916ef 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/admin/SecurityOperations.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/admin/SecurityOperations.java
@@ -352,9 +352,8 @@ public interface SecurityOperations {
   Set<String> listLocalUsers() throws AccumuloException, AccumuloSecurityException;
 
   /**
-   * Obtain a {@link DelegationToken} for use when Kerberos credentials are unavailable (e.g. YARN Jobs)
+   * Obtain a {@link DelegationToken} for use when Kerberos credentials cannot be used (e.g. YARN Jobs)
    *
-   * @return a {@link DelegationToken} for this user
    * @since 1.7.0
    */
   DelegationToken getDelegationToken(DelegationTokenConfig cfg) throws AccumuloException, AccumuloSecurityException;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/client/impl/ActiveCompactionImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/impl/ActiveCompactionImpl.java b/core/src/main/java/org/apache/accumulo/core/client/impl/ActiveCompactionImpl.java
index 46259d1..6dbac73 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/impl/ActiveCompactionImpl.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/impl/ActiveCompactionImpl.java
@@ -24,7 +24,9 @@ import org.apache.accumulo.core.client.Instance;
 import org.apache.accumulo.core.client.IteratorSetting;
 import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.client.admin.ActiveCompaction;
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.TabletID;
+import org.apache.accumulo.core.data.impl.KeyExtent;
+import org.apache.accumulo.core.data.impl.TabletIDImpl;
 import org.apache.accumulo.core.data.thrift.IterInfo;
 
 /**
@@ -43,12 +45,21 @@ public class ActiveCompactionImpl extends ActiveCompaction {
 
   @Override
   public String getTable() throws TableNotFoundException {
-    return Tables.getTableName(instance, getExtent().getTableId().toString());
+    return Tables.getTableName(instance, new KeyExtent(tac.getExtent()).getTableId().toString());
+  }
+
+
+  @Override
+  @Deprecated
+  public org.apache.accumulo.core.data.KeyExtent getExtent() {
+    KeyExtent ke = new KeyExtent(tac.getExtent());
+    org.apache.accumulo.core.data.KeyExtent oke = new org.apache.accumulo.core.data.KeyExtent(ke.getTableId(), ke.getEndRow(), ke.getPrevEndRow());
+    return oke;
   }
 
   @Override
-  public KeyExtent getExtent() {
-    return new KeyExtent(tac.getExtent());
+  public TabletID getTablet() {
+    return new TabletIDImpl(new KeyExtent(tac.getExtent()));
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/client/impl/ActiveScanImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/impl/ActiveScanImpl.java b/core/src/main/java/org/apache/accumulo/core/client/impl/ActiveScanImpl.java
index 5f953e2..602a422 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/impl/ActiveScanImpl.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/impl/ActiveScanImpl.java
@@ -26,7 +26,9 @@ import org.apache.accumulo.core.client.admin.ActiveScan;
 import org.apache.accumulo.core.client.admin.ScanState;
 import org.apache.accumulo.core.client.admin.ScanType;
 import org.apache.accumulo.core.data.Column;
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.TabletID;
+import org.apache.accumulo.core.data.impl.KeyExtent;
+import org.apache.accumulo.core.data.impl.TabletIDImpl;
 import org.apache.accumulo.core.data.thrift.IterInfo;
 import org.apache.accumulo.core.data.thrift.TColumn;
 import org.apache.accumulo.core.security.Authorizations;
@@ -117,8 +119,14 @@ public class ActiveScanImpl extends ActiveScan {
   }
 
   @Override
-  public KeyExtent getExtent() {
-    return extent;
+  @Deprecated
+  public org.apache.accumulo.core.data.KeyExtent getExtent() {
+    return new org.apache.accumulo.core.data.KeyExtent(extent.getTableId(), extent.getEndRow(), extent.getPrevEndRow());
+  }
+
+  @Override
+  public TabletID getTablet() {
+    return new TabletIDImpl(extent);
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/client/impl/AuthenticationTokenIdentifier.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/impl/AuthenticationTokenIdentifier.java b/core/src/main/java/org/apache/accumulo/core/client/impl/AuthenticationTokenIdentifier.java
new file mode 100644
index 0000000..1f548bc
--- /dev/null
+++ b/core/src/main/java/org/apache/accumulo/core/client/impl/AuthenticationTokenIdentifier.java
@@ -0,0 +1,210 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.accumulo.core.client.impl;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+import java.nio.ByteBuffer;
+
+import org.apache.accumulo.core.client.admin.DelegationTokenConfig;
+import org.apache.accumulo.core.security.thrift.TAuthenticationTokenIdentifier;
+import org.apache.accumulo.core.util.ThriftMessageUtil;
+import org.apache.commons.lang.builder.HashCodeBuilder;
+import org.apache.hadoop.io.Text;
+import org.apache.hadoop.security.UserGroupInformation;
+import org.apache.hadoop.security.token.Token;
+import org.apache.hadoop.security.token.TokenIdentifier;
+
+/**
+ * Implementation that identifies the underlying {@link Token} for Accumulo.
+ */
+public class AuthenticationTokenIdentifier extends TokenIdentifier {
+  public static final Text TOKEN_KIND = new Text("ACCUMULO_AUTH_TOKEN");
+
+  private TAuthenticationTokenIdentifier impl = null;
+  private DelegationTokenConfig cfg = null;
+
+  public AuthenticationTokenIdentifier() {
+    // noop for Writable
+  }
+
+  public AuthenticationTokenIdentifier(String principal) {
+    this(principal, null);
+  }
+
+  public AuthenticationTokenIdentifier(String principal, DelegationTokenConfig cfg) {
+    checkNotNull(principal);
+    impl = new TAuthenticationTokenIdentifier(principal);
+    this.cfg = cfg;
+  }
+
+  public AuthenticationTokenIdentifier(String principal, int keyId, long issueDate, long expirationDate, String instanceId) {
+    checkNotNull(principal);
+    impl = new TAuthenticationTokenIdentifier(principal);
+    impl.setKeyId(keyId);
+    impl.setIssueDate(issueDate);
+    impl.setExpirationDate(expirationDate);
+    impl.setInstanceId(instanceId);
+  }
+
+  public AuthenticationTokenIdentifier(AuthenticationTokenIdentifier identifier) {
+    checkNotNull(identifier);
+    impl = new TAuthenticationTokenIdentifier(identifier.getThriftIdentifier());
+  }
+
+  public AuthenticationTokenIdentifier(TAuthenticationTokenIdentifier identifier) {
+    checkNotNull(identifier);
+    impl = new TAuthenticationTokenIdentifier(identifier);
+  }
+
+  public void setKeyId(int keyId) {
+    impl.setKeyId(keyId);
+  }
+
+  public int getKeyId() {
+    checkNotNull(impl, "Identifier not initialized");
+    return impl.getKeyId();
+  }
+
+  public void setIssueDate(long issueDate) {
+    checkNotNull(impl, "Identifier not initialized");
+    impl.setIssueDate(issueDate);
+  }
+
+  public long getIssueDate() {
+    checkNotNull(impl, "Identifier not initialized");
+    return impl.getIssueDate();
+  }
+
+  public void setExpirationDate(long expirationDate) {
+    checkNotNull(impl, "Identifier not initialized");
+    impl.setExpirationDate(expirationDate);
+  }
+
+  public long getExpirationDate() {
+    checkNotNull(impl, "Identifier not initialized");
+    return impl.getExpirationDate();
+  }
+
+  public void setInstanceId(String instanceId) {
+    checkNotNull(impl, "Identifier not initialized");
+    impl.setInstanceId(instanceId);
+  }
+
+  public String getInstanceId() {
+    checkNotNull(impl, "Identifier not initialized");
+    return impl.getInstanceId();
+  }
+
+  public TAuthenticationTokenIdentifier getThriftIdentifier() {
+    checkNotNull(impl);
+    return impl;
+  }
+
+  /**
+   * A configuration from the requesting user, may be null.
+   */
+  public DelegationTokenConfig getConfig() {
+    return cfg;
+  }
+
+  @Override
+  public void write(DataOutput out) throws IOException {
+    if (null != impl) {
+      ThriftMessageUtil msgUtil = new ThriftMessageUtil();
+      ByteBuffer serialized = msgUtil.serialize(impl);
+      out.writeInt(serialized.limit());
+      out.write(serialized.array(), serialized.arrayOffset(), serialized.limit());
+    } else {
+      out.writeInt(0);
+    }
+  }
+
+  @Override
+  public void readFields(DataInput in) throws IOException {
+    int length = in.readInt();
+    if (length > 0) {
+      ThriftMessageUtil msgUtil = new ThriftMessageUtil();
+      byte[] serialized = new byte[length];
+      in.readFully(serialized);
+      impl = new TAuthenticationTokenIdentifier();
+      msgUtil.deserialize(serialized, impl);
+    }
+  }
+
+  @Override
+  public Text getKind() {
+    return TOKEN_KIND;
+  }
+
+  @Override
+  public UserGroupInformation getUser() {
+    if (null != impl && impl.isSetPrincipal()) {
+      return UserGroupInformation.createRemoteUser(impl.getPrincipal());
+    }
+    return null;
+  }
+
+  @Override
+  public int hashCode() {
+    if (null == impl) {
+      return 0;
+    }
+    HashCodeBuilder hcb = new HashCodeBuilder(7, 11);
+    if (impl.isSetPrincipal()) {
+      hcb.append(impl.getPrincipal());
+    }
+    if (impl.isSetKeyId()) {
+      hcb.append(impl.getKeyId());
+    }
+    if (impl.isSetIssueDate()) {
+      hcb.append(impl.getIssueDate());
+    }
+    if (impl.isSetExpirationDate()) {
+      hcb.append(impl.getExpirationDate());
+    }
+    if (impl.isSetInstanceId()) {
+      hcb.append(impl.getInstanceId());
+    }
+    return hcb.toHashCode();
+  }
+
+  @Override
+  public String toString() {
+    StringBuilder sb = new StringBuilder(128);
+    sb.append("AuthenticationTokenIdentifier(").append(impl).append(")");
+    return sb.toString();
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (null == o) {
+      return false;
+    }
+    if (o instanceof AuthenticationTokenIdentifier) {
+      AuthenticationTokenIdentifier other = (AuthenticationTokenIdentifier) o;
+      if (null == impl) {
+        return null == other.impl;
+      }
+      return impl.equals(other.impl);
+    }
+    return false;
+  }
+}

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/client/impl/ClientContext.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/impl/ClientContext.java b/core/src/main/java/org/apache/accumulo/core/client/impl/ClientContext.java
index 9def3ab..cba7e8d 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/impl/ClientContext.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/impl/ClientContext.java
@@ -36,7 +36,6 @@ import org.apache.accumulo.core.conf.DefaultConfiguration;
 import org.apache.accumulo.core.conf.Property;
 import org.apache.accumulo.core.rpc.SaslConnectionParams;
 import org.apache.accumulo.core.rpc.SslConnectionParams;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.core.security.thrift.TCredentials;
 import org.apache.commons.configuration.Configuration;
 import org.slf4j.Logger;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/client/impl/ConditionalWriterImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/impl/ConditionalWriterImpl.java b/core/src/main/java/org/apache/accumulo/core/client/impl/ConditionalWriterImpl.java
index 0aef3b8..a2430d4 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/impl/ConditionalWriterImpl.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/impl/ConditionalWriterImpl.java
@@ -53,7 +53,7 @@ import org.apache.accumulo.core.client.impl.thrift.ThriftSecurityException;
 import org.apache.accumulo.core.data.ByteSequence;
 import org.apache.accumulo.core.data.Condition;
 import org.apache.accumulo.core.data.ConditionalMutation;
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.data.thrift.TCMResult;
 import org.apache.accumulo.core.data.thrift.TCMStatus;
 import org.apache.accumulo.core.data.thrift.TCondition;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/client/impl/Credentials.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/impl/Credentials.java b/core/src/main/java/org/apache/accumulo/core/client/impl/Credentials.java
new file mode 100644
index 0000000..28a704a
--- /dev/null
+++ b/core/src/main/java/org/apache/accumulo/core/client/impl/Credentials.java
@@ -0,0 +1,157 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.accumulo.core.client.impl;
+
+import static java.nio.charset.StandardCharsets.UTF_8;
+
+import java.nio.ByteBuffer;
+
+import org.apache.accumulo.core.client.AccumuloSecurityException;
+import org.apache.accumulo.core.client.Connector;
+import org.apache.accumulo.core.client.Instance;
+import org.apache.accumulo.core.client.impl.thrift.SecurityErrorCode;
+import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
+import org.apache.accumulo.core.client.security.tokens.AuthenticationToken.AuthenticationTokenSerializer;
+import org.apache.accumulo.core.security.thrift.TCredentials;
+import org.apache.accumulo.core.util.Base64;
+
+/**
+ * A wrapper for internal use. This class carries the instance, principal, and authentication token for use in the public API, in a non-serialized form. This is
+ * important, so that the authentication token carried in a {@link Connector} can be destroyed, invalidating future RPC operations from that {@link Connector}.
+ * <p>
+ * See ACCUMULO-1312
+ *
+ * @since 1.6.0
+ */
+public class Credentials {
+
+  private String principal;
+  private AuthenticationToken token;
+
+  /**
+   * Creates a new credentials object.
+   *
+   * @param principal
+   *          unique identifier for the entity (e.g. a user or service) authorized for these credentials
+   * @param token
+   *          authentication token used to prove that the principal for these credentials has been properly verified
+   */
+  public Credentials(String principal, AuthenticationToken token) {
+    this.principal = principal;
+    this.token = token;
+  }
+
+  /**
+   * Gets the principal.
+   *
+   * @return unique identifier for the entity (e.g. a user or service) authorized for these credentials
+   */
+  public String getPrincipal() {
+    return principal;
+  }
+
+  /**
+   * Gets the authentication token.
+   *
+   * @return authentication token used to prove that the principal for these credentials has been properly verified
+   */
+  public AuthenticationToken getToken() {
+    return token;
+  }
+
+  /**
+   * Converts the current object to the relevant thrift type. The object returned from this contains a non-destroyable version of the
+   * {@link AuthenticationToken}, so this should be used just before placing on the wire, and references to it should be tightly controlled.
+   *
+   * @param instance
+   *          client instance
+   * @return Thrift credentials
+   * @throws RuntimeException
+   *           if the authentication token has been destroyed (expired)
+   */
+  public TCredentials toThrift(Instance instance) {
+    TCredentials tCreds = new TCredentials(getPrincipal(), getToken().getClass().getName(),
+        ByteBuffer.wrap(AuthenticationTokenSerializer.serialize(getToken())), instance.getInstanceID());
+    if (getToken().isDestroyed())
+      throw new RuntimeException("Token has been destroyed", new AccumuloSecurityException(getPrincipal(), SecurityErrorCode.TOKEN_EXPIRED));
+    return tCreds;
+  }
+
+  /**
+   * Converts a given thrift object to our internal Credentials representation.
+   *
+   * @param serialized
+   *          a Thrift encoded set of credentials
+   * @return a new Credentials instance; destroy the token when you're done.
+   */
+  public static Credentials fromThrift(TCredentials serialized) {
+    return new Credentials(serialized.getPrincipal(), AuthenticationTokenSerializer.deserialize(serialized.getTokenClassName(), serialized.getToken()));
+  }
+
+  /**
+   * Converts the current object to a serialized form. The object returned from this contains a non-destroyable version of the {@link AuthenticationToken}, so
+   * references to it should be tightly controlled.
+   *
+   * @return serialized form of these credentials
+   */
+  public final String serialize() {
+    return (getPrincipal() == null ? "-" : Base64.encodeBase64String(getPrincipal().getBytes(UTF_8))) + ":"
+        + (getToken() == null ? "-" : Base64.encodeBase64String(getToken().getClass().getName().getBytes(UTF_8))) + ":"
+        + (getToken() == null ? "-" : Base64.encodeBase64String(AuthenticationTokenSerializer.serialize(getToken())));
+  }
+
+  /**
+   * Converts the serialized form to an instance of {@link Credentials}. The original serialized form will not be affected.
+   *
+   * @param serializedForm
+   *          serialized form of credentials
+   * @return deserialized credentials
+   */
+  public static final Credentials deserialize(String serializedForm) {
+    String[] split = serializedForm.split(":", 3);
+    String principal = split[0].equals("-") ? null : new String(Base64.decodeBase64(split[0]), UTF_8);
+    String tokenType = split[1].equals("-") ? null : new String(Base64.decodeBase64(split[1]), UTF_8);
+    AuthenticationToken token = null;
+    if (!split[2].equals("-")) {
+      byte[] tokenBytes = Base64.decodeBase64(split[2]);
+      token = AuthenticationTokenSerializer.deserialize(tokenType, tokenBytes);
+    }
+    return new Credentials(principal, token);
+  }
+
+  @Override
+  public int hashCode() {
+    return getPrincipal() == null ? 0 : getPrincipal().hashCode();
+  }
+
+  @Override
+  public boolean equals(Object obj) {
+    if (obj == null || !(obj instanceof Credentials))
+      return false;
+    Credentials other = Credentials.class.cast(obj);
+    boolean pEq = getPrincipal() == null ? (other.getPrincipal() == null) : (getPrincipal().equals(other.getPrincipal()));
+    if (!pEq)
+      return false;
+    boolean tEq = getToken() == null ? (other.getToken() == null) : (getToken().equals(other.getToken()));
+    return tEq;
+  }
+
+  @Override
+  public String toString() {
+    return getClass().getName() + ":" + getPrincipal() + ":" + (getToken() == null ? null : getToken().getClass().getName()) + ":<hidden>";
+  }
+}

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/client/impl/DelegationTokenImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/impl/DelegationTokenImpl.java b/core/src/main/java/org/apache/accumulo/core/client/impl/DelegationTokenImpl.java
new file mode 100644
index 0000000..119f157
--- /dev/null
+++ b/core/src/main/java/org/apache/accumulo/core/client/impl/DelegationTokenImpl.java
@@ -0,0 +1,144 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.accumulo.core.client.impl;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+import java.util.Collections;
+import java.util.Set;
+
+import org.apache.accumulo.core.client.Instance;
+import org.apache.accumulo.core.client.security.tokens.DelegationToken;
+import org.apache.accumulo.core.client.security.tokens.PasswordToken;
+import org.apache.hadoop.io.Text;
+import org.apache.hadoop.security.Credentials;
+import org.apache.hadoop.security.UserGroupInformation;
+import org.apache.hadoop.security.token.Token;
+import org.apache.hadoop.security.token.TokenIdentifier;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class DelegationTokenImpl extends PasswordToken implements DelegationToken {
+  private static final Logger log = LoggerFactory.getLogger(DelegationTokenImpl.class);
+
+  public static final String SERVICE_NAME = "AccumuloDelegationToken";
+
+  private AuthenticationTokenIdentifier identifier;
+
+  public DelegationTokenImpl() {
+    super();
+  }
+
+  public DelegationTokenImpl(byte[] delegationTokenPassword, AuthenticationTokenIdentifier identifier) {
+    checkNotNull(delegationTokenPassword);
+    checkNotNull(identifier);
+    setPassword(delegationTokenPassword);
+    this.identifier = identifier;
+  }
+
+  public DelegationTokenImpl(Instance instance, UserGroupInformation user, AuthenticationTokenIdentifier identifier) {
+    checkNotNull(instance);
+    checkNotNull(user);
+    checkNotNull(identifier);
+
+    Credentials creds = user.getCredentials();
+    Token<? extends TokenIdentifier> token = creds.getToken(new Text(SERVICE_NAME + "-" + instance.getInstanceID()));
+    if (null == token) {
+      throw new IllegalArgumentException("Did not find Accumulo delegation token in provided UserGroupInformation");
+    }
+    setPasswordFromToken(token, identifier);
+  }
+
+  public DelegationTokenImpl(Token<? extends TokenIdentifier> token, AuthenticationTokenIdentifier identifier) {
+    checkNotNull(token);
+    checkNotNull(identifier);
+    setPasswordFromToken(token, identifier);
+  }
+
+  private void setPasswordFromToken(Token<? extends TokenIdentifier> token, AuthenticationTokenIdentifier identifier) {
+    if (!AuthenticationTokenIdentifier.TOKEN_KIND.equals(token.getKind())) {
+      String msg = "Expected an AuthenticationTokenIdentifier but got a " + token.getKind();
+      log.error(msg);
+      throw new IllegalArgumentException(msg);
+    }
+
+    setPassword(token.getPassword());
+    this.identifier = identifier;
+  }
+
+  /**
+   * The identifier for this token, may be null.
+   */
+  public AuthenticationTokenIdentifier getIdentifier() {
+    return identifier;
+  }
+
+  /**
+   * The service name used to identify the {@link Token}
+   */
+  public Text getServiceName() {
+    checkNotNull(identifier);
+    return new Text(SERVICE_NAME + "-" + identifier.getInstanceId());
+  }
+
+  @Override
+  public void init(Properties properties) {
+    // Encourage use of UserGroupInformation as entry point
+  }
+
+  @Override
+  public Set<TokenProperty> getProperties() {
+    // Encourage use of UserGroupInformation as entry point
+    return Collections.emptySet();
+  }
+
+  @Override
+  public void write(DataOutput out) throws IOException {
+    super.write(out);
+    identifier.write(out);
+  }
+
+  @Override
+  public void readFields(DataInput in) throws IOException {
+    super.readFields(in);
+    identifier = new AuthenticationTokenIdentifier();
+    identifier.readFields(in);
+  }
+
+  @Override
+  public DelegationTokenImpl clone() {
+    DelegationTokenImpl copy = (DelegationTokenImpl) super.clone();
+    copy.setPassword(getPassword());
+    copy.identifier = new AuthenticationTokenIdentifier(identifier);
+    return copy;
+  }
+
+  @Override
+  public int hashCode() {
+    return super.hashCode() ^ identifier.hashCode();
+  }
+
+  @Override
+  public boolean equals(Object obj) {
+    // We assume we can cast obj to DelegationToken because the super.equals(obj) check ensures obj is of the same type as this
+    return super.equals(obj) && identifier.equals(((DelegationTokenImpl) obj).identifier);
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/client/impl/InstanceOperationsImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/impl/InstanceOperationsImpl.java b/core/src/main/java/org/apache/accumulo/core/client/impl/InstanceOperationsImpl.java
index 7b3ee12..6383967 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/impl/InstanceOperationsImpl.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/impl/InstanceOperationsImpl.java
@@ -23,6 +23,7 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
+import java.util.UUID;
 
 import org.apache.accumulo.core.Constants;
 import org.apache.accumulo.core.client.AccumuloException;
@@ -221,4 +222,21 @@ public class InstanceOperationsImpl implements InstanceOperations {
     }
 
   }
+
+  /**
+   * Given a zooCache and instanceId, look up the instance name.
+   */
+  public static String lookupInstanceName(ZooCache zooCache, UUID instanceId) {
+    checkArgument(zooCache != null, "zooCache is null");
+    checkArgument(instanceId != null, "instanceId is null");
+    for (String name : zooCache.getChildren(Constants.ZROOT + Constants.ZINSTANCES)) {
+      String instanceNamePath = Constants.ZROOT + Constants.ZINSTANCES + "/" + name;
+      byte[] bytes = zooCache.get(instanceNamePath);
+      UUID iid = UUID.fromString(new String(bytes, UTF_8));
+      if (iid.equals(instanceId)) {
+        return name;
+      }
+    }
+    return null;
+  }
 }

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/client/impl/NamespaceOperationsImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/impl/NamespaceOperationsImpl.java b/core/src/main/java/org/apache/accumulo/core/client/impl/NamespaceOperationsImpl.java
index 264e05a..ce6bc09 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/impl/NamespaceOperationsImpl.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/impl/NamespaceOperationsImpl.java
@@ -48,7 +48,6 @@ import org.apache.accumulo.core.iterators.IteratorUtil.IteratorScope;
 import org.apache.accumulo.core.iterators.SortedKeyValueIterator;
 import org.apache.accumulo.core.master.thrift.FateOperation;
 import org.apache.accumulo.core.master.thrift.MasterClientService;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.core.trace.Tracer;
 import org.apache.accumulo.core.util.OpTimer;
 import org.apache.log4j.Level;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/client/impl/OfflineScanner.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/impl/OfflineScanner.java b/core/src/main/java/org/apache/accumulo/core/client/impl/OfflineScanner.java
index 0263bfa..2f31319 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/impl/OfflineScanner.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/impl/OfflineScanner.java
@@ -38,11 +38,11 @@ import org.apache.accumulo.core.conf.ConfigurationCopy;
 import org.apache.accumulo.core.conf.Property;
 import org.apache.accumulo.core.data.Column;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.KeyValue;
 import org.apache.accumulo.core.data.PartialKey;
 import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.file.FileOperations;
 import org.apache.accumulo.core.file.FileSKVIterator;
 import org.apache.accumulo.core.iterators.IteratorEnvironment;
@@ -60,7 +60,6 @@ import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.DataFileColumnFamily;
 import org.apache.accumulo.core.security.Authorizations;
 import org.apache.accumulo.core.security.ColumnVisibility;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.core.util.CachedConfiguration;
 import org.apache.accumulo.core.util.LocalityGroupUtil;
 import org.apache.accumulo.core.util.Pair;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/client/impl/RootTabletLocator.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/impl/RootTabletLocator.java b/core/src/main/java/org/apache/accumulo/core/client/impl/RootTabletLocator.java
index 49d5c9e..3a0c0d7 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/impl/RootTabletLocator.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/impl/RootTabletLocator.java
@@ -27,9 +27,9 @@ import org.apache.accumulo.core.client.AccumuloSecurityException;
 import org.apache.accumulo.core.client.Instance;
 import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.client.impl.TabletLocatorImpl.TabletServerLockChecker;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
 import org.apache.accumulo.core.data.Range;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.metadata.RootTable;
 import org.apache.accumulo.core.util.OpTimer;
 import org.apache.accumulo.core.util.UtilWaitThread;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/client/impl/SecurityOperationsImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/impl/SecurityOperationsImpl.java b/core/src/main/java/org/apache/accumulo/core/client/impl/SecurityOperationsImpl.java
index bfba270..73f17a7 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/impl/SecurityOperationsImpl.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/impl/SecurityOperationsImpl.java
@@ -35,9 +35,7 @@ import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
 import org.apache.accumulo.core.client.security.tokens.DelegationToken;
 import org.apache.accumulo.core.client.security.tokens.PasswordToken;
 import org.apache.accumulo.core.master.thrift.MasterClientService.Client;
-import org.apache.accumulo.core.security.AuthenticationTokenIdentifier;
 import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.core.security.NamespacePermission;
 import org.apache.accumulo.core.security.SystemPermission;
 import org.apache.accumulo.core.security.TablePermission;
@@ -382,7 +380,7 @@ public class SecurityOperationsImpl implements SecurityOperations {
     AuthenticationTokenIdentifier identifier = new AuthenticationTokenIdentifier(thriftToken.getIdentifier());
 
     // Get the password out of the thrift delegation token
-    return new DelegationToken(thriftToken.getPassword(), identifier);
+    return new DelegationTokenImpl(thriftToken.getPassword(), identifier);
   }
 
 }

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/client/impl/TableOperationsImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/impl/TableOperationsImpl.java b/core/src/main/java/org/apache/accumulo/core/client/impl/TableOperationsImpl.java
index d4bcac4..0e30d52 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/impl/TableOperationsImpl.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/impl/TableOperationsImpl.java
@@ -79,9 +79,9 @@ import org.apache.accumulo.core.conf.Property;
 import org.apache.accumulo.core.constraints.Constraint;
 import org.apache.accumulo.core.data.ByteSequence;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.iterators.IteratorUtil;
 import org.apache.accumulo.core.iterators.IteratorUtil.IteratorScope;
 import org.apache.accumulo.core.iterators.SortedKeyValueIterator;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/client/impl/TabletLocator.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/impl/TabletLocator.java b/core/src/main/java/org/apache/accumulo/core/client/impl/TabletLocator.java
index 2af45d3..1fbaee8 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/impl/TabletLocator.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/impl/TabletLocator.java
@@ -30,9 +30,9 @@ import org.apache.accumulo.core.client.AccumuloException;
 import org.apache.accumulo.core.client.AccumuloSecurityException;
 import org.apache.accumulo.core.client.Instance;
 import org.apache.accumulo.core.client.TableNotFoundException;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
 import org.apache.accumulo.core.data.Range;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.metadata.MetadataLocationObtainer;
 import org.apache.accumulo.core.metadata.MetadataTable;
 import org.apache.accumulo.core.metadata.RootTable;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/client/impl/TabletLocatorImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/impl/TabletLocatorImpl.java b/core/src/main/java/org/apache/accumulo/core/client/impl/TabletLocatorImpl.java
index 99cd8aa..c28320d 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/impl/TabletLocatorImpl.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/impl/TabletLocatorImpl.java
@@ -38,10 +38,10 @@ import org.apache.accumulo.core.client.AccumuloSecurityException;
 import org.apache.accumulo.core.client.Instance;
 import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
 import org.apache.accumulo.core.data.PartialKey;
 import org.apache.accumulo.core.data.Range;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.util.OpTimer;
 import org.apache.accumulo.core.util.Pair;
 import org.apache.accumulo.core.util.TextUtil;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/client/impl/TabletServerBatchReaderIterator.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/impl/TabletServerBatchReaderIterator.java b/core/src/main/java/org/apache/accumulo/core/client/impl/TabletServerBatchReaderIterator.java
index 61f6d15..2a0e1d8 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/impl/TabletServerBatchReaderIterator.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/impl/TabletServerBatchReaderIterator.java
@@ -45,9 +45,9 @@ import org.apache.accumulo.core.client.TimedOutException;
 import org.apache.accumulo.core.client.impl.thrift.ThriftSecurityException;
 import org.apache.accumulo.core.data.Column;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.data.thrift.InitialMultiScan;
 import org.apache.accumulo.core.data.thrift.MultiScanResult;
 import org.apache.accumulo.core.data.thrift.TKeyExtent;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/client/impl/TabletServerBatchWriter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/impl/TabletServerBatchWriter.java b/core/src/main/java/org/apache/accumulo/core/client/impl/TabletServerBatchWriter.java
index 469495a..6a4d348 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/impl/TabletServerBatchWriter.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/impl/TabletServerBatchWriter.java
@@ -49,8 +49,10 @@ import org.apache.accumulo.core.client.impl.thrift.SecurityErrorCode;
 import org.apache.accumulo.core.client.impl.thrift.ThriftSecurityException;
 import org.apache.accumulo.core.constraints.Violations;
 import org.apache.accumulo.core.data.ConstraintViolationSummary;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
+import org.apache.accumulo.core.data.TabletID;
+import org.apache.accumulo.core.data.impl.KeyExtent;
+import org.apache.accumulo.core.data.impl.TabletIDImpl;
 import org.apache.accumulo.core.data.thrift.TMutation;
 import org.apache.accumulo.core.data.thrift.UpdateErrors;
 import org.apache.accumulo.core.master.state.tables.TableState;
@@ -534,7 +536,7 @@ public class TabletServerBatchWriter {
   private void checkForFailures() throws MutationsRejectedException {
     if (somethingFailed) {
       List<ConstraintViolationSummary> cvsList = violations.asList();
-      HashMap<KeyExtent,Set<org.apache.accumulo.core.client.security.SecurityErrorCode>> af = new HashMap<KeyExtent,Set<org.apache.accumulo.core.client.security.SecurityErrorCode>>();
+      HashMap<TabletID,Set<org.apache.accumulo.core.client.security.SecurityErrorCode>> af = new HashMap<TabletID,Set<org.apache.accumulo.core.client.security.SecurityErrorCode>>();
       for (Entry<KeyExtent,Set<SecurityErrorCode>> entry : authorizationFailures.entrySet()) {
         HashSet<org.apache.accumulo.core.client.security.SecurityErrorCode> codes = new HashSet<org.apache.accumulo.core.client.security.SecurityErrorCode>();
 
@@ -542,7 +544,7 @@ public class TabletServerBatchWriter {
           codes.add(org.apache.accumulo.core.client.security.SecurityErrorCode.valueOf(sce.name()));
         }
 
-        af.put(entry.getKey(), codes);
+        af.put(new TabletIDImpl(entry.getKey()), codes);
       }
 
       throw new MutationsRejectedException(context.getInstance(), cvsList, af, serverSideErrors, unknownErrors, lastUnknownError);

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/client/impl/TabletType.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/impl/TabletType.java b/core/src/main/java/org/apache/accumulo/core/client/impl/TabletType.java
index d57bf94..ad7d43e 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/impl/TabletType.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/impl/TabletType.java
@@ -18,7 +18,7 @@ package org.apache.accumulo.core.client.impl;
 
 import java.util.Collection;
 
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 
 public enum TabletType {
   ROOT, METADATA, USER;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/client/impl/ThriftScanner.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/impl/ThriftScanner.java b/core/src/main/java/org/apache/accumulo/core/client/impl/ThriftScanner.java
index abe91d9..4bfbfa0 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/impl/ThriftScanner.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/impl/ThriftScanner.java
@@ -38,11 +38,11 @@ import org.apache.accumulo.core.client.impl.TabletLocator.TabletLocation;
 import org.apache.accumulo.core.client.impl.thrift.ThriftSecurityException;
 import org.apache.accumulo.core.data.Column;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.KeyValue;
 import org.apache.accumulo.core.data.PartialKey;
 import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.data.thrift.InitialScan;
 import org.apache.accumulo.core.data.thrift.IterInfo;
 import org.apache.accumulo.core.data.thrift.ScanResult;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/client/impl/TimeoutTabletLocator.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/impl/TimeoutTabletLocator.java b/core/src/main/java/org/apache/accumulo/core/client/impl/TimeoutTabletLocator.java
index 81c1ccc..c0cb219 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/impl/TimeoutTabletLocator.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/impl/TimeoutTabletLocator.java
@@ -25,9 +25,9 @@ import org.apache.accumulo.core.client.AccumuloSecurityException;
 import org.apache.accumulo.core.client.Instance;
 import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.client.TimedOutException;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
 import org.apache.accumulo.core.data.Range;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.hadoop.io.Text;
 
 /**

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/client/impl/Translator.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/impl/Translator.java b/core/src/main/java/org/apache/accumulo/core/client/impl/Translator.java
index 2503d95..e5141cf 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/impl/Translator.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/impl/Translator.java
@@ -25,8 +25,8 @@ import java.util.Map.Entry;
 
 import org.apache.accumulo.core.data.Column;
 import org.apache.accumulo.core.data.ConstraintViolationSummary;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Range;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.data.thrift.TColumn;
 import org.apache.accumulo.core.data.thrift.TConstraintViolationSummary;
 import org.apache.accumulo.core.data.thrift.TKeyExtent;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/client/impl/Writer.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/impl/Writer.java b/core/src/main/java/org/apache/accumulo/core/client/impl/Writer.java
index 74b3811..cf2d642 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/impl/Writer.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/impl/Writer.java
@@ -24,8 +24,8 @@ import org.apache.accumulo.core.client.AccumuloSecurityException;
 import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.client.impl.TabletLocator.TabletLocation;
 import org.apache.accumulo.core.client.impl.thrift.ThriftSecurityException;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.rpc.ThriftUtil;
 import org.apache.accumulo.core.tabletserver.thrift.ConstraintViolationException;
 import org.apache.accumulo.core.tabletserver.thrift.NotServingTabletException;


[4/9] accumulo git commit: ACCUMULO-3657 ACCUMULO-3548 Clarify Accumulo API

Posted by kt...@apache.org.
http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/data/impl/KeyExtent.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/data/impl/KeyExtent.java b/core/src/main/java/org/apache/accumulo/core/data/impl/KeyExtent.java
new file mode 100644
index 0000000..d2ae00b
--- /dev/null
+++ b/core/src/main/java/org/apache/accumulo/core/data/impl/KeyExtent.java
@@ -0,0 +1,768 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.accumulo.core.data.impl;
+
+import java.io.ByteArrayOutputStream;
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.lang.ref.WeakReference;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Map.Entry;
+import java.util.Set;
+import java.util.SortedMap;
+import java.util.SortedSet;
+import java.util.TreeSet;
+import java.util.UUID;
+import java.util.WeakHashMap;
+
+import org.apache.accumulo.core.data.ByteSequence;
+import org.apache.accumulo.core.data.Mutation;
+import org.apache.accumulo.core.data.Range;
+import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.thrift.TKeyExtent;
+import org.apache.accumulo.core.metadata.MetadataTable;
+import org.apache.accumulo.core.metadata.RootTable;
+import org.apache.accumulo.core.metadata.schema.MetadataSchema;
+import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection;
+import org.apache.accumulo.core.util.ByteBufferUtil;
+import org.apache.accumulo.core.util.TextUtil;
+import org.apache.hadoop.io.BinaryComparable;
+import org.apache.hadoop.io.Text;
+import org.apache.hadoop.io.WritableComparable;
+
+/**
+ * keeps track of information needed to identify a tablet
+ *
+ */
+
+public class KeyExtent implements WritableComparable<KeyExtent> {
+
+  private static final WeakHashMap<Text,WeakReference<Text>> tableIds = new WeakHashMap<Text,WeakReference<Text>>();
+
+  private static Text dedupeTableId(Text tableId) {
+    synchronized (tableIds) {
+      WeakReference<Text> etir = tableIds.get(tableId);
+      if (etir != null) {
+        Text eti = etir.get();
+        if (eti != null) {
+          return eti;
+        }
+      }
+
+      tableId = new Text(tableId);
+      tableIds.put(tableId, new WeakReference<Text>(tableId));
+      return tableId;
+    }
+  }
+
+  private Text textTableId;
+  private Text textEndRow;
+  private Text textPrevEndRow;
+
+  private void check() {
+
+    if (getTableId() == null)
+      throw new IllegalArgumentException("null table id not allowed");
+
+    if (getEndRow() == null || getPrevEndRow() == null)
+      return;
+
+    if (getPrevEndRow().compareTo(getEndRow()) >= 0) {
+      throw new IllegalArgumentException("prevEndRow (" + getPrevEndRow() + ") >= endRow (" + getEndRow() + ")");
+    }
+  }
+
+  /**
+   * Default constructor
+   *
+   */
+  public KeyExtent() {
+    this.setTableId(new Text());
+    this.setEndRow(new Text(), false, false);
+    this.setPrevEndRow(new Text(), false, false);
+  }
+
+  public KeyExtent(Text table, Text endRow, Text prevEndRow) {
+    this.setTableId(table);
+    this.setEndRow(endRow, false, true);
+    this.setPrevEndRow(prevEndRow, false, true);
+
+    check();
+  }
+
+  public KeyExtent(KeyExtent extent) {
+    // extent has already deduped table id, so there is no need to do it again
+    this.textTableId = extent.textTableId;
+    this.setEndRow(extent.getEndRow(), false, true);
+    this.setPrevEndRow(extent.getPrevEndRow(), false, true);
+
+    check();
+  }
+
+  public KeyExtent(TKeyExtent tke) {
+    this.setTableId(new Text(ByteBufferUtil.toBytes(tke.table)));
+    this.setEndRow(tke.endRow == null ? null : new Text(ByteBufferUtil.toBytes(tke.endRow)), false, false);
+    this.setPrevEndRow(tke.prevEndRow == null ? null : new Text(ByteBufferUtil.toBytes(tke.prevEndRow)), false, false);
+
+    check();
+  }
+
+  /**
+   * Returns a String representing this extent's entry in the Metadata table
+   *
+   */
+  public Text getMetadataEntry() {
+    return getMetadataEntry(getTableId(), getEndRow());
+  }
+
+  public static Text getMetadataEntry(Text tableId, Text endRow) {
+    return MetadataSchema.TabletsSection.getRow(tableId, endRow);
+  }
+
+  // constructor for loading extents from metadata rows
+  public KeyExtent(Text flattenedExtent, Value prevEndRow) {
+    decodeMetadataRow(flattenedExtent);
+
+    // decode the prev row
+    this.setPrevEndRow(decodePrevEndRow(prevEndRow), false, true);
+
+    check();
+  }
+
+  // recreates an encoded extent from a string representation
+  // this encoding is what is stored as the row id of the metadata table
+  public KeyExtent(Text flattenedExtent, Text prevEndRow) {
+
+    decodeMetadataRow(flattenedExtent);
+
+    this.setPrevEndRow(null, false, false);
+    if (prevEndRow != null)
+      this.setPrevEndRow(prevEndRow, false, true);
+
+    check();
+  }
+
+  /**
+   * Sets the extents table id
+   *
+   */
+  public void setTableId(Text tId) {
+
+    if (tId == null)
+      throw new IllegalArgumentException("null table name not allowed");
+
+    this.textTableId = dedupeTableId(tId);
+
+    hashCode = 0;
+  }
+
+  /**
+   * Returns the extent's table id
+   *
+   */
+  public Text getTableId() {
+    return textTableId;
+  }
+
+  private void setEndRow(Text endRow, boolean check, boolean copy) {
+    if (endRow != null)
+      if (copy)
+        this.textEndRow = new Text(endRow);
+      else
+        this.textEndRow = endRow;
+    else
+      this.textEndRow = null;
+
+    hashCode = 0;
+    if (check)
+      check();
+  }
+
+  /**
+   * Sets this extent's end row
+   *
+   */
+  public void setEndRow(Text endRow) {
+    setEndRow(endRow, true, true);
+  }
+
+  /**
+   * Returns this extent's end row
+   *
+   */
+  public Text getEndRow() {
+    return textEndRow;
+  }
+
+  /**
+   * Return the previous extent's end row
+   *
+   */
+  public Text getPrevEndRow() {
+    return textPrevEndRow;
+  }
+
+  private void setPrevEndRow(Text prevEndRow, boolean check, boolean copy) {
+    if (prevEndRow != null)
+      if (copy)
+        this.textPrevEndRow = new Text(prevEndRow);
+      else
+        this.textPrevEndRow = prevEndRow;
+    else
+      this.textPrevEndRow = null;
+
+    hashCode = 0;
+    if (check)
+      check();
+  }
+
+  /**
+   * Sets the previous extent's end row
+   *
+   */
+  public void setPrevEndRow(Text prevEndRow) {
+    setPrevEndRow(prevEndRow, true, true);
+  }
+
+  @Override
+  public void readFields(DataInput in) throws IOException {
+    Text tid = new Text();
+    tid.readFields(in);
+    setTableId(tid);
+    boolean hasRow = in.readBoolean();
+    if (hasRow) {
+      Text er = new Text();
+      er.readFields(in);
+      setEndRow(er, false, false);
+    } else {
+      setEndRow(null, false, false);
+    }
+    boolean hasPrevRow = in.readBoolean();
+    if (hasPrevRow) {
+      Text per = new Text();
+      per.readFields(in);
+      setPrevEndRow(per, false, true);
+    } else {
+      setPrevEndRow((Text) null);
+    }
+
+    hashCode = 0;
+    check();
+  }
+
+  @Override
+  public void write(DataOutput out) throws IOException {
+    getTableId().write(out);
+    if (getEndRow() != null) {
+      out.writeBoolean(true);
+      getEndRow().write(out);
+    } else {
+      out.writeBoolean(false);
+    }
+    if (getPrevEndRow() != null) {
+      out.writeBoolean(true);
+      getPrevEndRow().write(out);
+    } else {
+      out.writeBoolean(false);
+    }
+  }
+
+  /**
+   * Returns a String representing the previous extent's entry in the Metadata table
+   *
+   */
+  public Mutation getPrevRowUpdateMutation() {
+    return getPrevRowUpdateMutation(this);
+  }
+
+  /**
+   * Empty start or end rows tell the method there are no start or end rows, and to use all the keyextents that are before the end row if no start row etc.
+   *
+   * @deprecated this method not intended for public use and is likely to be removed in a future version.
+   * @return all the key extents that the rows cover
+   */
+  @Deprecated
+  public static Collection<KeyExtent> getKeyExtentsForRange(Text startRow, Text endRow, Set<KeyExtent> kes) {
+    if (kes == null)
+      return Collections.emptyList();
+    if (startRow == null)
+      startRow = new Text();
+    if (endRow == null)
+      endRow = new Text();
+    Collection<KeyExtent> keys = new ArrayList<KeyExtent>();
+    for (KeyExtent ckes : kes) {
+      if (ckes.getPrevEndRow() == null) {
+        if (ckes.getEndRow() == null) {
+          // only tablet
+          keys.add(ckes);
+        } else {
+          // first tablet
+          // if start row = '' then we want everything up to the endRow which will always include the first tablet
+          if (startRow.getLength() == 0) {
+            keys.add(ckes);
+          } else if (ckes.getEndRow().compareTo(startRow) >= 0) {
+            keys.add(ckes);
+          }
+        }
+      } else {
+        if (ckes.getEndRow() == null) {
+          // last tablet
+          // if endRow = '' and we're at the last tablet, add it
+          if (endRow.getLength() == 0) {
+            keys.add(ckes);
+          }
+          if (ckes.getPrevEndRow().compareTo(endRow) < 0) {
+            keys.add(ckes);
+          }
+        } else {
+          // tablet in the middle
+          if (startRow.getLength() == 0) {
+            // no start row
+
+            if (endRow.getLength() == 0) {
+              // no start & end row
+              keys.add(ckes);
+            } else {
+              // just no start row
+              if (ckes.getPrevEndRow().compareTo(endRow) < 0) {
+                keys.add(ckes);
+              }
+            }
+          } else if (endRow.getLength() == 0) {
+            // no end row
+            if (ckes.getEndRow().compareTo(startRow) >= 0) {
+              keys.add(ckes);
+            }
+          } else {
+            // no null prevend or endrows and no empty string start or end rows
+            if (ckes.getPrevEndRow().compareTo(endRow) < 0 && ckes.getEndRow().compareTo(startRow) >= 0) {
+              keys.add(ckes);
+            }
+          }
+
+        }
+      }
+    }
+    return keys;
+  }
+
+  public static Text decodePrevEndRow(Value ibw) {
+    Text per = null;
+
+    if (ibw.get()[0] != 0) {
+      per = new Text();
+      per.set(ibw.get(), 1, ibw.get().length - 1);
+    }
+
+    return per;
+  }
+
+  public static Value encodePrevEndRow(Text per) {
+    if (per == null)
+      return new Value(new byte[] {0});
+    byte[] b = new byte[per.getLength() + 1];
+    b[0] = 1;
+    System.arraycopy(per.getBytes(), 0, b, 1, per.getLength());
+    return new Value(b);
+  }
+
+  public static Mutation getPrevRowUpdateMutation(KeyExtent ke) {
+    Mutation m = new Mutation(ke.getMetadataEntry());
+    TabletsSection.TabletColumnFamily.PREV_ROW_COLUMN.put(m, encodePrevEndRow(ke.getPrevEndRow()));
+    return m;
+  }
+
+  @Override
+  public int compareTo(KeyExtent other) {
+
+    int result = getTableId().compareTo(other.getTableId());
+    if (result != 0)
+      return result;
+
+    if (this.getEndRow() == null) {
+      if (other.getEndRow() != null)
+        return 1;
+    } else {
+      if (other.getEndRow() == null)
+        return -1;
+
+      result = getEndRow().compareTo(other.getEndRow());
+      if (result != 0)
+        return result;
+    }
+    if (this.getPrevEndRow() == null) {
+      if (other.getPrevEndRow() == null)
+        return 0;
+      return -1;
+    }
+    if (other.getPrevEndRow() == null)
+      return 1;
+    return this.getPrevEndRow().compareTo(other.getPrevEndRow());
+  }
+
+  private int hashCode = 0;
+
+  @Override
+  public int hashCode() {
+    if (hashCode != 0)
+      return hashCode;
+
+    int prevEndRowHash = 0;
+    int endRowHash = 0;
+    if (this.getEndRow() != null) {
+      endRowHash = this.getEndRow().hashCode();
+    }
+
+    if (this.getPrevEndRow() != null) {
+      prevEndRowHash = this.getPrevEndRow().hashCode();
+    }
+
+    hashCode = getTableId().hashCode() + endRowHash + prevEndRowHash;
+    return hashCode;
+  }
+
+  private boolean equals(Text t1, Text t2) {
+    if (t1 == null || t2 == null)
+      return t1 == t2;
+
+    return t1.equals(t2);
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (o == this)
+      return true;
+    if (!(o instanceof KeyExtent))
+      return false;
+    KeyExtent oke = (KeyExtent) o;
+    return textTableId.equals(oke.textTableId) && equals(textEndRow, oke.textEndRow) && equals(textPrevEndRow, oke.textPrevEndRow);
+  }
+
+  @Override
+  public String toString() {
+    String endRowString;
+    String prevEndRowString;
+    String tableIdString = getTableId().toString().replaceAll(";", "\\\\;").replaceAll("\\\\", "\\\\\\\\");
+
+    if (getEndRow() == null)
+      endRowString = "<";
+    else
+      endRowString = ";" + TextUtil.truncate(getEndRow()).toString().replaceAll(";", "\\\\;").replaceAll("\\\\", "\\\\\\\\");
+
+    if (getPrevEndRow() == null)
+      prevEndRowString = "<";
+    else
+      prevEndRowString = ";" + TextUtil.truncate(getPrevEndRow()).toString().replaceAll(";", "\\\\;").replaceAll("\\\\", "\\\\\\\\");
+
+    return tableIdString + endRowString + prevEndRowString;
+  }
+
+  public UUID getUUID() {
+    try {
+
+      ByteArrayOutputStream baos = new ByteArrayOutputStream();
+      DataOutputStream dos = new DataOutputStream(baos);
+
+      // to get a unique hash it is important to encode the data
+      // like it is being serialized
+
+      this.write(dos);
+
+      dos.close();
+
+      return UUID.nameUUIDFromBytes(baos.toByteArray());
+
+    } catch (IOException e) {
+      // should not happen since we are writing to memory
+      throw new RuntimeException(e);
+    }
+  }
+
+  // note: this is only the encoding of the table id and the last row, not the prev row
+  /**
+   * Populates the extent's fields based on a flatted extent
+   *
+   */
+  private void decodeMetadataRow(Text flattenedExtent) {
+    int semiPos = -1;
+    int ltPos = -1;
+
+    for (int i = 0; i < flattenedExtent.getLength(); i++) {
+      if (flattenedExtent.getBytes()[i] == ';' && semiPos < 0) {
+        // want the position of the first semicolon
+        semiPos = i;
+      }
+
+      if (flattenedExtent.getBytes()[i] == '<') {
+        ltPos = i;
+      }
+    }
+
+    if (semiPos < 0 && ltPos < 0) {
+      throw new IllegalArgumentException("Metadata row does not contain ; or <  " + flattenedExtent);
+    }
+
+    if (semiPos < 0) {
+
+      if (ltPos != flattenedExtent.getLength() - 1) {
+        throw new IllegalArgumentException("< must come at end of Metadata row  " + flattenedExtent);
+      }
+
+      Text tableId = new Text();
+      tableId.set(flattenedExtent.getBytes(), 0, flattenedExtent.getLength() - 1);
+      this.setTableId(tableId);
+      this.setEndRow(null, false, false);
+    } else {
+
+      Text tableId = new Text();
+      tableId.set(flattenedExtent.getBytes(), 0, semiPos);
+
+      Text endRow = new Text();
+      endRow.set(flattenedExtent.getBytes(), semiPos + 1, flattenedExtent.getLength() - (semiPos + 1));
+
+      this.setTableId(tableId);
+
+      this.setEndRow(endRow, false, false);
+    }
+  }
+
+  public static byte[] tableOfMetadataRow(Text row) {
+    KeyExtent ke = new KeyExtent();
+    ke.decodeMetadataRow(row);
+    return TextUtil.getBytes(ke.getTableId());
+  }
+
+  public boolean contains(final ByteSequence bsrow) {
+    if (bsrow == null) {
+      throw new IllegalArgumentException("Passing null to contains is ambiguous, could be in first or last extent of table");
+    }
+
+    BinaryComparable row = new BinaryComparable() {
+
+      @Override
+      public int getLength() {
+        return bsrow.length();
+      }
+
+      @Override
+      public byte[] getBytes() {
+        if (bsrow.isBackedByArray() && bsrow.offset() == 0)
+          return bsrow.getBackingArray();
+
+        return bsrow.toArray();
+      }
+    };
+
+    if ((this.getPrevEndRow() == null || this.getPrevEndRow().compareTo(row) < 0) && (this.getEndRow() == null || this.getEndRow().compareTo(row) >= 0)) {
+      return true;
+    }
+    return false;
+  }
+
+  public boolean contains(BinaryComparable row) {
+    if (row == null) {
+      throw new IllegalArgumentException("Passing null to contains is ambiguous, could be in first or last extent of table");
+    }
+
+    if ((this.getPrevEndRow() == null || this.getPrevEndRow().compareTo(row) < 0) && (this.getEndRow() == null || this.getEndRow().compareTo(row) >= 0)) {
+      return true;
+    }
+    return false;
+  }
+
+  public Range toDataRange() {
+    return new Range(getPrevEndRow(), false, getEndRow(), true);
+  }
+
+  public Range toMetadataRange() {
+    Text metadataPrevRow = new Text(getTableId());
+    metadataPrevRow.append(new byte[] {';'}, 0, 1);
+    if (getPrevEndRow() != null) {
+      metadataPrevRow.append(getPrevEndRow().getBytes(), 0, getPrevEndRow().getLength());
+    }
+
+    Range range = new Range(metadataPrevRow, getPrevEndRow() == null, getMetadataEntry(), true);
+    return range;
+  }
+
+  public static SortedSet<KeyExtent> findChildren(KeyExtent ke, SortedSet<KeyExtent> tablets) {
+
+    SortedSet<KeyExtent> children = null;
+
+    for (KeyExtent tabletKe : tablets) {
+
+      if (ke.getPrevEndRow() == tabletKe.getPrevEndRow() || ke.getPrevEndRow() != null && tabletKe.getPrevEndRow() != null
+          && tabletKe.getPrevEndRow().compareTo(ke.getPrevEndRow()) == 0) {
+        children = new TreeSet<KeyExtent>();
+      }
+
+      if (children != null) {
+        children.add(tabletKe);
+      }
+
+      if (ke.getEndRow() == tabletKe.getEndRow() || ke.getEndRow() != null && tabletKe.getEndRow() != null
+          && tabletKe.getEndRow().compareTo(ke.getEndRow()) == 0) {
+        return children;
+      }
+    }
+
+    return new TreeSet<KeyExtent>();
+  }
+
+  public static KeyExtent findContainingExtent(KeyExtent extent, SortedSet<KeyExtent> extents) {
+
+    KeyExtent lookupExtent = new KeyExtent(extent);
+    lookupExtent.setPrevEndRow((Text) null);
+
+    SortedSet<KeyExtent> tailSet = extents.tailSet(lookupExtent);
+
+    if (tailSet.isEmpty()) {
+      return null;
+    }
+
+    KeyExtent first = tailSet.first();
+
+    if (first.getTableId().compareTo(extent.getTableId()) != 0) {
+      return null;
+    }
+
+    if (first.getPrevEndRow() == null) {
+      return first;
+    }
+
+    if (extent.getPrevEndRow() == null) {
+      return null;
+    }
+
+    if (extent.getPrevEndRow().compareTo(first.getPrevEndRow()) >= 0)
+      return first;
+    return null;
+  }
+
+  private static boolean startsAfter(KeyExtent nke, KeyExtent ke) {
+
+    int tiCmp = ke.getTableId().compareTo(nke.getTableId());
+
+    if (tiCmp > 0) {
+      return true;
+    }
+
+    return ke.getPrevEndRow() != null && nke.getEndRow() != null && ke.getPrevEndRow().compareTo(nke.getEndRow()) >= 0;
+  }
+
+  private static Text rowAfterPrevRow(KeyExtent nke) {
+    Text row = new Text(nke.getPrevEndRow());
+    row.append(new byte[] {0}, 0, 1);
+    return row;
+  }
+
+  // Some duplication with TabletLocatorImpl
+  public static Set<KeyExtent> findOverlapping(KeyExtent nke, SortedSet<KeyExtent> extents) {
+    if (nke == null || extents == null || extents.isEmpty())
+      return Collections.emptySet();
+
+    SortedSet<KeyExtent> start;
+
+    if (nke.getPrevEndRow() != null) {
+      Text row = rowAfterPrevRow(nke);
+      KeyExtent lookupKey = new KeyExtent(nke.getTableId(), row, null);
+      start = extents.tailSet(lookupKey);
+    } else {
+      KeyExtent lookupKey = new KeyExtent(nke.getTableId(), new Text(), null);
+      start = extents.tailSet(lookupKey);
+    }
+
+    TreeSet<KeyExtent> result = new TreeSet<KeyExtent>();
+    for (KeyExtent ke : start) {
+      if (startsAfter(nke, ke)) {
+        break;
+      }
+      result.add(ke);
+    }
+    return result;
+  }
+
+  public boolean overlaps(KeyExtent other) {
+    SortedSet<KeyExtent> set = new TreeSet<KeyExtent>();
+    set.add(other);
+    return !findOverlapping(this, set).isEmpty();
+  }
+
+  // Specialization of findOverlapping(KeyExtent, SortedSet<KeyExtent> to work with SortedMap
+  public static Set<KeyExtent> findOverlapping(KeyExtent nke, SortedMap<KeyExtent,?> extents) {
+    if (nke == null || extents == null || extents.isEmpty())
+      return Collections.emptySet();
+
+    SortedMap<KeyExtent,?> start;
+
+    if (nke.getPrevEndRow() != null) {
+      Text row = rowAfterPrevRow(nke);
+      KeyExtent lookupKey = new KeyExtent(nke.getTableId(), row, null);
+      start = extents.tailMap(lookupKey);
+    } else {
+      KeyExtent lookupKey = new KeyExtent(nke.getTableId(), new Text(), null);
+      start = extents.tailMap(lookupKey);
+    }
+
+    TreeSet<KeyExtent> result = new TreeSet<KeyExtent>();
+    for (Entry<KeyExtent,?> entry : start.entrySet()) {
+      KeyExtent ke = entry.getKey();
+      if (startsAfter(nke, ke)) {
+        break;
+      }
+      result.add(ke);
+    }
+    return result;
+  }
+
+  public static Text getMetadataEntry(KeyExtent extent) {
+    return getMetadataEntry(extent.getTableId(), extent.getEndRow());
+  }
+
+  public TKeyExtent toThrift() {
+    return new TKeyExtent(TextUtil.getByteBuffer(textTableId), textEndRow == null ? null : TextUtil.getByteBuffer(textEndRow), textPrevEndRow == null ? null
+        : TextUtil.getByteBuffer(textPrevEndRow));
+  }
+
+  public boolean isPreviousExtent(KeyExtent prevExtent) {
+    if (prevExtent == null)
+      return getPrevEndRow() == null;
+
+    if (!prevExtent.getTableId().equals(getTableId()))
+      throw new IllegalArgumentException("Cannot compare accross tables " + prevExtent + " " + this);
+
+    if (prevExtent.getEndRow() == null)
+      return false;
+
+    if (getPrevEndRow() == null)
+      return false;
+
+    return prevExtent.getEndRow().equals(getPrevEndRow());
+  }
+
+  public boolean isMeta() {
+    return getTableId().toString().equals(MetadataTable.ID) || isRootTablet();
+  }
+
+  public boolean isRootTablet() {
+    return getTableId().toString().equals(RootTable.ID);
+  }
+}

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/data/impl/TabletIDImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/data/impl/TabletIDImpl.java b/core/src/main/java/org/apache/accumulo/core/data/impl/TabletIDImpl.java
new file mode 100644
index 0000000..dd90e0d
--- /dev/null
+++ b/core/src/main/java/org/apache/accumulo/core/data/impl/TabletIDImpl.java
@@ -0,0 +1,100 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
+package org.apache.accumulo.core.data.impl;
+
+import org.apache.accumulo.core.data.TabletID;
+import org.apache.hadoop.io.Text;
+
+import com.google.common.base.Function;
+
+public class TabletIDImpl implements TabletID {
+
+  private KeyExtent ke;
+
+  @SuppressWarnings("deprecation")
+  public static final Function<org.apache.accumulo.core.data.KeyExtent,TabletID> KE_2_TID_OLD = new Function<org.apache.accumulo.core.data.KeyExtent,TabletID>() {
+    @Override
+    public TabletID apply(org.apache.accumulo.core.data.KeyExtent input) {
+      //the following if null check is to appease findbugs... grumble grumble spent a good part of my morning looking into this
+      // http://sourceforge.net/p/findbugs/bugs/1139/
+      // https://code.google.com/p/guava-libraries/issues/detail?id=920
+      if(input == null)
+        return null;
+      return new TabletIDImpl(input);
+    }
+  };
+
+  @SuppressWarnings("deprecation")
+  public static final Function<TabletID, org.apache.accumulo.core.data.KeyExtent> TID_2_KE_OLD = new Function<TabletID, org.apache.accumulo.core.data.KeyExtent>() {
+    @Override
+    public org.apache.accumulo.core.data.KeyExtent apply(TabletID input) {
+      if(input == null)
+        return null;
+      return new org.apache.accumulo.core.data.KeyExtent(input.getTableId(), input.getEndRow(), input.getPrevEndRow());
+    }
+
+  };
+
+  @Deprecated
+  public TabletIDImpl(org.apache.accumulo.core.data.KeyExtent ke) {
+    this.ke = new KeyExtent(ke.getTableId(), ke.getEndRow(), ke.getPrevEndRow());
+  }
+
+  public TabletIDImpl(KeyExtent ke) {
+    this.ke = ke;
+  }
+
+  @Override
+  public int compareTo(TabletID o) {
+    return ke.compareTo(((TabletIDImpl) o).ke);
+  }
+
+  @Override
+  public Text getTableId() {
+    return ke.getTableId();
+  }
+
+  @Override
+  public Text getEndRow() {
+    return ke.getEndRow();
+  }
+
+  @Override
+  public Text getPrevEndRow() {
+    return ke.getPrevEndRow();
+  }
+
+  @Override
+  public int hashCode() {
+    return ke.hashCode();
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (o instanceof TabletIDImpl) {
+      return ke.equals(((TabletIDImpl) o).ke);
+    }
+
+    return false;
+  }
+
+  @Override
+  public String toString(){
+    return ke.toString();
+  }
+}

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/iterators/IteratorUtil.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/iterators/IteratorUtil.java b/core/src/main/java/org/apache/accumulo/core/iterators/IteratorUtil.java
index 587fc33..5efa2c2 100644
--- a/core/src/main/java/org/apache/accumulo/core/iterators/IteratorUtil.java
+++ b/core/src/main/java/org/apache/accumulo/core/iterators/IteratorUtil.java
@@ -33,8 +33,8 @@ import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.conf.Property;
 import org.apache.accumulo.core.constraints.DefaultKeySizeConstraint;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Range;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.data.thrift.IterInfo;
 import org.apache.accumulo.core.iterators.system.SynchronizedIterator;
 import org.apache.accumulo.core.iterators.user.VersioningIterator;
@@ -56,24 +56,21 @@ public class IteratorUtil {
 
   private static final Logger log = LoggerFactory.getLogger(IteratorUtil.class);
 
+  /**
+   * Even though this type is not in a public API package, its used by methods in the public API. Therefore it should be treated as public API and should not
+   * reference any non public API types. Also this type can not be moved.
+   */
   public static enum IteratorScope {
     majc, minc, scan;
 
     /**
      * Fetch the correct configuration key prefix for the given scope. Throws an IllegalArgumentException if no property exists for the given scope.
+     *
+     * @deprecated since 1.7.0 This method returns a type that is not part of the public API and is not guaranteed to be stable.  The method was deprecated to discourage its use.
      */
+    @Deprecated
     public static Property getProperty(IteratorScope scope) {
-      Preconditions.checkNotNull(scope);
-      switch (scope) {
-        case scan:
-          return Property.TABLE_ITERATOR_SCAN_PREFIX;
-        case minc:
-          return Property.TABLE_ITERATOR_MINC_PREFIX;
-        case majc:
-          return Property.TABLE_ITERATOR_MAJC_PREFIX;
-        default:
-          throw new IllegalStateException("Could not find configuration property for IteratorScope");
-      }
+      return IteratorUtil.getProperty(scope);
     }
   }
 
@@ -88,6 +85,23 @@ public class IteratorUtil {
   }
 
   /**
+   * Fetch the correct configuration key prefix for the given scope. Throws an IllegalArgumentException if no property exists for the given scope.
+   */
+  static Property getProperty(IteratorScope scope) {
+    Preconditions.checkNotNull(scope);
+    switch (scope) {
+      case scan:
+        return Property.TABLE_ITERATOR_SCAN_PREFIX;
+      case minc:
+        return Property.TABLE_ITERATOR_MINC_PREFIX;
+      case majc:
+        return Property.TABLE_ITERATOR_MAJC_PREFIX;
+      default:
+        throw new IllegalStateException("Could not find configuration property for IteratorScope");
+    }
+  }
+
+  /**
    * Generate the initial (default) properties for a table
    *
    * @param limitVersion
@@ -124,7 +138,7 @@ public class IteratorUtil {
   }
 
   protected static void parseIterConf(IteratorScope scope, List<IterInfo> iters, Map<String,Map<String,String>> allOptions, AccumuloConfiguration conf) {
-    final Property scopeProperty = IteratorScope.getProperty(scope);
+    final Property scopeProperty = getProperty(scope);
     final String scopePropertyKey = scopeProperty.getKey();
 
     for (Entry<String,String> entry : conf.getAllPropertiesWithPrefix(scopeProperty).entrySet()) {

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/iterators/system/MultiIterator.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/iterators/system/MultiIterator.java b/core/src/main/java/org/apache/accumulo/core/iterators/system/MultiIterator.java
index 426ae5f..aef6aeb 100644
--- a/core/src/main/java/org/apache/accumulo/core/iterators/system/MultiIterator.java
+++ b/core/src/main/java/org/apache/accumulo/core/iterators/system/MultiIterator.java
@@ -24,9 +24,9 @@ import java.util.Map;
 
 import org.apache.accumulo.core.data.ByteSequence;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.iterators.IteratorEnvironment;
 import org.apache.accumulo.core.iterators.SortedKeyValueIterator;
 

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/metadata/MetadataLocationObtainer.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/metadata/MetadataLocationObtainer.java b/core/src/main/java/org/apache/accumulo/core/metadata/MetadataLocationObtainer.java
index 20f2130..c8c61aa 100644
--- a/core/src/main/java/org/apache/accumulo/core/metadata/MetadataLocationObtainer.java
+++ b/core/src/main/java/org/apache/accumulo/core/metadata/MetadataLocationObtainer.java
@@ -44,10 +44,10 @@ import org.apache.accumulo.core.client.impl.TabletServerBatchReaderIterator.Resu
 import org.apache.accumulo.core.client.impl.ThriftScanner;
 import org.apache.accumulo.core.data.Column;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.PartialKey;
 import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.data.thrift.IterInfo;
 import org.apache.accumulo.core.iterators.user.WholeRowIterator;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/metadata/MetadataServicer.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/metadata/MetadataServicer.java b/core/src/main/java/org/apache/accumulo/core/metadata/MetadataServicer.java
index 3b443f4..c6cf61e 100644
--- a/core/src/main/java/org/apache/accumulo/core/metadata/MetadataServicer.java
+++ b/core/src/main/java/org/apache/accumulo/core/metadata/MetadataServicer.java
@@ -24,7 +24,7 @@ import org.apache.accumulo.core.client.AccumuloException;
 import org.apache.accumulo.core.client.AccumuloSecurityException;
 import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.client.impl.ClientContext;
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 
 /**
  * Provides a consolidated API for handling table metadata

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/metadata/RootTable.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/metadata/RootTable.java b/core/src/main/java/org/apache/accumulo/core/metadata/RootTable.java
index 24148b1..292ba3b 100644
--- a/core/src/main/java/org/apache/accumulo/core/metadata/RootTable.java
+++ b/core/src/main/java/org/apache/accumulo/core/metadata/RootTable.java
@@ -17,7 +17,7 @@
 package org.apache.accumulo.core.metadata;
 
 import org.apache.accumulo.core.client.impl.Namespaces;
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.hadoop.io.Text;
 
 /**

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/metadata/ServicerForRootTable.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/metadata/ServicerForRootTable.java b/core/src/main/java/org/apache/accumulo/core/metadata/ServicerForRootTable.java
index d02242c..73a943d 100644
--- a/core/src/main/java/org/apache/accumulo/core/metadata/ServicerForRootTable.java
+++ b/core/src/main/java/org/apache/accumulo/core/metadata/ServicerForRootTable.java
@@ -23,7 +23,7 @@ import org.apache.accumulo.core.client.AccumuloSecurityException;
 import org.apache.accumulo.core.client.Instance;
 import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.client.impl.ClientContext;
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 
 /**
  * A metadata servicer for the root table.<br />

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/metadata/TableMetadataServicer.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/metadata/TableMetadataServicer.java b/core/src/main/java/org/apache/accumulo/core/metadata/TableMetadataServicer.java
index 7e2ae0a..fcd74a3 100644
--- a/core/src/main/java/org/apache/accumulo/core/metadata/TableMetadataServicer.java
+++ b/core/src/main/java/org/apache/accumulo/core/metadata/TableMetadataServicer.java
@@ -27,8 +27,8 @@ import org.apache.accumulo.core.client.Scanner;
 import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.client.impl.ClientContext;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection;
 import org.apache.accumulo.core.security.Authorizations;
 import org.apache.hadoop.io.Text;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/replication/ReplicationConfigurationUtil.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/replication/ReplicationConfigurationUtil.java b/core/src/main/java/org/apache/accumulo/core/replication/ReplicationConfigurationUtil.java
index 0817d3b..f711868 100644
--- a/core/src/main/java/org/apache/accumulo/core/replication/ReplicationConfigurationUtil.java
+++ b/core/src/main/java/org/apache/accumulo/core/replication/ReplicationConfigurationUtil.java
@@ -18,7 +18,7 @@ package org.apache.accumulo.core.replication;
 
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.conf.Property;
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 
 /**
  * Encapsulates configuration semantics around replication

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/rpc/SaslClientDigestCallbackHandler.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/rpc/SaslClientDigestCallbackHandler.java b/core/src/main/java/org/apache/accumulo/core/rpc/SaslClientDigestCallbackHandler.java
index 18dd7e1..6504741 100644
--- a/core/src/main/java/org/apache/accumulo/core/rpc/SaslClientDigestCallbackHandler.java
+++ b/core/src/main/java/org/apache/accumulo/core/rpc/SaslClientDigestCallbackHandler.java
@@ -27,7 +27,7 @@ import javax.security.auth.callback.UnsupportedCallbackException;
 import javax.security.sasl.RealmCallback;
 import javax.security.sasl.RealmChoiceCallback;
 
-import org.apache.accumulo.core.client.security.tokens.DelegationToken;
+import org.apache.accumulo.core.client.impl.DelegationTokenImpl;
 import org.apache.commons.lang.builder.HashCodeBuilder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -43,7 +43,7 @@ public class SaslClientDigestCallbackHandler extends SaslDigestCallbackHandler {
   private final String userName;
   private final char[] userPassword;
 
-  public SaslClientDigestCallbackHandler(DelegationToken token) {
+  public SaslClientDigestCallbackHandler(DelegationTokenImpl token) {
     checkNotNull(token);
     this.userName = encodeIdentifier(token.getIdentifier().getBytes());
     this.userPassword = encodePassword(token.getPassword());

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/rpc/SaslConnectionParams.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/rpc/SaslConnectionParams.java b/core/src/main/java/org/apache/accumulo/core/rpc/SaslConnectionParams.java
index 33392b9..0e88967 100644
--- a/core/src/main/java/org/apache/accumulo/core/rpc/SaslConnectionParams.java
+++ b/core/src/main/java/org/apache/accumulo/core/rpc/SaslConnectionParams.java
@@ -30,8 +30,8 @@ import javax.security.sasl.Sasl;
 
 import org.apache.accumulo.core.client.ClientConfiguration;
 import org.apache.accumulo.core.client.ClientConfiguration.ClientProperty;
+import org.apache.accumulo.core.client.impl.DelegationTokenImpl;
 import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
-import org.apache.accumulo.core.client.security.tokens.DelegationToken;
 import org.apache.accumulo.core.client.security.tokens.KerberosToken;
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.conf.Property;
@@ -150,9 +150,9 @@ public class SaslConnectionParams {
       mechanism = SaslMechanism.GSSAPI;
       // No callbackhandlers necessary for GSSAPI
       callbackHandler = null;
-    } else if (token instanceof DelegationToken) {
+    } else if (token instanceof DelegationTokenImpl) {
       mechanism = SaslMechanism.DIGEST_MD5;
-      callbackHandler = new SaslClientDigestCallbackHandler((DelegationToken) token);
+      callbackHandler = new SaslClientDigestCallbackHandler((DelegationTokenImpl) token);
     } else {
       throw new IllegalArgumentException("Cannot determine SASL mechanism for token class: " + token.getClass());
     }

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/security/AuthenticationTokenIdentifier.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/security/AuthenticationTokenIdentifier.java b/core/src/main/java/org/apache/accumulo/core/security/AuthenticationTokenIdentifier.java
deleted file mode 100644
index 0b671d8..0000000
--- a/core/src/main/java/org/apache/accumulo/core/security/AuthenticationTokenIdentifier.java
+++ /dev/null
@@ -1,210 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.
- */
-package org.apache.accumulo.core.security;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.io.DataInput;
-import java.io.DataOutput;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-
-import org.apache.accumulo.core.client.admin.DelegationTokenConfig;
-import org.apache.accumulo.core.security.thrift.TAuthenticationTokenIdentifier;
-import org.apache.accumulo.core.util.ThriftMessageUtil;
-import org.apache.commons.lang.builder.HashCodeBuilder;
-import org.apache.hadoop.io.Text;
-import org.apache.hadoop.security.UserGroupInformation;
-import org.apache.hadoop.security.token.Token;
-import org.apache.hadoop.security.token.TokenIdentifier;
-
-/**
- * Implementation that identifies the underlying {@link Token} for Accumulo.
- */
-public class AuthenticationTokenIdentifier extends TokenIdentifier {
-  public static final Text TOKEN_KIND = new Text("ACCUMULO_AUTH_TOKEN");
-
-  private TAuthenticationTokenIdentifier impl = null;
-  private DelegationTokenConfig cfg = null;
-
-  public AuthenticationTokenIdentifier() {
-    // noop for Writable
-  }
-
-  public AuthenticationTokenIdentifier(String principal) {
-    this(principal, null);
-  }
-
-  public AuthenticationTokenIdentifier(String principal, DelegationTokenConfig cfg) {
-    checkNotNull(principal);
-    impl = new TAuthenticationTokenIdentifier(principal);
-    this.cfg = cfg;
-  }
-
-  public AuthenticationTokenIdentifier(String principal, int keyId, long issueDate, long expirationDate, String instanceId) {
-    checkNotNull(principal);
-    impl = new TAuthenticationTokenIdentifier(principal);
-    impl.setKeyId(keyId);
-    impl.setIssueDate(issueDate);
-    impl.setExpirationDate(expirationDate);
-    impl.setInstanceId(instanceId);
-  }
-
-  public AuthenticationTokenIdentifier(AuthenticationTokenIdentifier identifier) {
-    checkNotNull(identifier);
-    impl = new TAuthenticationTokenIdentifier(identifier.getThriftIdentifier());
-  }
-
-  public AuthenticationTokenIdentifier(TAuthenticationTokenIdentifier identifier) {
-    checkNotNull(identifier);
-    impl = new TAuthenticationTokenIdentifier(identifier);
-  }
-
-  public void setKeyId(int keyId) {
-    impl.setKeyId(keyId);
-  }
-
-  public int getKeyId() {
-    checkNotNull(impl, "Identifier not initialized");
-    return impl.getKeyId();
-  }
-
-  public void setIssueDate(long issueDate) {
-    checkNotNull(impl, "Identifier not initialized");
-    impl.setIssueDate(issueDate);
-  }
-
-  public long getIssueDate() {
-    checkNotNull(impl, "Identifier not initialized");
-    return impl.getIssueDate();
-  }
-
-  public void setExpirationDate(long expirationDate) {
-    checkNotNull(impl, "Identifier not initialized");
-    impl.setExpirationDate(expirationDate);
-  }
-
-  public long getExpirationDate() {
-    checkNotNull(impl, "Identifier not initialized");
-    return impl.getExpirationDate();
-  }
-
-  public void setInstanceId(String instanceId) {
-    checkNotNull(impl, "Identifier not initialized");
-    impl.setInstanceId(instanceId);
-  }
-
-  public String getInstanceId() {
-    checkNotNull(impl, "Identifier not initialized");
-    return impl.getInstanceId();
-  }
-
-  public TAuthenticationTokenIdentifier getThriftIdentifier() {
-    checkNotNull(impl);
-    return impl;
-  }
-
-  /**
-   * A configuration from the requesting user, may be null.
-   */
-  public DelegationTokenConfig getConfig() {
-    return cfg;
-  }
-
-  @Override
-  public void write(DataOutput out) throws IOException {
-    if (null != impl) {
-      ThriftMessageUtil msgUtil = new ThriftMessageUtil();
-      ByteBuffer serialized = msgUtil.serialize(impl);
-      out.writeInt(serialized.limit());
-      out.write(serialized.array(), serialized.arrayOffset(), serialized.limit());
-    } else {
-      out.writeInt(0);
-    }
-  }
-
-  @Override
-  public void readFields(DataInput in) throws IOException {
-    int length = in.readInt();
-    if (length > 0) {
-      ThriftMessageUtil msgUtil = new ThriftMessageUtil();
-      byte[] serialized = new byte[length];
-      in.readFully(serialized);
-      impl = new TAuthenticationTokenIdentifier();
-      msgUtil.deserialize(serialized, impl);
-    }
-  }
-
-  @Override
-  public Text getKind() {
-    return TOKEN_KIND;
-  }
-
-  @Override
-  public UserGroupInformation getUser() {
-    if (null != impl && impl.isSetPrincipal()) {
-      return UserGroupInformation.createRemoteUser(impl.getPrincipal());
-    }
-    return null;
-  }
-
-  @Override
-  public int hashCode() {
-    if (null == impl) {
-      return 0;
-    }
-    HashCodeBuilder hcb = new HashCodeBuilder(7, 11);
-    if (impl.isSetPrincipal()) {
-      hcb.append(impl.getPrincipal());
-    }
-    if (impl.isSetKeyId()) {
-      hcb.append(impl.getKeyId());
-    }
-    if (impl.isSetIssueDate()) {
-      hcb.append(impl.getIssueDate());
-    }
-    if (impl.isSetExpirationDate()) {
-      hcb.append(impl.getExpirationDate());
-    }
-    if (impl.isSetInstanceId()) {
-      hcb.append(impl.getInstanceId());
-    }
-    return hcb.toHashCode();
-  }
-
-  @Override
-  public String toString() {
-    StringBuilder sb = new StringBuilder(128);
-    sb.append("AuthenticationTokenIdentifier(").append(impl).append(")");
-    return sb.toString();
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (null == o) {
-      return false;
-    }
-    if (o instanceof AuthenticationTokenIdentifier) {
-      AuthenticationTokenIdentifier other = (AuthenticationTokenIdentifier) o;
-      if (null == impl) {
-        return null == other.impl;
-      }
-      return impl.equals(other.impl);
-    }
-    return false;
-  }
-}

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/security/Credentials.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/security/Credentials.java b/core/src/main/java/org/apache/accumulo/core/security/Credentials.java
deleted file mode 100644
index ed7789a..0000000
--- a/core/src/main/java/org/apache/accumulo/core/security/Credentials.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.
- */
-package org.apache.accumulo.core.security;
-
-import static java.nio.charset.StandardCharsets.UTF_8;
-
-import java.nio.ByteBuffer;
-
-import org.apache.accumulo.core.client.AccumuloSecurityException;
-import org.apache.accumulo.core.client.Connector;
-import org.apache.accumulo.core.client.Instance;
-import org.apache.accumulo.core.client.impl.thrift.SecurityErrorCode;
-import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
-import org.apache.accumulo.core.client.security.tokens.AuthenticationToken.AuthenticationTokenSerializer;
-import org.apache.accumulo.core.security.thrift.TCredentials;
-import org.apache.accumulo.core.util.Base64;
-
-/**
- * A wrapper for internal use. This class carries the instance, principal, and authentication token for use in the public API, in a non-serialized form. This is
- * important, so that the authentication token carried in a {@link Connector} can be destroyed, invalidating future RPC operations from that {@link Connector}.
- * <p>
- * See ACCUMULO-1312
- *
- * @since 1.6.0
- */
-public class Credentials {
-
-  private String principal;
-  private AuthenticationToken token;
-
-  /**
-   * Creates a new credentials object.
-   *
-   * @param principal
-   *          unique identifier for the entity (e.g. a user or service) authorized for these credentials
-   * @param token
-   *          authentication token used to prove that the principal for these credentials has been properly verified
-   */
-  public Credentials(String principal, AuthenticationToken token) {
-    this.principal = principal;
-    this.token = token;
-  }
-
-  /**
-   * Gets the principal.
-   *
-   * @return unique identifier for the entity (e.g. a user or service) authorized for these credentials
-   */
-  public String getPrincipal() {
-    return principal;
-  }
-
-  /**
-   * Gets the authentication token.
-   *
-   * @return authentication token used to prove that the principal for these credentials has been properly verified
-   */
-  public AuthenticationToken getToken() {
-    return token;
-  }
-
-  /**
-   * Converts the current object to the relevant thrift type. The object returned from this contains a non-destroyable version of the
-   * {@link AuthenticationToken}, so this should be used just before placing on the wire, and references to it should be tightly controlled.
-   *
-   * @param instance
-   *          client instance
-   * @return Thrift credentials
-   * @throws RuntimeException
-   *           if the authentication token has been destroyed (expired)
-   */
-  public TCredentials toThrift(Instance instance) {
-    TCredentials tCreds = new TCredentials(getPrincipal(), getToken().getClass().getName(),
-        ByteBuffer.wrap(AuthenticationTokenSerializer.serialize(getToken())), instance.getInstanceID());
-    if (getToken().isDestroyed())
-      throw new RuntimeException("Token has been destroyed", new AccumuloSecurityException(getPrincipal(), SecurityErrorCode.TOKEN_EXPIRED));
-    return tCreds;
-  }
-
-  /**
-   * Converts a given thrift object to our internal Credentials representation.
-   *
-   * @param serialized
-   *          a Thrift encoded set of credentials
-   * @return a new Credentials instance; destroy the token when you're done.
-   */
-  public static Credentials fromThrift(TCredentials serialized) {
-    return new Credentials(serialized.getPrincipal(), AuthenticationTokenSerializer.deserialize(serialized.getTokenClassName(), serialized.getToken()));
-  }
-
-  /**
-   * Converts the current object to a serialized form. The object returned from this contains a non-destroyable version of the {@link AuthenticationToken}, so
-   * references to it should be tightly controlled.
-   *
-   * @return serialized form of these credentials
-   */
-  public final String serialize() {
-    return (getPrincipal() == null ? "-" : Base64.encodeBase64String(getPrincipal().getBytes(UTF_8))) + ":"
-        + (getToken() == null ? "-" : Base64.encodeBase64String(getToken().getClass().getName().getBytes(UTF_8))) + ":"
-        + (getToken() == null ? "-" : Base64.encodeBase64String(AuthenticationTokenSerializer.serialize(getToken())));
-  }
-
-  /**
-   * Converts the serialized form to an instance of {@link Credentials}. The original serialized form will not be affected.
-   *
-   * @param serializedForm
-   *          serialized form of credentials
-   * @return deserialized credentials
-   */
-  public static final Credentials deserialize(String serializedForm) {
-    String[] split = serializedForm.split(":", 3);
-    String principal = split[0].equals("-") ? null : new String(Base64.decodeBase64(split[0]), UTF_8);
-    String tokenType = split[1].equals("-") ? null : new String(Base64.decodeBase64(split[1]), UTF_8);
-    AuthenticationToken token = null;
-    if (!split[2].equals("-")) {
-      byte[] tokenBytes = Base64.decodeBase64(split[2]);
-      token = AuthenticationTokenSerializer.deserialize(tokenType, tokenBytes);
-    }
-    return new Credentials(principal, token);
-  }
-
-  @Override
-  public int hashCode() {
-    return getPrincipal() == null ? 0 : getPrincipal().hashCode();
-  }
-
-  @Override
-  public boolean equals(Object obj) {
-    if (obj == null || !(obj instanceof Credentials))
-      return false;
-    Credentials other = Credentials.class.cast(obj);
-    boolean pEq = getPrincipal() == null ? (other.getPrincipal() == null) : (getPrincipal().equals(other.getPrincipal()));
-    if (!pEq)
-      return false;
-    boolean tEq = getToken() == null ? (other.getToken() == null) : (getToken().equals(other.getToken()));
-    return tEq;
-  }
-
-  @Override
-  public String toString() {
-    return getClass().getName() + ":" + getPrincipal() + ":" + (getToken() == null ? null : getToken().getClass().getName()) + ":<hidden>";
-  }
-}

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/security/VisibilityConstraint.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/security/VisibilityConstraint.java b/core/src/main/java/org/apache/accumulo/core/security/VisibilityConstraint.java
index 90cf951..611c8d4 100644
--- a/core/src/main/java/org/apache/accumulo/core/security/VisibilityConstraint.java
+++ b/core/src/main/java/org/apache/accumulo/core/security/VisibilityConstraint.java
@@ -14,78 +14,16 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.accumulo.core.security;
-
-import static java.nio.charset.StandardCharsets.UTF_8;
-
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
 
-import org.apache.accumulo.core.constraints.Constraint;
-import org.apache.accumulo.core.data.ColumnUpdate;
-import org.apache.accumulo.core.data.Mutation;
-import org.apache.accumulo.core.util.BadArgumentException;
+package org.apache.accumulo.core.security;
 
 /**
- * A constraint that checks the visibility of columns against the actor's authorizations. Violation codes:
- * <p>
- * <ul>
- * <li>1 = failure to parse visibility expression</li>
- * <li>2 = insufficient authorization</li>
- * </ul>
+ *
+ * @deprecated since 1.7.0 This is server side code not intended to exist in a public API package. This class references types that are not in the public API
+ *             and therefore is not guaranteed to be stable. It was deprecated to clearly communicate this. Use
+ *             {@link org.apache.accumulo.core.constraints.VisibilityConstraint} instead.
  */
-public class VisibilityConstraint implements Constraint {
-
-  @Override
-  public String getViolationDescription(short violationCode) {
-    switch (violationCode) {
-      case 1:
-        return "Malformed column visibility";
-      case 2:
-        return "User does not have authorization on column visibility";
-    }
-
-    return null;
-  }
-
-  @Override
-  public List<Short> check(Environment env, Mutation mutation) {
-    List<ColumnUpdate> updates = mutation.getUpdates();
-
-    HashSet<String> ok = null;
-    if (updates.size() > 1)
-      ok = new HashSet<String>();
-
-    VisibilityEvaluator ve = null;
-
-    for (ColumnUpdate update : updates) {
-
-      byte[] cv = update.getColumnVisibility();
-      if (cv.length > 0) {
-        String key = null;
-        if (ok != null && ok.contains(key = new String(cv, UTF_8)))
-          continue;
-
-        try {
-
-          if (ve == null)
-            ve = new VisibilityEvaluator(env);
-
-          if (!ve.evaluate(new ColumnVisibility(cv)))
-            return Collections.singletonList(Short.valueOf((short) 2));
-
-        } catch (BadArgumentException bae) {
-          return Collections.singletonList(new Short((short) 1));
-        } catch (VisibilityParseException e) {
-          return Collections.singletonList(new Short((short) 1));
-        }
-
-        if (ok != null)
-          ok.add(key);
-      }
-    }
+@Deprecated
+public class VisibilityConstraint extends org.apache.accumulo.core.constraints.VisibilityConstraint {
 
-    return null;
-  }
 }

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/security/VisibilityEvaluator.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/security/VisibilityEvaluator.java b/core/src/main/java/org/apache/accumulo/core/security/VisibilityEvaluator.java
index dd07619..99aa383 100644
--- a/core/src/main/java/org/apache/accumulo/core/security/VisibilityEvaluator.java
+++ b/core/src/main/java/org/apache/accumulo/core/security/VisibilityEvaluator.java
@@ -18,7 +18,6 @@ package org.apache.accumulo.core.security;
 
 import java.util.ArrayList;
 
-import org.apache.accumulo.core.constraints.Constraint.Environment;
 import org.apache.accumulo.core.security.ColumnVisibility.Node;
 
 /**
@@ -80,13 +79,12 @@ public class VisibilityEvaluator {
   }
 
   /**
-   * Creates a new evaluator for the authorizations found in the given environment.
+   * Creates a new evaluator for the authorizations found in the given container.
    *
-   * @param env
-   *          environment containing authorizations
+   * @since 1.7.0
    */
-  VisibilityEvaluator(Environment env) {
-    this.auths = env.getAuthorizationsContainer();
+  public VisibilityEvaluator(AuthorizationContainer authsContainer) {
+    this.auths = authsContainer;
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/tabletserver/log/LogEntry.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/tabletserver/log/LogEntry.java b/core/src/main/java/org/apache/accumulo/core/tabletserver/log/LogEntry.java
index f13f77e..7fe61d1 100644
--- a/core/src/main/java/org/apache/accumulo/core/tabletserver/log/LogEntry.java
+++ b/core/src/main/java/org/apache/accumulo/core/tabletserver/log/LogEntry.java
@@ -22,8 +22,8 @@ import java.util.Arrays;
 import java.util.Collection;
 
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema;
 import org.apache.hadoop.io.DataInputBuffer;
 import org.apache.hadoop.io.DataOutputBuffer;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/main/java/org/apache/accumulo/core/util/Merge.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/util/Merge.java b/core/src/main/java/org/apache/accumulo/core/util/Merge.java
index 6bef51a..3c60d25 100644
--- a/core/src/main/java/org/apache/accumulo/core/util/Merge.java
+++ b/core/src/main/java/org/apache/accumulo/core/util/Merge.java
@@ -31,8 +31,8 @@ import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.conf.ConfigurationCopy;
 import org.apache.accumulo.core.conf.Property;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.metadata.MetadataTable;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.DataFileColumnFamily;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/test/java/org/apache/accumulo/core/client/impl/ScannerImplTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/accumulo/core/client/impl/ScannerImplTest.java b/core/src/test/java/org/apache/accumulo/core/client/impl/ScannerImplTest.java
index 0c65422..95b0903 100644
--- a/core/src/test/java/org/apache/accumulo/core/client/impl/ScannerImplTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/client/impl/ScannerImplTest.java
@@ -23,7 +23,6 @@ import org.apache.accumulo.core.client.Scanner;
 import org.apache.accumulo.core.client.mock.MockInstance;
 import org.apache.accumulo.core.client.security.tokens.PasswordToken;
 import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.core.security.Credentials;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/test/java/org/apache/accumulo/core/client/impl/TableOperationsImplTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/accumulo/core/client/impl/TableOperationsImplTest.java b/core/src/test/java/org/apache/accumulo/core/client/impl/TableOperationsImplTest.java
index 73a9024..523d157 100644
--- a/core/src/test/java/org/apache/accumulo/core/client/impl/TableOperationsImplTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/client/impl/TableOperationsImplTest.java
@@ -23,11 +23,10 @@ import org.apache.accumulo.core.client.Connector;
 import org.apache.accumulo.core.client.Instance;
 import org.apache.accumulo.core.client.Scanner;
 import org.apache.accumulo.core.client.security.tokens.PasswordToken;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Range;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema;
 import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.hadoop.io.Text;
 import org.easymock.EasyMock;
 import org.junit.Test;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/test/java/org/apache/accumulo/core/client/impl/TabletLocatorImplTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/accumulo/core/client/impl/TabletLocatorImplTest.java b/core/src/test/java/org/apache/accumulo/core/client/impl/TabletLocatorImplTest.java
index 939a64c..2e78bd8 100644
--- a/core/src/test/java/org/apache/accumulo/core/client/impl/TabletLocatorImplTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/client/impl/TabletLocatorImplTest.java
@@ -47,16 +47,15 @@ import org.apache.accumulo.core.client.impl.TabletLocatorImpl.TabletServerLockCh
 import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
 import org.apache.accumulo.core.data.PartialKey;
 import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.metadata.MetadataLocationObtainer;
 import org.apache.accumulo.core.metadata.MetadataTable;
 import org.apache.accumulo.core.metadata.RootTable;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.hadoop.io.Text;
 import org.junit.Before;
 import org.junit.Test;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/test/java/org/apache/accumulo/core/client/impl/TabletServerBatchReaderTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/accumulo/core/client/impl/TabletServerBatchReaderTest.java b/core/src/test/java/org/apache/accumulo/core/client/impl/TabletServerBatchReaderTest.java
index 5c7eb1b..23c223e 100644
--- a/core/src/test/java/org/apache/accumulo/core/client/impl/TabletServerBatchReaderTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/client/impl/TabletServerBatchReaderTest.java
@@ -21,7 +21,6 @@ import org.apache.accumulo.core.client.ClientConfiguration;
 import org.apache.accumulo.core.client.mock.MockInstance;
 import org.apache.accumulo.core.client.security.tokens.PasswordToken;
 import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.core.security.Credentials;
 import org.junit.Before;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/test/java/org/apache/accumulo/core/client/mapred/AccumuloFileOutputFormatTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/accumulo/core/client/mapred/AccumuloFileOutputFormatTest.java b/core/src/test/java/org/apache/accumulo/core/client/mapred/AccumuloFileOutputFormatTest.java
index 9fead34..e389c0b 100644
--- a/core/src/test/java/org/apache/accumulo/core/client/mapred/AccumuloFileOutputFormatTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/client/mapred/AccumuloFileOutputFormatTest.java
@@ -29,6 +29,7 @@ import org.apache.accumulo.core.client.BatchWriter;
 import org.apache.accumulo.core.client.BatchWriterConfig;
 import org.apache.accumulo.core.client.Connector;
 import org.apache.accumulo.core.client.mapreduce.lib.impl.ConfiguratorBase;
+import org.apache.accumulo.core.client.mapreduce.lib.impl.FileOutputConfigurator;
 import org.apache.accumulo.core.client.mock.MockInstance;
 import org.apache.accumulo.core.client.security.tokens.PasswordToken;
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
@@ -224,7 +225,7 @@ public class AccumuloFileOutputFormatTest {
     AccumuloFileOutputFormat.setIndexBlockSize(job, d);
     AccumuloFileOutputFormat.setCompressionType(job, e);
 
-    AccumuloConfiguration acuconf = AccumuloFileOutputFormat.getAccumuloConfiguration(job);
+    AccumuloConfiguration acuconf = FileOutputConfigurator.getAccumuloConfiguration(AccumuloFileOutputFormat.class, job);
 
     assertEquals(7, acuconf.getCount(Property.TABLE_FILE_REPLICATION));
     assertEquals(300l, acuconf.getMemoryInBytes(Property.TABLE_FILE_BLOCK_SIZE));
@@ -245,7 +246,7 @@ public class AccumuloFileOutputFormatTest {
     AccumuloFileOutputFormat.setIndexBlockSize(job, d);
     AccumuloFileOutputFormat.setCompressionType(job, e);
 
-    acuconf = AccumuloFileOutputFormat.getAccumuloConfiguration(job);
+    acuconf = FileOutputConfigurator.getAccumuloConfiguration(AccumuloFileOutputFormat.class, job);
 
     assertEquals(17, acuconf.getCount(Property.TABLE_FILE_REPLICATION));
     assertEquals(1300l, acuconf.getMemoryInBytes(Property.TABLE_FILE_BLOCK_SIZE));

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/test/java/org/apache/accumulo/core/client/mapred/TokenFileTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/accumulo/core/client/mapred/TokenFileTest.java b/core/src/test/java/org/apache/accumulo/core/client/mapred/TokenFileTest.java
index a8ca12e..f025783 100644
--- a/core/src/test/java/org/apache/accumulo/core/client/mapred/TokenFileTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/client/mapred/TokenFileTest.java
@@ -31,13 +31,13 @@ import org.apache.accumulo.core.client.BatchWriter;
 import org.apache.accumulo.core.client.BatchWriterConfig;
 import org.apache.accumulo.core.client.Connector;
 import org.apache.accumulo.core.client.Scanner;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.client.mock.MockInstance;
 import org.apache.accumulo.core.client.security.tokens.PasswordToken;
 import org.apache.accumulo.core.data.Key;
 import org.apache.accumulo.core.data.Mutation;
 import org.apache.accumulo.core.data.Value;
 import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.core.util.CachedConfiguration;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.conf.Configured;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/test/java/org/apache/accumulo/core/client/mapreduce/AccumuloFileOutputFormatTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/accumulo/core/client/mapreduce/AccumuloFileOutputFormatTest.java b/core/src/test/java/org/apache/accumulo/core/client/mapreduce/AccumuloFileOutputFormatTest.java
index d9658ae..abc99c9 100644
--- a/core/src/test/java/org/apache/accumulo/core/client/mapreduce/AccumuloFileOutputFormatTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/client/mapreduce/AccumuloFileOutputFormatTest.java
@@ -27,6 +27,7 @@ import java.io.IOException;
 import org.apache.accumulo.core.client.BatchWriter;
 import org.apache.accumulo.core.client.BatchWriterConfig;
 import org.apache.accumulo.core.client.Connector;
+import org.apache.accumulo.core.client.mapreduce.lib.impl.FileOutputConfigurator;
 import org.apache.accumulo.core.client.mock.MockInstance;
 import org.apache.accumulo.core.client.security.tokens.PasswordToken;
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
@@ -212,7 +213,7 @@ public class AccumuloFileOutputFormatTest {
     AccumuloFileOutputFormat.setIndexBlockSize(job1, d);
     AccumuloFileOutputFormat.setCompressionType(job1, e);
 
-    AccumuloConfiguration acuconf = AccumuloFileOutputFormat.getAccumuloConfiguration(job1);
+    AccumuloConfiguration acuconf = FileOutputConfigurator.getAccumuloConfiguration(AccumuloFileOutputFormat.class, job1.getConfiguration());
 
     assertEquals(7, acuconf.getCount(Property.TABLE_FILE_REPLICATION));
     assertEquals(300l, acuconf.getMemoryInBytes(Property.TABLE_FILE_BLOCK_SIZE));
@@ -233,7 +234,7 @@ public class AccumuloFileOutputFormatTest {
     AccumuloFileOutputFormat.setIndexBlockSize(job2, d);
     AccumuloFileOutputFormat.setCompressionType(job2, e);
 
-    acuconf = AccumuloFileOutputFormat.getAccumuloConfiguration(job2);
+    acuconf = FileOutputConfigurator.getAccumuloConfiguration(AccumuloFileOutputFormat.class, job2.getConfiguration());
 
     assertEquals(17, acuconf.getCount(Property.TABLE_FILE_REPLICATION));
     assertEquals(1300l, acuconf.getMemoryInBytes(Property.TABLE_FILE_BLOCK_SIZE));

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/test/java/org/apache/accumulo/core/client/mapreduce/TokenFileTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/accumulo/core/client/mapreduce/TokenFileTest.java b/core/src/test/java/org/apache/accumulo/core/client/mapreduce/TokenFileTest.java
index 092c930..8f49751 100644
--- a/core/src/test/java/org/apache/accumulo/core/client/mapreduce/TokenFileTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/client/mapreduce/TokenFileTest.java
@@ -31,13 +31,13 @@ import org.apache.accumulo.core.client.BatchWriter;
 import org.apache.accumulo.core.client.BatchWriterConfig;
 import org.apache.accumulo.core.client.Connector;
 import org.apache.accumulo.core.client.Scanner;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.client.mock.MockInstance;
 import org.apache.accumulo.core.client.security.tokens.PasswordToken;
 import org.apache.accumulo.core.data.Key;
 import org.apache.accumulo.core.data.Mutation;
 import org.apache.accumulo.core.data.Value;
 import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.core.security.Credentials;
 import org.apache.accumulo.core.util.CachedConfiguration;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.conf.Configured;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/test/java/org/apache/accumulo/core/client/security/tokens/DelegationTokenImplTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/accumulo/core/client/security/tokens/DelegationTokenImplTest.java b/core/src/test/java/org/apache/accumulo/core/client/security/tokens/DelegationTokenImplTest.java
new file mode 100644
index 0000000..99de3b2
--- /dev/null
+++ b/core/src/test/java/org/apache/accumulo/core/client/security/tokens/DelegationTokenImplTest.java
@@ -0,0 +1,73 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.accumulo.core.client.security.tokens;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.apache.accumulo.core.client.impl.AuthenticationTokenIdentifier;
+import org.apache.accumulo.core.client.impl.DelegationTokenImpl;
+import org.junit.Test;
+
+public class DelegationTokenImplTest {
+
+  @Test
+  public void testSerialization() throws IOException {
+    AuthenticationTokenIdentifier identifier = new AuthenticationTokenIdentifier("user", 1, 1000l, 2000l, "instanceid");
+    // We don't need a real serialized Token for the password
+    DelegationTokenImpl token = new DelegationTokenImpl(new byte[] {'f', 'a', 'k', 'e'}, identifier);
+    assertEquals(token, token);
+    assertEquals(token.hashCode(), token.hashCode());
+
+    ByteArrayOutputStream baos = new ByteArrayOutputStream();
+    token.write(new DataOutputStream(baos));
+
+    DelegationTokenImpl copy = new DelegationTokenImpl();
+    copy.readFields(new DataInputStream(new ByteArrayInputStream(baos.toByteArray())));
+
+    assertEquals(token, copy);
+    assertEquals(token.hashCode(), copy.hashCode());
+  }
+
+  @Test
+  public void testEquality() throws IOException {
+    AuthenticationTokenIdentifier identifier = new AuthenticationTokenIdentifier("user", 1, 1000l, 2000l, "instanceid");
+    // We don't need a real serialized Token for the password
+    DelegationTokenImpl token = new DelegationTokenImpl(new byte[] {'f', 'a', 'k', 'e'}, identifier);
+
+    AuthenticationTokenIdentifier identifier2 = new AuthenticationTokenIdentifier("user1", 1, 1000l, 2000l, "instanceid");
+    // We don't need a real serialized Token for the password
+    DelegationTokenImpl token2 = new DelegationTokenImpl(new byte[] {'f', 'a', 'k', 'e'}, identifier2);
+
+    assertNotEquals(token, token2);
+    assertNotEquals(token.hashCode(), token2.hashCode());
+
+    // We don't need a real serialized Token for the password
+    DelegationTokenImpl token3 = new DelegationTokenImpl(new byte[] {'f', 'a', 'k', 'e', '0'}, identifier);
+
+    assertNotEquals(token, token3);
+    assertNotEquals(token.hashCode(), token3.hashCode());
+    assertNotEquals(token2, token3);
+    assertNotEquals(token2.hashCode(), token3.hashCode());
+  }
+}

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/test/java/org/apache/accumulo/core/client/security/tokens/DelegationTokenTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/accumulo/core/client/security/tokens/DelegationTokenTest.java b/core/src/test/java/org/apache/accumulo/core/client/security/tokens/DelegationTokenTest.java
deleted file mode 100644
index f66a1ee..0000000
--- a/core/src/test/java/org/apache/accumulo/core/client/security/tokens/DelegationTokenTest.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.
- */
-package org.apache.accumulo.core.client.security.tokens;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotEquals;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-import org.apache.accumulo.core.security.AuthenticationTokenIdentifier;
-import org.junit.Test;
-
-public class DelegationTokenTest {
-
-  @Test
-  public void testSerialization() throws IOException {
-    AuthenticationTokenIdentifier identifier = new AuthenticationTokenIdentifier("user", 1, 1000l, 2000l, "instanceid");
-    // We don't need a real serialized Token for the password
-    DelegationToken token = new DelegationToken(new byte[] {'f', 'a', 'k', 'e'}, identifier);
-    assertEquals(token, token);
-    assertEquals(token.hashCode(), token.hashCode());
-
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    token.write(new DataOutputStream(baos));
-
-    DelegationToken copy = new DelegationToken();
-    copy.readFields(new DataInputStream(new ByteArrayInputStream(baos.toByteArray())));
-
-    assertEquals(token, copy);
-    assertEquals(token.hashCode(), copy.hashCode());
-  }
-
-  @Test
-  public void testEquality() throws IOException {
-    AuthenticationTokenIdentifier identifier = new AuthenticationTokenIdentifier("user", 1, 1000l, 2000l, "instanceid");
-    // We don't need a real serialized Token for the password
-    DelegationToken token = new DelegationToken(new byte[] {'f', 'a', 'k', 'e'}, identifier);
-
-    AuthenticationTokenIdentifier identifier2 = new AuthenticationTokenIdentifier("user1", 1, 1000l, 2000l, "instanceid");
-    // We don't need a real serialized Token for the password
-    DelegationToken token2 = new DelegationToken(new byte[] {'f', 'a', 'k', 'e'}, identifier2);
-
-    assertNotEquals(token, token2);
-    assertNotEquals(token.hashCode(), token2.hashCode());
-
-    // We don't need a real serialized Token for the password
-    DelegationToken token3 = new DelegationToken(new byte[] {'f', 'a', 'k', 'e', '0'}, identifier);
-
-    assertNotEquals(token, token3);
-    assertNotEquals(token.hashCode(), token3.hashCode());
-    assertNotEquals(token2, token3);
-    assertNotEquals(token2.hashCode(), token3.hashCode());
-  }
-}

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/test/java/org/apache/accumulo/core/data/KeyExtentTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/accumulo/core/data/KeyExtentTest.java b/core/src/test/java/org/apache/accumulo/core/data/KeyExtentTest.java
index 749f14c..b1ac1c5 100644
--- a/core/src/test/java/org/apache/accumulo/core/data/KeyExtentTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/data/KeyExtentTest.java
@@ -37,6 +37,7 @@ import java.util.SortedMap;
 import java.util.TreeMap;
 import java.util.TreeSet;
 
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.hadoop.io.Text;
 import org.junit.Before;
 import org.junit.Test;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/test/java/org/apache/accumulo/core/data/RangeTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/accumulo/core/data/RangeTest.java b/core/src/test/java/org/apache/accumulo/core/data/RangeTest.java
index 1f9a40d..1e5e985 100644
--- a/core/src/test/java/org/apache/accumulo/core/data/RangeTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/data/RangeTest.java
@@ -27,6 +27,7 @@ import java.util.List;
 
 import junit.framework.TestCase;
 
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.data.thrift.TRange;
 import org.apache.hadoop.io.Text;
 

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/test/java/org/apache/accumulo/core/file/rfile/RFileTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/accumulo/core/file/rfile/RFileTest.java b/core/src/test/java/org/apache/accumulo/core/file/rfile/RFileTest.java
index eafadc0..2e2b346 100644
--- a/core/src/test/java/org/apache/accumulo/core/file/rfile/RFileTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/file/rfile/RFileTest.java
@@ -44,10 +44,10 @@ import org.apache.accumulo.core.conf.Property;
 import org.apache.accumulo.core.data.ArrayByteSequence;
 import org.apache.accumulo.core.data.ByteSequence;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.PartialKey;
 import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.file.FileSKVIterator;
 import org.apache.accumulo.core.file.blockfile.cache.LruBlockCache;
 import org.apache.accumulo.core.file.blockfile.impl.CachableBlockFile;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/test/java/org/apache/accumulo/core/iterators/IteratorUtilTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/accumulo/core/iterators/IteratorUtilTest.java b/core/src/test/java/org/apache/accumulo/core/iterators/IteratorUtilTest.java
index 5ff5722..87ad392 100644
--- a/core/src/test/java/org/apache/accumulo/core/iterators/IteratorUtilTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/iterators/IteratorUtilTest.java
@@ -32,9 +32,9 @@ import org.apache.accumulo.core.conf.ConfigurationCopy;
 import org.apache.accumulo.core.conf.Property;
 import org.apache.accumulo.core.data.ByteSequence;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.data.thrift.IterInfo;
 import org.apache.accumulo.core.iterators.IteratorUtil.IteratorScope;
 import org.apache.accumulo.core.iterators.system.MultiIteratorTest;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/test/java/org/apache/accumulo/core/iterators/system/MultiIteratorTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/accumulo/core/iterators/system/MultiIteratorTest.java b/core/src/test/java/org/apache/accumulo/core/iterators/system/MultiIteratorTest.java
index c8ef180..3fbf92d 100644
--- a/core/src/test/java/org/apache/accumulo/core/iterators/system/MultiIteratorTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/iterators/system/MultiIteratorTest.java
@@ -26,9 +26,9 @@ import junit.framework.TestCase;
 
 import org.apache.accumulo.core.data.ByteSequence;
 import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.iterators.SortedKeyValueIterator;
 import org.apache.accumulo.core.iterators.SortedMapIterator;
 import org.apache.accumulo.core.util.LocalityGroupUtil;

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/test/java/org/apache/accumulo/core/metadata/MetadataServicerTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/accumulo/core/metadata/MetadataServicerTest.java b/core/src/test/java/org/apache/accumulo/core/metadata/MetadataServicerTest.java
index b8ef346..0e59025 100644
--- a/core/src/test/java/org/apache/accumulo/core/metadata/MetadataServicerTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/metadata/MetadataServicerTest.java
@@ -28,9 +28,9 @@ import org.apache.accumulo.core.client.Connector;
 import org.apache.accumulo.core.client.TableExistsException;
 import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.client.impl.ClientContext;
+import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.client.mock.MockInstance;
 import org.apache.accumulo.core.client.security.tokens.PasswordToken;
-import org.apache.accumulo.core.security.Credentials;
 import org.junit.Test;
 
 public class MetadataServicerTest {

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c6252914/core/src/test/java/org/apache/accumulo/core/replication/ReplicationConfigurationUtilTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/accumulo/core/replication/ReplicationConfigurationUtilTest.java b/core/src/test/java/org/apache/accumulo/core/replication/ReplicationConfigurationUtilTest.java
index b2b91d7..c060917 100644
--- a/core/src/test/java/org/apache/accumulo/core/replication/ReplicationConfigurationUtilTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/replication/ReplicationConfigurationUtilTest.java
@@ -22,7 +22,7 @@ import java.util.Map;
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.conf.ConfigurationCopy;
 import org.apache.accumulo.core.conf.Property;
-import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.impl.KeyExtent;
 import org.apache.accumulo.core.metadata.MetadataTable;
 import org.apache.accumulo.core.metadata.RootTable;
 import org.apache.hadoop.io.Text;


[7/9] accumulo git commit: ACCUMULO-3720 Use apilyzer-maven-plugin

Posted by kt...@apache.org.
ACCUMULO-3720 Use apilyzer-maven-plugin

Use plugin to check for API problems


Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/18a31884
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/18a31884
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/18a31884

Branch: refs/heads/master
Commit: 18a31884c9486090bfa298d972485b5081d92d10
Parents: 61b76b5
Author: Christopher Tubbs <ct...@apache.org>
Authored: Fri Apr 10 15:10:07 2015 -0400
Committer: Keith Turner <kt...@apache.org>
Committed: Tue Apr 21 17:53:31 2015 -0400

----------------------------------------------------------------------
 core/pom.xml        | 30 ++++++++++++++++++++++++++++++
 minicluster/pom.xml | 30 ++++++++++++++++++++++++++++++
 pom.xml             |  5 +++++
 3 files changed, 65 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/18a31884/core/pom.xml
----------------------------------------------------------------------
diff --git a/core/pom.xml b/core/pom.xml
index 4a3500c..f4918bc 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -166,6 +166,36 @@
     </pluginManagement>
     <plugins>
       <plugin>
+        <groupId>net.revelc.apilyzer</groupId>
+        <artifactId>apilyzer-maven-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>apilyzer</id>
+            <goals>
+              <goal>analyze</goal>
+            </goals>
+            <configuration>
+              <includes>
+                <include>org[.]apache[.]accumulo[.]core[.]client[.].*</include>
+                <include>org[.]apache[.]accumulo[.]core[.]data[.](Mutation|Key|Value|Condition|ConditionalMutation|Range|ByteSequence|PartialKey|Column)([$].*)?</include>
+                <include>org[.]apache[.]accumulo[.]core[.]security[.](ColumnVisibility|Authorizations|NamespacePermission|SystemPermission|TablePermission)([$].*)?</include>
+              </includes>
+              <excludes>
+                <exclude>.*Impl</exclude>
+                <exclude>.*[.]impl[.].*</exclude>
+                <exclude>org[.]apache[.]accumulo[.]core[.]client[.]mock[.].*</exclude>
+              </excludes>
+              <allows>
+                <allow>org[.]apache[.]accumulo[.].*[.]thrift[.].*</allow>
+                <allow>org[.]apache[.]commons[.].*</allow>
+                <allow>org[.]apache[.]hadoop[.].*</allow>
+                <allow>org[.]apache[.]log4j[.].*</allow>
+              </allows>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-resources-plugin</artifactId>
         <executions>

http://git-wip-us.apache.org/repos/asf/accumulo/blob/18a31884/minicluster/pom.xml
----------------------------------------------------------------------
diff --git a/minicluster/pom.xml b/minicluster/pom.xml
index adec106..2f46eaf 100644
--- a/minicluster/pom.xml
+++ b/minicluster/pom.xml
@@ -115,4 +115,34 @@
       <scope>test</scope>
     </dependency>
   </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>net.revelc.apilyzer</groupId>
+        <artifactId>apilyzer-maven-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>apilyzer</id>
+            <goals>
+              <goal>analyze</goal>
+            </goals>
+            <configuration>
+              <includes>
+                <include>org[.]apache[.]accumulo[.]minicluster[.].*</include>
+              </includes>
+              <excludes>
+                <exclude>.*Impl</exclude>
+                <exclude>.*[.]impl[.].*</exclude>
+              </excludes>
+              <allows>
+                <allow>org[.]apache[.]accumulo[.]core[.]client[.].*</allow>
+                <allow>org[.]apache[.]accumulo[.]core[.]data[.](Mutation|Key|Value|Condition|ConditionalMutation|Range|ByteSequence|PartialKey|Column)([$].*)?</allow>
+                <allow>org[.]apache[.]accumulo[.]core[.]security[.](ColumnVisibility|Authorizations|NamespacePermission|SystemPermission|TablePermission)([$].*)?</allow>
+              </allows>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
 </project>

http://git-wip-us.apache.org/repos/asf/accumulo/blob/18a31884/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 70ca34b..f12c767 100644
--- a/pom.xml
+++ b/pom.xml
@@ -898,6 +898,11 @@
           <artifactId>maven-bundle-plugin</artifactId>
           <version>2.5.3</version>
         </plugin>
+        <plugin>
+          <groupId>net.revelc.apilyzer</groupId>
+          <artifactId>apilyzer-maven-plugin</artifactId>
+          <version>1.0.0</version>
+        </plugin>
       </plugins>
     </pluginManagement>
     <plugins>


[8/9] accumulo git commit: ACCUMULO-3602 ACCUMULO-3657 Minimize AccumuloInputSplit in API

Posted by kt...@apache.org.
ACCUMULO-3602 ACCUMULO-3657 Minimize AccumuloInputSplit in API


Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/d1e6e79c
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/d1e6e79c
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/d1e6e79c

Branch: refs/heads/master
Commit: d1e6e79cf12ee420dd1d20fd605723f0e5505f68
Parents: c625291
Author: Keith Turner <kt...@apache.org>
Authored: Tue Apr 21 17:30:48 2015 -0400
Committer: Keith Turner <kt...@apache.org>
Committed: Tue Apr 21 17:53:32 2015 -0400

----------------------------------------------------------------------
 .../core/client/mapred/AbstractInputFormat.java | 58 ++++++++--------
 .../client/mapreduce/AbstractInputFormat.java   | 56 ++++++++-------
 .../core/client/mapreduce/RangeInputSplit.java  | 24 ++-----
 .../mapreduce/impl/AccumuloInputSplit.java      | 73 +++++++++-----------
 .../client/mapreduce/impl/BatchInputSplit.java  | 21 ++----
 .../core/client/mapreduce/impl/SplitUtils.java  | 59 ++++++++++++++++
 6 files changed, 162 insertions(+), 129 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/d1e6e79c/core/src/main/java/org/apache/accumulo/core/client/mapred/AbstractInputFormat.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/mapred/AbstractInputFormat.java b/core/src/main/java/org/apache/accumulo/core/client/mapred/AbstractInputFormat.java
index b97d4de..f2e3a79 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/mapred/AbstractInputFormat.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/mapred/AbstractInputFormat.java
@@ -29,18 +29,18 @@ import java.util.Random;
 
 import org.apache.accumulo.core.client.AccumuloException;
 import org.apache.accumulo.core.client.AccumuloSecurityException;
+import org.apache.accumulo.core.client.BatchScanner;
 import org.apache.accumulo.core.client.ClientConfiguration;
 import org.apache.accumulo.core.client.ClientSideIteratorScanner;
 import org.apache.accumulo.core.client.Connector;
 import org.apache.accumulo.core.client.Instance;
 import org.apache.accumulo.core.client.IsolatedScanner;
+import org.apache.accumulo.core.client.IteratorSetting;
 import org.apache.accumulo.core.client.Scanner;
-import org.apache.accumulo.core.client.BatchScanner;
 import org.apache.accumulo.core.client.ScannerBase;
 import org.apache.accumulo.core.client.TableDeletedException;
 import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.client.TableOfflineException;
-import org.apache.accumulo.core.client.IteratorSetting;
 import org.apache.accumulo.core.client.admin.DelegationTokenConfig;
 import org.apache.accumulo.core.client.admin.SecurityOperations;
 import org.apache.accumulo.core.client.impl.AuthenticationTokenIdentifier;
@@ -54,6 +54,7 @@ import org.apache.accumulo.core.client.impl.TabletLocator;
 import org.apache.accumulo.core.client.mapred.impl.BatchInputSplit;
 import org.apache.accumulo.core.client.mapreduce.InputTableConfig;
 import org.apache.accumulo.core.client.mapreduce.impl.AccumuloInputSplit;
+import org.apache.accumulo.core.client.mapreduce.impl.SplitUtils;
 import org.apache.accumulo.core.client.mapreduce.lib.impl.ConfiguratorBase;
 import org.apache.accumulo.core.client.mapreduce.lib.impl.InputConfigurator;
 import org.apache.accumulo.core.client.mock.MockInstance;
@@ -394,7 +395,8 @@ public abstract class AbstractInputFormat<K,V> implements InputFormat<K,V> {
   protected abstract static class AbstractRecordReader<K,V> implements RecordReader<K,V> {
     protected long numKeysRead;
     protected Iterator<Map.Entry<Key,Value>> scannerIterator;
-    protected org.apache.accumulo.core.client.mapreduce.impl.AccumuloInputSplit split;
+    protected RangeInputSplit split;
+    private org.apache.accumulo.core.client.mapreduce.impl.AccumuloInputSplit aiSplit;
     protected ScannerBase scannerBase;
 
 
@@ -458,42 +460,42 @@ public abstract class AbstractInputFormat<K,V> implements InputFormat<K,V> {
      * Initialize a scanner over the given input split using this task attempt configuration.
      */
     public void initialize(InputSplit inSplit, JobConf job) throws IOException {
-      split = (AccumuloInputSplit) inSplit;
-      log.debug("Initializing input split: " + split.toString());
+      aiSplit = (AccumuloInputSplit) inSplit;
+      log.debug("Initializing input split: " + aiSplit.toString());
 
-      Instance instance = split.getInstance(getClientConfiguration(job));
+      Instance instance = aiSplit.getInstance(getClientConfiguration(job));
       if (null == instance) {
         instance = getInstance(job);
       }
 
-      String principal = split.getPrincipal();
+      String principal = aiSplit.getPrincipal();
       if (null == principal) {
         principal = getPrincipal(job);
       }
 
-      AuthenticationToken token = split.getToken();
+      AuthenticationToken token = aiSplit.getToken();
       if (null == token) {
         token = getAuthenticationToken(job);
       }
 
-      Authorizations authorizations = split.getAuths();
+      Authorizations authorizations = aiSplit.getAuths();
       if (null == authorizations) {
         authorizations = getScanAuthorizations(job);
       }
 
-      String table = split.getTableName();
+      String table = aiSplit.getTableName();
 
       // in case the table name changed, we can still use the previous name for terms of configuration,
       // but the scanner will use the table id resolved at job setup time
-      InputTableConfig tableConfig = getInputTableConfig(job, split.getTableName());
+      InputTableConfig tableConfig = getInputTableConfig(job, aiSplit.getTableName());
 
       log.debug("Creating connector with user: " + principal);
       log.debug("Creating scanner for table: " + table);
       log.debug("Authorizations are: " + authorizations);
 
-      if (split instanceof org.apache.accumulo.core.client.mapreduce.RangeInputSplit) {
-        org.apache.accumulo.core.client.mapreduce.RangeInputSplit rangeSplit = (org.apache.accumulo.core.client.mapreduce.RangeInputSplit) split;
-
+      if (aiSplit instanceof RangeInputSplit) {
+        RangeInputSplit rangeSplit = (RangeInputSplit) aiSplit;
+        split = rangeSplit;
         Boolean isOffline = rangeSplit.isOffline();
         if (null == isOffline) {
           isOffline = tableConfig.isOfflineScan();
@@ -513,13 +515,13 @@ public abstract class AbstractInputFormat<K,V> implements InputFormat<K,V> {
 
         try {
           if (isOffline) {
-            scanner = new OfflineScanner(instance, new Credentials(principal, token), split.getTableId(), authorizations);
+            scanner = new OfflineScanner(instance, new Credentials(principal, token), aiSplit.getTableId(), authorizations);
           } else if (instance instanceof MockInstance) {
-            scanner = instance.getConnector(principal, token).createScanner(split.getTableName(), authorizations);
+            scanner = instance.getConnector(principal, token).createScanner(aiSplit.getTableName(), authorizations);
           } else {
             ClientConfiguration clientConf = getClientConfiguration(job);
             ClientContext context = new ClientContext(instance, new Credentials(principal, token), clientConf);
-            scanner = new ScannerImpl(context, split.getTableId(), authorizations);
+            scanner = new ScannerImpl(context, aiSplit.getTableId(), authorizations);
           }
           if (isIsolated) {
             log.info("Creating isolated scanner");
@@ -529,7 +531,7 @@ public abstract class AbstractInputFormat<K,V> implements InputFormat<K,V> {
             log.info("Using local iterators");
             scanner = new ClientSideIteratorScanner(scanner);
           }
-          setupIterators(job, scanner, split.getTableName(), split);
+          setupIterators(job, scanner, aiSplit.getTableName(), aiSplit);
         } catch (Exception e) {
           throw new IOException(e);
         }
@@ -537,15 +539,15 @@ public abstract class AbstractInputFormat<K,V> implements InputFormat<K,V> {
         scanner.setRange(rangeSplit.getRange());
         scannerBase = scanner;
 
-      } else if (split instanceof BatchInputSplit) {
+      } else if (aiSplit instanceof BatchInputSplit) {
         BatchScanner scanner;
-        BatchInputSplit multiRangeSplit = (BatchInputSplit) split;
+        BatchInputSplit multiRangeSplit = (BatchInputSplit) aiSplit;
 
         try{
           // Note: BatchScanner will use at most one thread per tablet, currently BatchInputSplit will not span tablets
           int scanThreads = 1;
-          scanner = instance.getConnector(principal, token).createBatchScanner(split.getTableName(), authorizations, scanThreads);
-          setupIterators(job, scanner, split.getTableName(), split);
+          scanner = instance.getConnector(principal, token).createBatchScanner(aiSplit.getTableName(), authorizations, scanThreads);
+          setupIterators(job, scanner, aiSplit.getTableName(), aiSplit);
         } catch (Exception e) {
           throw new IOException(e);
         }
@@ -554,10 +556,10 @@ public abstract class AbstractInputFormat<K,V> implements InputFormat<K,V> {
         scannerBase = scanner;
 
       } else {
-        throw new IllegalArgumentException("Can not initialize from " + split.getClass().toString());
+        throw new IllegalArgumentException("Can not initialize from " + aiSplit.getClass().toString());
       }
 
-      Collection<Pair<Text,Text>> columns = split.getFetchedColumns();
+      Collection<Pair<Text,Text>> columns = aiSplit.getFetchedColumns();
       if (null == columns) {
         columns = tableConfig.getFetchedColumns();
       }
@@ -593,7 +595,7 @@ public abstract class AbstractInputFormat<K,V> implements InputFormat<K,V> {
     public float getProgress() throws IOException {
       if (numKeysRead > 0 && currentKey == null)
         return 1.0f;
-      return split.getProgress(currentKey);
+      return aiSplit.getProgress(currentKey);
     }
 
     protected Key currentKey = null;
@@ -721,7 +723,7 @@ public abstract class AbstractInputFormat<K,V> implements InputFormat<K,V> {
               clippedRanges.add(ke.clip(r));
 
             BatchInputSplit split = new BatchInputSplit(tableName, tableId, clippedRanges, new String[] {location});
-            AccumuloInputSplit.updateSplit(split, instance, tableConfig, principal, token, auths, logLevel);
+            SplitUtils.updateSplit(split, instance, tableConfig, principal, token, auths, logLevel);
 
             splits.add(split);
           } else {
@@ -730,7 +732,7 @@ public abstract class AbstractInputFormat<K,V> implements InputFormat<K,V> {
               if (autoAdjust) {
                 // divide ranges into smaller ranges, based on the tablets
                 RangeInputSplit split = new RangeInputSplit(tableName, tableId, ke.clip(r), new String[] {location});
-                AccumuloInputSplit.updateSplit(split, instance, tableConfig, principal, token, auths, logLevel);
+                SplitUtils.updateSplit(split, instance, tableConfig, principal, token, auths, logLevel);
                 split.setOffline(tableConfig.isOfflineScan());
                 split.setIsolatedScan(tableConfig.shouldUseIsolatedScanners());
                 split.setUsesLocalIterators(tableConfig.shouldUseLocalIterators());
@@ -752,7 +754,7 @@ public abstract class AbstractInputFormat<K,V> implements InputFormat<K,V> {
       if (!autoAdjust)
         for (Map.Entry<Range,ArrayList<String>> entry : splitsToAdd.entrySet()) {
           RangeInputSplit split = new RangeInputSplit(tableName, tableId, entry.getKey(), entry.getValue().toArray(new String[0]));
-          AccumuloInputSplit.updateSplit(split, instance, tableConfig, principal, token, auths, logLevel);
+          SplitUtils.updateSplit(split, instance, tableConfig, principal, token, auths, logLevel);
           split.setOffline(tableConfig.isOfflineScan());
           split.setIsolatedScan(tableConfig.shouldUseIsolatedScanners());
           split.setUsesLocalIterators(tableConfig.shouldUseLocalIterators());

http://git-wip-us.apache.org/repos/asf/accumulo/blob/d1e6e79c/core/src/main/java/org/apache/accumulo/core/client/mapreduce/AbstractInputFormat.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/mapreduce/AbstractInputFormat.java b/core/src/main/java/org/apache/accumulo/core/client/mapreduce/AbstractInputFormat.java
index c7a304c..d402bb0 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/mapreduce/AbstractInputFormat.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/mapreduce/AbstractInputFormat.java
@@ -29,13 +29,14 @@ import java.util.Random;
 
 import org.apache.accumulo.core.client.AccumuloException;
 import org.apache.accumulo.core.client.AccumuloSecurityException;
+import org.apache.accumulo.core.client.BatchScanner;
 import org.apache.accumulo.core.client.ClientConfiguration;
 import org.apache.accumulo.core.client.ClientSideIteratorScanner;
 import org.apache.accumulo.core.client.Connector;
 import org.apache.accumulo.core.client.Instance;
 import org.apache.accumulo.core.client.IsolatedScanner;
+import org.apache.accumulo.core.client.IteratorSetting;
 import org.apache.accumulo.core.client.Scanner;
-import org.apache.accumulo.core.client.BatchScanner;
 import org.apache.accumulo.core.client.ScannerBase;
 import org.apache.accumulo.core.client.TableDeletedException;
 import org.apache.accumulo.core.client.TableNotFoundException;
@@ -52,6 +53,7 @@ import org.apache.accumulo.core.client.impl.Tables;
 import org.apache.accumulo.core.client.impl.TabletLocator;
 import org.apache.accumulo.core.client.mapreduce.impl.AccumuloInputSplit;
 import org.apache.accumulo.core.client.mapreduce.impl.BatchInputSplit;
+import org.apache.accumulo.core.client.mapreduce.impl.SplitUtils;
 import org.apache.accumulo.core.client.mapreduce.lib.impl.ConfiguratorBase;
 import org.apache.accumulo.core.client.mapreduce.lib.impl.InputConfigurator;
 import org.apache.accumulo.core.client.mock.MockInstance;
@@ -67,7 +69,6 @@ import org.apache.accumulo.core.master.state.tables.TableState;
 import org.apache.accumulo.core.security.Authorizations;
 import org.apache.accumulo.core.util.Pair;
 import org.apache.accumulo.core.util.UtilWaitThread;
-import org.apache.accumulo.core.client.IteratorSetting;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.io.Text;
 import org.apache.hadoop.mapreduce.InputFormat;
@@ -425,7 +426,8 @@ public abstract class AbstractInputFormat<K,V> extends InputFormat<K,V> {
     protected long numKeysRead;
     protected Iterator<Map.Entry<Key,Value>> scannerIterator;
     protected ScannerBase scannerBase;
-    protected AccumuloInputSplit split;
+    protected RangeInputSplit split;
+    private AccumuloInputSplit aiSplit;
 
     /**
      * Extracts Iterators settings from the context to be used by RecordReader.
@@ -489,41 +491,42 @@ public abstract class AbstractInputFormat<K,V> extends InputFormat<K,V> {
     @Override
     public void initialize(InputSplit inSplit, TaskAttemptContext attempt) throws IOException {
 
-      split = (AccumuloInputSplit) inSplit;
-      log.debug("Initializing input split: " + split.toString());
+      aiSplit = (AccumuloInputSplit) inSplit;
+      log.debug("Initializing input split: " + aiSplit.toString());
 
-      Instance instance = split.getInstance(getClientConfiguration(attempt));
+      Instance instance = aiSplit.getInstance(getClientConfiguration(attempt));
       if (null == instance) {
         instance = getInstance(attempt);
       }
 
-      String principal = split.getPrincipal();
+      String principal = aiSplit.getPrincipal();
       if (null == principal) {
         principal = getPrincipal(attempt);
       }
 
-      AuthenticationToken token = split.getToken();
+      AuthenticationToken token = aiSplit.getToken();
       if (null == token) {
         token = getAuthenticationToken(attempt);
       }
 
-      Authorizations authorizations = split.getAuths();
+      Authorizations authorizations = aiSplit.getAuths();
       if (null == authorizations) {
         authorizations = getScanAuthorizations(attempt);
       }
 
-      String table = split.getTableName();
+      String table = aiSplit.getTableName();
 
       // in case the table name changed, we can still use the previous name for terms of configuration,
       // but the scanner will use the table id resolved at job setup time
-      InputTableConfig tableConfig = getInputTableConfig(attempt, split.getTableName());
+      InputTableConfig tableConfig = getInputTableConfig(attempt, aiSplit.getTableName());
 
       log.debug("Creating connector with user: " + principal);
       log.debug("Creating scanner for table: " + table);
       log.debug("Authorizations are: " + authorizations);
 
-      if (split instanceof RangeInputSplit) {
-        RangeInputSplit rangeSplit = (RangeInputSplit) split;
+      if (aiSplit instanceof RangeInputSplit) {
+        RangeInputSplit rangeSplit = (RangeInputSplit) aiSplit;
+        split = rangeSplit;
         Scanner scanner;
 
         Boolean isOffline = rangeSplit.isOffline();
@@ -543,13 +546,13 @@ public abstract class AbstractInputFormat<K,V> extends InputFormat<K,V> {
 
         try {
           if (isOffline) {
-            scanner = new OfflineScanner(instance, new Credentials(principal, token), split.getTableId(), authorizations);
+            scanner = new OfflineScanner(instance, new Credentials(principal, token), aiSplit.getTableId(), authorizations);
           } else if (instance instanceof MockInstance) {
-            scanner = instance.getConnector(principal, token).createScanner(split.getTableName(), authorizations);
+            scanner = instance.getConnector(principal, token).createScanner(aiSplit.getTableName(), authorizations);
           } else {
             ClientConfiguration clientConf = getClientConfiguration(attempt);
             ClientContext context = new ClientContext(instance, new Credentials(principal, token), clientConf);
-            scanner = new ScannerImpl(context, split.getTableId(), authorizations);
+            scanner = new ScannerImpl(context, aiSplit.getTableId(), authorizations);
           }
           if (isIsolated) {
             log.info("Creating isolated scanner");
@@ -560,7 +563,7 @@ public abstract class AbstractInputFormat<K,V> extends InputFormat<K,V> {
             scanner = new ClientSideIteratorScanner(scanner);
           }
 
-          setupIterators(attempt, scanner, split.getTableName(), split);
+          setupIterators(attempt, scanner, aiSplit.getTableName(), aiSplit);
         } catch (Exception e) {
           throw new IOException(e);
         }
@@ -568,16 +571,17 @@ public abstract class AbstractInputFormat<K,V> extends InputFormat<K,V> {
         scanner.setRange(rangeSplit.getRange());
         scannerBase = scanner;
 
-      } else  if (split instanceof BatchInputSplit) {
-        BatchInputSplit batchSplit = (BatchInputSplit) split;
+      } else  if (aiSplit instanceof BatchInputSplit) {
+        BatchInputSplit batchSplit = (BatchInputSplit) aiSplit;
 
         BatchScanner scanner;
         try{
           // Note: BatchScanner will use at most one thread per tablet, currently BatchInputSplit will not span tablets
           int scanThreads = 1;
-          scanner = instance.getConnector(principal, token).createBatchScanner(split.getTableName(), authorizations, scanThreads);
-          setupIterators(attempt, scanner, split.getTableName(), split);
+          scanner = instance.getConnector(principal, token).createBatchScanner(aiSplit.getTableName(), authorizations, scanThreads);
+          setupIterators(attempt, scanner, aiSplit.getTableName(), aiSplit);
         } catch (Exception e) {
+          e.printStackTrace();
           throw new IOException(e);
         }
 
@@ -585,7 +589,7 @@ public abstract class AbstractInputFormat<K,V> extends InputFormat<K,V> {
         scannerBase = scanner;
       }
 
-      Collection<Pair<Text,Text>> columns = split.getFetchedColumns();
+      Collection<Pair<Text,Text>> columns = aiSplit.getFetchedColumns();
       if (null == columns) {
         columns = tableConfig.getFetchedColumns();
       }
@@ -616,7 +620,7 @@ public abstract class AbstractInputFormat<K,V> extends InputFormat<K,V> {
     public float getProgress() throws IOException {
       if (numKeysRead > 0 && currentKey == null)
         return 1.0f;
-      return split.getProgress(currentKey);
+      return aiSplit.getProgress(currentKey);
     }
 
     /**
@@ -767,7 +771,7 @@ public abstract class AbstractInputFormat<K,V> extends InputFormat<K,V> {
             for(Range r: extentRanges.getValue())
               clippedRanges.add(ke.clip(r));
             BatchInputSplit split = new BatchInputSplit(tableName, tableId, clippedRanges, new String[] {location});
-            AccumuloInputSplit.updateSplit(split, instance, tableConfig, principal, token, auths, logLevel);
+            SplitUtils.updateSplit(split, instance, tableConfig, principal, token, auths, logLevel);
 
             splits.add(split);
           } else {
@@ -776,7 +780,7 @@ public abstract class AbstractInputFormat<K,V> extends InputFormat<K,V> {
               if (autoAdjust) {
                 // divide ranges into smaller ranges, based on the tablets
                 RangeInputSplit split = new RangeInputSplit(tableName, tableId, ke.clip(r), new String[] {location});
-                AccumuloInputSplit.updateSplit(split, instance, tableConfig, principal, token, auths, logLevel);
+                SplitUtils.updateSplit(split, instance, tableConfig, principal, token, auths, logLevel);
                 split.setOffline(tableConfig.isOfflineScan());
                 split.setIsolatedScan(tableConfig.shouldUseIsolatedScanners());
                 split.setUsesLocalIterators(tableConfig.shouldUseLocalIterators());
@@ -798,7 +802,7 @@ public abstract class AbstractInputFormat<K,V> extends InputFormat<K,V> {
       if (!autoAdjust)
         for (Map.Entry<Range,ArrayList<String>> entry : splitsToAdd.entrySet()) {
           RangeInputSplit split = new RangeInputSplit(tableName, tableId, entry.getKey(), entry.getValue().toArray(new String[0]));
-          AccumuloInputSplit.updateSplit(split, instance, tableConfig, principal, token, auths, logLevel);
+          SplitUtils.updateSplit(split, instance, tableConfig, principal, token, auths, logLevel);
           split.setOffline(tableConfig.isOfflineScan());
           split.setIsolatedScan(tableConfig.shouldUseIsolatedScanners());
           split.setUsesLocalIterators(tableConfig.shouldUseLocalIterators());

http://git-wip-us.apache.org/repos/asf/accumulo/blob/d1e6e79c/core/src/main/java/org/apache/accumulo/core/client/mapreduce/RangeInputSplit.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/mapreduce/RangeInputSplit.java b/core/src/main/java/org/apache/accumulo/core/client/mapreduce/RangeInputSplit.java
index 6c870a0..9851192 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/mapreduce/RangeInputSplit.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/mapreduce/RangeInputSplit.java
@@ -19,9 +19,9 @@ package org.apache.accumulo.core.client.mapreduce;
 import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
-import java.util.Arrays;
 
 import org.apache.accumulo.core.client.mapreduce.impl.AccumuloInputSplit;
+import org.apache.accumulo.core.client.mapreduce.impl.SplitUtils;
 import org.apache.accumulo.core.data.Key;
 import org.apache.accumulo.core.data.PartialKey;
 import org.apache.accumulo.core.data.Range;
@@ -47,6 +47,7 @@ public class RangeInputSplit extends AccumuloInputSplit {
     this.range = range;
   }
 
+  @Override
   public float getProgress(Key currentKey) {
     if (currentKey == null)
       return 0f;
@@ -55,13 +56,13 @@ public class RangeInputSplit extends AccumuloInputSplit {
       if (range.getStartKey() != null && range.getEndKey() != null) {
         if (range.getStartKey().compareTo(range.getEndKey(), PartialKey.ROW) != 0) {
           // just look at the row progress
-          return getProgress(range.getStartKey().getRowData(), range.getEndKey().getRowData(), currentKey.getRowData());
+          return SplitUtils.getProgress(range.getStartKey().getRowData(), range.getEndKey().getRowData(), currentKey.getRowData());
         } else if (range.getStartKey().compareTo(range.getEndKey(), PartialKey.ROW_COLFAM) != 0) {
           // just look at the column family progress
-          return getProgress(range.getStartKey().getColumnFamilyData(), range.getEndKey().getColumnFamilyData(), currentKey.getColumnFamilyData());
+          return SplitUtils.getProgress(range.getStartKey().getColumnFamilyData(), range.getEndKey().getColumnFamilyData(), currentKey.getColumnFamilyData());
         } else if (range.getStartKey().compareTo(range.getEndKey(), PartialKey.ROW_COLFAM_COLQUAL) != 0) {
           // just look at the column qualifier progress
-          return getProgress(range.getStartKey().getColumnQualifierData(), range.getEndKey().getColumnQualifierData(), currentKey.getColumnQualifierData());
+          return SplitUtils.getProgress(range.getStartKey().getColumnQualifierData(), range.getEndKey().getColumnQualifierData(), currentKey.getColumnQualifierData());
         }
       }
     }
@@ -124,23 +125,10 @@ public class RangeInputSplit extends AccumuloInputSplit {
     StringBuilder sb = new StringBuilder(256);
     sb.append("RangeInputSplit:");
     sb.append(" Range: ").append(range);
-    sb.append(" Locations: ").append(Arrays.asList(locations));
-    sb.append(" Table: ").append(tableName);
-    sb.append(" TableID: ").append(tableId);
-    sb.append(" InstanceName: ").append(instanceName);
-    sb.append(" zooKeepers: ").append(zooKeepers);
-    sb.append(" principal: ").append(principal);
-    sb.append(" tokenSource: ").append(tokenSource);
-    sb.append(" authenticationToken: ").append(token);
-    sb.append(" authenticationTokenFile: ").append(tokenFile);
-    sb.append(" Authorizations: ").append(auths);
+    sb.append(super.toString());
     sb.append(" offlineScan: ").append(offline);
-    sb.append(" mockInstance: ").append(mockInstance);
     sb.append(" isolatedScan: ").append(isolatedScan);
     sb.append(" localIterators: ").append(localIterators);
-    sb.append(" fetchColumns: ").append(fetchedColumns);
-    sb.append(" iterators: ").append(iterators);
-    sb.append(" logLevel: ").append(level);
     return sb.toString();
   }
 

http://git-wip-us.apache.org/repos/asf/accumulo/blob/d1e6e79c/core/src/main/java/org/apache/accumulo/core/client/mapreduce/impl/AccumuloInputSplit.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/mapreduce/impl/AccumuloInputSplit.java b/core/src/main/java/org/apache/accumulo/core/client/mapreduce/impl/AccumuloInputSplit.java
index 94d0026..7f83936 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/mapreduce/impl/AccumuloInputSplit.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/mapreduce/impl/AccumuloInputSplit.java
@@ -21,7 +21,6 @@ import static java.nio.charset.StandardCharsets.UTF_8;
 import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
-import java.math.BigInteger;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -33,18 +32,17 @@ import org.apache.accumulo.core.client.ClientConfiguration;
 import org.apache.accumulo.core.client.Instance;
 import org.apache.accumulo.core.client.IteratorSetting;
 import org.apache.accumulo.core.client.ZooKeeperInstance;
-import org.apache.accumulo.core.client.mapreduce.InputTableConfig;
 import org.apache.accumulo.core.client.mapreduce.lib.impl.ConfiguratorBase.TokenSource;
 import org.apache.accumulo.core.client.mapreduce.lib.impl.InputConfigurator;
 import org.apache.accumulo.core.client.mock.MockInstance;
 import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
 import org.apache.accumulo.core.client.security.tokens.AuthenticationToken.AuthenticationTokenSerializer;
 import org.apache.accumulo.core.data.ByteSequence;
+import org.apache.accumulo.core.data.Key;
 import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.security.Authorizations;
 import org.apache.accumulo.core.util.Base64;
 import org.apache.accumulo.core.util.Pair;
-import org.apache.accumulo.core.data.Key;
 import org.apache.hadoop.io.Text;
 import org.apache.hadoop.io.Writable;
 import org.apache.hadoop.mapreduce.InputSplit;
@@ -58,16 +56,16 @@ import org.apache.log4j.Level;
  * @see org.apache.accumulo.core.client.mapreduce.impl.BatchInputSplit
  */
 public abstract class AccumuloInputSplit extends InputSplit implements Writable {
-  protected String[] locations;
-  protected String tableId, tableName, instanceName, zooKeepers, principal;
-  protected TokenSource tokenSource;
-  protected String tokenFile;
-  protected AuthenticationToken token;
-  protected Boolean mockInstance;
-  protected Authorizations auths;
-  protected Set<Pair<Text,Text>> fetchedColumns;
-  protected List<IteratorSetting> iterators;
-  protected Level level;
+  private String[] locations;
+  private String tableId, tableName, instanceName, zooKeepers, principal;
+  private TokenSource tokenSource;
+  private String tokenFile;
+  private AuthenticationToken token;
+  private Boolean mockInstance;
+  private Authorizations auths;
+  private Set<Pair<Text,Text>> fetchedColumns;
+  private List<IteratorSetting> iterators;
+  private Level level;
 
   public abstract float getProgress(Key currentKey);
 
@@ -89,26 +87,7 @@ public abstract class AccumuloInputSplit extends InputSplit implements Writable
     this.tableId = tableId;
   }
 
-  /**
-   * Central place to set common split configuration not handled by split constructors.
-   * The intention is to make it harder to miss optional setters in future refactor.
-   */
-  public static void updateSplit(AccumuloInputSplit split,  Instance instance, InputTableConfig tableConfig,
-                                  String principal, AuthenticationToken token, Authorizations auths, Level logLevel) {
-    split.setInstanceName(instance.getInstanceName());
-    split.setZooKeepers(instance.getZooKeepers());
-    split.setMockInstance(instance instanceof MockInstance);
-
-    split.setPrincipal(principal);
-    split.setToken(token);
-    split.setAuths(auths);
-
-    split.setFetchedColumns(tableConfig.getFetchedColumns());
-    split.setIterators(tableConfig.getIterators());
-    split.setLogLevel(logLevel);
-  }
-
-  private static byte[] extractBytes(ByteSequence seq, int numBytes) {
+  static byte[] extractBytes(ByteSequence seq, int numBytes) {
     byte[] bytes = new byte[numBytes + 1];
     bytes[0] = 0;
     for (int i = 0; i < numBytes; i++) {
@@ -120,14 +99,6 @@ public abstract class AccumuloInputSplit extends InputSplit implements Writable
     return bytes;
   }
 
-  public static float getProgress(ByteSequence start, ByteSequence end, ByteSequence position) {
-    int maxDepth = Math.min(Math.max(end.length(), start.length()), position.length());
-    BigInteger startBI = new BigInteger(extractBytes(start, maxDepth));
-    BigInteger endBI = new BigInteger(extractBytes(end, maxDepth));
-    BigInteger positionBI = new BigInteger(extractBytes(position, maxDepth));
-    return (float) (positionBI.subtract(startBI).doubleValue() / endBI.subtract(startBI).doubleValue());
-  }
-
   public long getRangeLength(Range range) throws IOException {
     Text startRow = range.isInfiniteStartKey() ? new Text(new byte[] {Byte.MIN_VALUE}) : range.getStartKey().getRow();
     Text stopRow = range.isInfiniteStopKey() ? new Text(new byte[] {Byte.MAX_VALUE}) : range.getEndKey().getRow();
@@ -442,4 +413,24 @@ public abstract class AccumuloInputSplit extends InputSplit implements Writable
   public void setLogLevel(Level level) {
     this.level = level;
   }
+
+  @Override
+  public String toString(){
+    StringBuilder sb = new StringBuilder(256);
+    sb.append(" Locations: ").append(Arrays.asList(locations));
+    sb.append(" Table: ").append(tableName);
+    sb.append(" TableID: ").append(tableId);
+    sb.append(" InstanceName: ").append(instanceName);
+    sb.append(" zooKeepers: ").append(zooKeepers);
+    sb.append(" principal: ").append(principal);
+    sb.append(" tokenSource: ").append(tokenSource);
+    sb.append(" authenticationToken: ").append(token);
+    sb.append(" authenticationTokenFile: ").append(tokenFile);
+    sb.append(" Authorizations: ").append(auths);
+    sb.append(" mockInstance: ").append(mockInstance);
+    sb.append(" fetchColumns: ").append(fetchedColumns);
+    sb.append(" iterators: ").append(iterators);
+    sb.append(" logLevel: ").append(level);
+    return sb.toString();
+  }
 }

http://git-wip-us.apache.org/repos/asf/accumulo/blob/d1e6e79c/core/src/main/java/org/apache/accumulo/core/client/mapreduce/impl/BatchInputSplit.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/mapreduce/impl/BatchInputSplit.java b/core/src/main/java/org/apache/accumulo/core/client/mapreduce/impl/BatchInputSplit.java
index 269622a..24b9ef3 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/mapreduce/impl/BatchInputSplit.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/mapreduce/impl/BatchInputSplit.java
@@ -53,6 +53,7 @@ public class BatchInputSplit extends AccumuloInputSplit {
   /**
    * Save progress on each call to this function, implied by value of currentKey, and return average ranges in the split
    */
+  @Override
   public float getProgress(Key currentKey) {
     if (null == rangeProgress)
       rangeProgress = new float[ranges.size()];
@@ -70,13 +71,13 @@ public class BatchInputSplit extends AccumuloInputSplit {
           if (range.getStartKey() != null && range.getEndKey() != null) {
             if (range.getStartKey().compareTo(range.getEndKey(), PartialKey.ROW) != 0) {
               // just look at the row progress
-              rangeProgress[i] = getProgress(range.getStartKey().getRowData(), range.getEndKey().getRowData(), currentKey.getRowData());
+              rangeProgress[i] = SplitUtils.getProgress(range.getStartKey().getRowData(), range.getEndKey().getRowData(), currentKey.getRowData());
             } else if (range.getStartKey().compareTo(range.getEndKey(), PartialKey.ROW_COLFAM) != 0) {
               // just look at the column family progress
-              rangeProgress[i] = getProgress(range.getStartKey().getColumnFamilyData(), range.getEndKey().getColumnFamilyData(), currentKey.getColumnFamilyData());
+              rangeProgress[i] = SplitUtils.getProgress(range.getStartKey().getColumnFamilyData(), range.getEndKey().getColumnFamilyData(), currentKey.getColumnFamilyData());
             } else if (range.getStartKey().compareTo(range.getEndKey(), PartialKey.ROW_COLFAM_COLQUAL) != 0) {
               // just look at the column qualifier progress
-              rangeProgress[i] = getProgress(range.getStartKey().getColumnQualifierData(), range.getEndKey().getColumnQualifierData(), currentKey.getColumnQualifierData());
+              rangeProgress[i] = SplitUtils.getProgress(range.getStartKey().getColumnQualifierData(), range.getEndKey().getColumnQualifierData(), currentKey.getColumnQualifierData());
             }
           }
           total += rangeProgress[i];
@@ -126,19 +127,7 @@ public class BatchInputSplit extends AccumuloInputSplit {
     StringBuilder sb = new StringBuilder(256);
     sb.append("BatchInputSplit:");
     sb.append(" Ranges: ").append(Arrays.asList(ranges));
-    sb.append(" Location: ").append(Arrays.asList(locations));
-    sb.append(" Table: ").append(tableName);
-    sb.append(" TableID: ").append(tableId);
-    sb.append(" InstanceName: ").append(instanceName);
-    sb.append(" zooKeepers: ").append(zooKeepers);
-    sb.append(" principal: ").append(principal);
-    sb.append(" tokenSource: ").append(tokenSource);
-    sb.append(" authenticationToken: ").append(token);
-    sb.append(" authenticationTokenFile: ").append(tokenFile);
-    sb.append(" Authorizations: ").append(auths);
-    sb.append(" fetchColumns: ").append(fetchedColumns);
-    sb.append(" iterators: ").append(iterators);
-    sb.append(" logLevel: ").append(level);
+    sb.append(super.toString());
     return sb.toString();
   }
 

http://git-wip-us.apache.org/repos/asf/accumulo/blob/d1e6e79c/core/src/main/java/org/apache/accumulo/core/client/mapreduce/impl/SplitUtils.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/mapreduce/impl/SplitUtils.java b/core/src/main/java/org/apache/accumulo/core/client/mapreduce/impl/SplitUtils.java
new file mode 100644
index 0000000..0aee665
--- /dev/null
+++ b/core/src/main/java/org/apache/accumulo/core/client/mapreduce/impl/SplitUtils.java
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
+package org.apache.accumulo.core.client.mapreduce.impl;
+
+import java.math.BigInteger;
+
+import org.apache.accumulo.core.client.Instance;
+import org.apache.accumulo.core.client.mapreduce.InputTableConfig;
+import org.apache.accumulo.core.client.mock.MockInstance;
+import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
+import org.apache.accumulo.core.data.ByteSequence;
+import org.apache.accumulo.core.security.Authorizations;
+import org.apache.log4j.Level;
+
+public class SplitUtils {
+
+  /**
+   * Central place to set common split configuration not handled by split constructors.
+   * The intention is to make it harder to miss optional setters in future refactor.
+   */
+  public static void updateSplit(AccumuloInputSplit split,  Instance instance, InputTableConfig tableConfig,
+                                  String principal, AuthenticationToken token, Authorizations auths, Level logLevel) {
+    split.setInstanceName(instance.getInstanceName());
+    split.setZooKeepers(instance.getZooKeepers());
+    split.setMockInstance(instance instanceof MockInstance);
+
+    split.setPrincipal(principal);
+    split.setToken(token);
+    split.setAuths(auths);
+
+    split.setFetchedColumns(tableConfig.getFetchedColumns());
+    split.setIterators(tableConfig.getIterators());
+    split.setLogLevel(logLevel);
+  }
+
+  public static float getProgress(ByteSequence start, ByteSequence end, ByteSequence position) {
+    int maxDepth = Math.min(Math.max(end.length(), start.length()), position.length());
+    BigInteger startBI = new BigInteger(AccumuloInputSplit.extractBytes(start, maxDepth));
+    BigInteger endBI = new BigInteger(AccumuloInputSplit.extractBytes(end, maxDepth));
+    BigInteger positionBI = new BigInteger(AccumuloInputSplit.extractBytes(position, maxDepth));
+    return (float) (positionBI.subtract(startBI).doubleValue() / endBI.subtract(startBI).doubleValue());
+  }
+
+}