This is an automated email from the ASF dual-hosted git repository.

mmiller pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/accumulo.git


The following commit(s) were added to refs/heads/main by this push:
     new d3b41fc  Migrate Constraints to API (#1985)
d3b41fc is described below

commit d3b41fc0ac5da70aab86e6fb95852353b9a167aa
Author: Mike Miller <mmil...@apache.org>
AuthorDate: Wed Apr 28 14:25:18 2021 -0400

    Migrate Constraints to API (#1985)
    
    * Create new Constraint API and equivalent classes under the
    o.a.a.core.data.constraints package to become public API
    * Deprecated Constraint and classes under o.a.a.core.constraints package
    and make the old classes extend the new API
    * Migrate tests to go along with API changes
    * Create DeprecatedConstraintExtendTest to test user extending old API
    * Add DefaultKeySizeConstraintTest to reuseForks exceptions
---
 core/pom.xml                                       |  2 +
 .../core/clientImpl/NamespaceOperationsImpl.java   |  2 +-
 .../core/clientImpl/TableOperationsImpl.java       |  2 +-
 .../apache/accumulo/core/conf/IterConfigUtil.java  |  2 +-
 .../org/apache/accumulo/core/conf/Property.java    |  2 +-
 .../accumulo/core/constraints/Constraint.java      | 26 ++----
 .../core/constraints/DefaultKeySizeConstraint.java | 13 ++-
 .../core/constraints/NoDeleteConstraint.java       | 12 ++-
 .../core/constraints/VisibilityConstraint.java     | 13 ++-
 .../core/{ => data}/constraints/Constraint.java    | 19 +++--
 .../constraints/DefaultKeySizeConstraint.java      |  4 +-
 .../{ => data}/constraints/NoDeleteConstraint.java |  4 +-
 .../constraints/VisibilityConstraint.java          |  4 +-
 .../constraints/DefaultKeySizeConstraintTest.java  |  1 +
 .../DeprecatedConstraintExtendTest.java            | 97 ++++++++++++++++++++++
 .../core/constraints/NoDeleteConstraintTest.java   |  1 +
 .../VisibilityConstraintTest.java                  | 11 +--
 .../constraints/DefaultKeySizeConstraintTest.java  |  7 +-
 .../constraints/NoDeleteConstraintTest.java        |  2 +-
 .../constraints}/VisibilityConstraintTest.java     |  7 +-
 .../server/constraints/MetadataConstraints.java    |  2 +-
 .../server/constraints/SystemEnvironment.java      |  2 +-
 .../server/metadata/RootTabletMutatorImpl.java     | 15 +++-
 .../accumulo/tserver/TservConstraintEnv.java       | 21 +++--
 .../tserver/constraints/ConstraintChecker.java     | 20 ++++-
 .../tserver/constraints/SystemConstraint.java      |  2 +-
 .../constraints/UnsatisfiableConstraint.java       |  2 +-
 .../tserver/constraints/ConstraintCheckerTest.java | 34 ++++----
 .../accumulo/shell/commands/ConstraintCommand.java |  2 +-
 .../shell/commands/CreateTableCommand.java         |  2 +-
 .../apache/accumulo/test/TableOperationsIT.java    |  2 +-
 .../test/constraints/AlphaNumKeyConstraint.java    |  2 +-
 .../accumulo/test/constraints/MaxMutationSize.java |  2 +-
 .../test/constraints/NumericValueConstraint.java   |  2 +-
 .../accumulo/test/functional/SlowConstraint.java   |  2 +-
 35 files changed, 252 insertions(+), 91 deletions(-)

diff --git a/core/pom.xml b/core/pom.xml
index 36d9dc6..e546886 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -206,6 +206,7 @@
               <exclude>**/IdleRatioScanPrioritizerTest.java</exclude>
               <exclude>**/TestCfCqSlice.java</exclude>
               <exclude>**/TestCfCqSliceSeekingFilter.java</exclude>
+              
<exclude>**/core/constraints/DefaultKeySizeConstraintTest.java</exclude>
             </excludes>
           </configuration>
           <executions>
@@ -223,6 +224,7 @@
                   <include>**/IdleRatioScanPrioritizerTest.java</include>
                   <include>**/TestCfCqSlice.java</include>
                   <include>**/TestCfCqSliceSeekingFilter.java</include>
+                  
<exclude>**/core/constraints/DefaultKeySizeConstraintTest.java</exclude>
                 </includes>
               </configuration>
             </execution>
diff --git 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/NamespaceOperationsImpl.java
 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/NamespaceOperationsImpl.java
index 126b977..979d891 100644
--- 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/NamespaceOperationsImpl.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/NamespaceOperationsImpl.java
@@ -49,8 +49,8 @@ import org.apache.accumulo.core.client.admin.TableOperations;
 import org.apache.accumulo.core.clientImpl.thrift.SecurityErrorCode;
 import org.apache.accumulo.core.clientImpl.thrift.ThriftSecurityException;
 import 
org.apache.accumulo.core.clientImpl.thrift.ThriftTableOperationException;
-import org.apache.accumulo.core.constraints.Constraint;
 import org.apache.accumulo.core.data.NamespaceId;
+import org.apache.accumulo.core.data.constraints.Constraint;
 import org.apache.accumulo.core.iterators.IteratorUtil.IteratorScope;
 import org.apache.accumulo.core.iterators.SortedKeyValueIterator;
 import org.apache.accumulo.core.manager.thrift.FateOperation;
diff --git 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/TableOperationsImpl.java
 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/TableOperationsImpl.java
index de64166..4b630e2 100644
--- 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/TableOperationsImpl.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/TableOperationsImpl.java
@@ -99,11 +99,11 @@ import 
org.apache.accumulo.core.clientImpl.thrift.ThriftTableOperationException;
 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.constraints.Constraint;
 import org.apache.accumulo.core.data.ByteSequence;
 import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.TableId;
 import org.apache.accumulo.core.data.TabletId;
+import org.apache.accumulo.core.data.constraints.Constraint;
 import org.apache.accumulo.core.dataImpl.KeyExtent;
 import org.apache.accumulo.core.dataImpl.TabletIdImpl;
 import org.apache.accumulo.core.dataImpl.thrift.TRowRange;
diff --git 
a/core/src/main/java/org/apache/accumulo/core/conf/IterConfigUtil.java 
b/core/src/main/java/org/apache/accumulo/core/conf/IterConfigUtil.java
index 605e69f..4734739 100644
--- a/core/src/main/java/org/apache/accumulo/core/conf/IterConfigUtil.java
+++ b/core/src/main/java/org/apache/accumulo/core/conf/IterConfigUtil.java
@@ -33,9 +33,9 @@ import java.util.TreeMap;
 
 import org.apache.accumulo.core.classloader.ClassLoaderUtil;
 import org.apache.accumulo.core.client.IteratorSetting;
-import org.apache.accumulo.core.constraints.DefaultKeySizeConstraint;
 import org.apache.accumulo.core.data.Key;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.constraints.DefaultKeySizeConstraint;
 import org.apache.accumulo.core.dataImpl.thrift.IterInfo;
 import org.apache.accumulo.core.iterators.IteratorEnvironment;
 import org.apache.accumulo.core.iterators.IteratorUtil.IteratorScope;
diff --git a/core/src/main/java/org/apache/accumulo/core/conf/Property.java 
b/core/src/main/java/org/apache/accumulo/core/conf/Property.java
index f8490d8..30b9ce1 100644
--- a/core/src/main/java/org/apache/accumulo/core/conf/Property.java
+++ b/core/src/main/java/org/apache/accumulo/core/conf/Property.java
@@ -26,7 +26,7 @@ import java.util.HashSet;
 import org.apache.accumulo.core.Constants;
 import org.apache.accumulo.core.classloader.ClassLoaderUtil;
 import org.apache.accumulo.core.client.security.tokens.PasswordToken;
-import org.apache.accumulo.core.constraints.NoDeleteConstraint;
+import org.apache.accumulo.core.data.constraints.NoDeleteConstraint;
 import org.apache.accumulo.core.file.rfile.RFile;
 import org.apache.accumulo.core.iterators.IteratorUtil.IteratorScope;
 import org.apache.accumulo.core.iteratorsImpl.system.DeletingIterator;
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 c6ff5f7..3414970 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
@@ -24,30 +24,22 @@ import org.apache.accumulo.core.data.Mutation;
 import org.apache.accumulo.core.dataImpl.KeyExtent;
 import org.apache.accumulo.core.security.AuthorizationContainer;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
 /**
- * Constraint objects are used to determine if mutations will be applied to a 
table.
- *
- * <p>
- * This interface expects implementers to return violation codes. The reason 
codes are returned
- * instead of arbitrary strings to encourage conciseness. Conciseness is 
needed because violations
- * are aggregated. If a user sends a batch of 10,000 mutations to Accumulo, 
only aggregated counts
- * about which violations occurred are returned. If the constraint implementer 
were allowed to
- * return arbitrary violation strings like the following:
- *
- * <p>
- * Value "abc" is not a number<br>
- * Value "vbg" is not a number
+ * This class is replaced by {@link 
org.apache.accumulo.core.data.constraints.Constraint}
  *
- * <p>
- * This would not aggregate very well, because the same violation is 
represented with two different
- * strings.
+ * @deprecated since 2.1.0 Use {@link 
org.apache.accumulo.core.data.constraints.Constraint}
  */
-public interface Constraint {
+@Deprecated(since = "2.1.0")
+@SuppressFBWarnings(value = "NM_SAME_SIMPLE_NAME_AS_INTERFACE",
+    justification = "Same name used for compatibility during deprecation 
cycle")
+public interface Constraint extends 
org.apache.accumulo.core.data.constraints.Constraint {
 
   /**
    * The environment within which a constraint exists.
    */
-  interface Environment {
+  interface Environment extends 
org.apache.accumulo.core.data.constraints.Constraint.Environment {
     /**
      * Gets the key extent of the environment.
      *
diff --git 
a/core/src/main/java/org/apache/accumulo/core/constraints/DefaultKeySizeConstraint.java
 
b/core/src/main/java/org/apache/accumulo/core/constraints/DefaultKeySizeConstraint.java
index 3550e96..6e92a78 100644
--- 
a/core/src/main/java/org/apache/accumulo/core/constraints/DefaultKeySizeConstraint.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/constraints/DefaultKeySizeConstraint.java
@@ -24,10 +24,19 @@ import java.util.List;
 import org.apache.accumulo.core.data.ColumnUpdate;
 import org.apache.accumulo.core.data.Mutation;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
 /**
  * A constraints that limits the size of keys to 1mb.
+ *
+ * @deprecated since 2.1.0 Use
+ *             {@link 
org.apache.accumulo.core.data.constraints.DefaultKeySizeConstraint}
  */
-public class DefaultKeySizeConstraint implements Constraint {
+@Deprecated(since = "2.1.0")
+@SuppressFBWarnings(value = "NM_SAME_SIMPLE_NAME_AS_SUPERCLASS",
+    justification = "Same name used for compatibility during deprecation 
cycle")
+public class DefaultKeySizeConstraint extends
+    org.apache.accumulo.core.data.constraints.DefaultKeySizeConstraint 
implements Constraint {
 
   protected static final short MAX__KEY_SIZE_EXCEEDED_VIOLATION = 1;
   protected static final long maxSize = 1048576; // 1MB default size
@@ -46,7 +55,7 @@ public class DefaultKeySizeConstraint implements Constraint {
   static final List<Short> NO_VIOLATIONS = new ArrayList<>();
 
   @Override
-  public List<Short> check(Environment env, Mutation mutation) {
+  public List<Short> check(Constraint.Environment env, Mutation mutation) {
 
     // fast size check
     if (mutation.numBytes() < maxSize)
diff --git 
a/core/src/main/java/org/apache/accumulo/core/constraints/NoDeleteConstraint.java
 
b/core/src/main/java/org/apache/accumulo/core/constraints/NoDeleteConstraint.java
index 27a0a41..eab748e 100644
--- 
a/core/src/main/java/org/apache/accumulo/core/constraints/NoDeleteConstraint.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/constraints/NoDeleteConstraint.java
@@ -24,12 +24,19 @@ import java.util.List;
 import org.apache.accumulo.core.data.ColumnUpdate;
 import org.apache.accumulo.core.data.Mutation;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
 /**
  * This constraint ensures mutations do not have deletes.
  *
  * @since 2.0.0
+ * @deprecated since 2.1.0 Use {@link 
org.apache.accumulo.core.data.constraints.NoDeleteConstraint}
  */
-public class NoDeleteConstraint implements Constraint {
+@Deprecated(since = "2.1.0")
+@SuppressFBWarnings(value = "NM_SAME_SIMPLE_NAME_AS_SUPERCLASS",
+    justification = "Same name used for compatibility during deprecation 
cycle")
+public class NoDeleteConstraint extends 
org.apache.accumulo.core.data.constraints.NoDeleteConstraint
+    implements Constraint {
 
   @Override
   public String getViolationDescription(short violationCode) {
@@ -40,14 +47,13 @@ public class NoDeleteConstraint implements Constraint {
   }
 
   @Override
-  public List<Short> check(Environment env, Mutation mutation) {
+  public List<Short> check(Constraint.Environment env, Mutation mutation) {
     List<ColumnUpdate> updates = mutation.getUpdates();
     for (ColumnUpdate update : updates) {
       if (update.isDeleted()) {
         return Collections.singletonList((short) 1);
       }
     }
-
     return null;
   }
 
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
index bf11224..80e6392 100644
--- 
a/core/src/main/java/org/apache/accumulo/core/constraints/VisibilityConstraint.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/constraints/VisibilityConstraint.java
@@ -31,6 +31,8 @@ import org.apache.accumulo.core.security.VisibilityEvaluator;
 import org.apache.accumulo.core.security.VisibilityParseException;
 import org.apache.accumulo.core.util.BadArgumentException;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
 /**
  * A constraint that checks the visibility of columns against the actor's 
authorizations. Violation
  * codes:
@@ -38,8 +40,15 @@ import org.apache.accumulo.core.util.BadArgumentException;
  * <li>1 = failure to parse visibility expression</li>
  * <li>2 = insufficient authorization</li>
  * </ul>
+ *
+ * @deprecated since 2.1.0 Use
+ *             {@link 
org.apache.accumulo.core.data.constraints.VisibilityConstraint}
  */
-public class VisibilityConstraint implements Constraint {
+@Deprecated(since = "2.1.0")
+@SuppressFBWarnings(value = "NM_SAME_SIMPLE_NAME_AS_SUPERCLASS",
+    justification = "Same name used for compatibility during deprecation 
cycle")
+public class VisibilityConstraint
+    extends org.apache.accumulo.core.data.constraints.VisibilityConstraint 
implements Constraint {
 
   @Override
   public String getViolationDescription(short violationCode) {
@@ -54,7 +63,7 @@ public class VisibilityConstraint implements Constraint {
   }
 
   @Override
-  public List<Short> check(Environment env, Mutation mutation) {
+  public List<Short> check(Constraint.Environment env, Mutation mutation) {
     List<ColumnUpdate> updates = mutation.getUpdates();
 
     HashSet<String> ok = null;
diff --git 
a/core/src/main/java/org/apache/accumulo/core/constraints/Constraint.java 
b/core/src/main/java/org/apache/accumulo/core/data/constraints/Constraint.java
similarity index 84%
copy from 
core/src/main/java/org/apache/accumulo/core/constraints/Constraint.java
copy to 
core/src/main/java/org/apache/accumulo/core/data/constraints/Constraint.java
index c6ff5f7..02068a4 100644
--- a/core/src/main/java/org/apache/accumulo/core/constraints/Constraint.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/data/constraints/Constraint.java
@@ -16,12 +16,12 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.accumulo.core.constraints;
+package org.apache.accumulo.core.data.constraints;
 
 import java.util.List;
 
 import org.apache.accumulo.core.data.Mutation;
-import org.apache.accumulo.core.dataImpl.KeyExtent;
+import org.apache.accumulo.core.data.TabletId;
 import org.apache.accumulo.core.security.AuthorizationContainer;
 
 /**
@@ -41,19 +41,24 @@ import 
org.apache.accumulo.core.security.AuthorizationContainer;
  * <p>
  * This would not aggregate very well, because the same violation is 
represented with two different
  * strings.
+ *
+ * @since 2.1.0 Replaces interface in org.apache.accumulo.core.constraints 
package
  */
 public interface Constraint {
 
   /**
    * The environment within which a constraint exists.
+   *
+   * @since 2.1.0
    */
   interface Environment {
+
     /**
-     * Gets the key extent of the environment.
+     * Gets the tablet Id of the environment.
      *
-     * @return key extent
+     * @return TabletId
      */
-    KeyExtent getExtent();
+    TabletId getTablet();
 
     /**
      * Gets the user within the environment.
@@ -85,6 +90,10 @@ public interface Constraint {
    *
    * Violation codes must be non-negative. Negative violation codes are 
reserved for system use.
    *
+   * New API equivalent of
+   * {@link 
org.apache.accumulo.core.constraints.Constraint#check(org.apache.accumulo.core.constraints.Constraint.Environment,
 Mutation)}
+   * but renamed to prevent ambiguous method call errors.
+   *
    * @param env
    *          constraint environment
    * @param mutation
diff --git 
a/core/src/main/java/org/apache/accumulo/core/constraints/DefaultKeySizeConstraint.java
 
b/core/src/main/java/org/apache/accumulo/core/data/constraints/DefaultKeySizeConstraint.java
similarity index 94%
copy from 
core/src/main/java/org/apache/accumulo/core/constraints/DefaultKeySizeConstraint.java
copy to 
core/src/main/java/org/apache/accumulo/core/data/constraints/DefaultKeySizeConstraint.java
index 3550e96..6c0ff8e 100644
--- 
a/core/src/main/java/org/apache/accumulo/core/constraints/DefaultKeySizeConstraint.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/data/constraints/DefaultKeySizeConstraint.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.accumulo.core.constraints;
+package org.apache.accumulo.core.data.constraints;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -26,6 +26,8 @@ import org.apache.accumulo.core.data.Mutation;
 
 /**
  * A constraints that limits the size of keys to 1mb.
+ *
+ * @since 2.1.0 moved from org.apache.accumulo.core.constraints package
  */
 public class DefaultKeySizeConstraint implements Constraint {
 
diff --git 
a/core/src/main/java/org/apache/accumulo/core/constraints/NoDeleteConstraint.java
 
b/core/src/main/java/org/apache/accumulo/core/data/constraints/NoDeleteConstraint.java
similarity index 92%
copy from 
core/src/main/java/org/apache/accumulo/core/constraints/NoDeleteConstraint.java
copy to 
core/src/main/java/org/apache/accumulo/core/data/constraints/NoDeleteConstraint.java
index 27a0a41..7d219b4 100644
--- 
a/core/src/main/java/org/apache/accumulo/core/constraints/NoDeleteConstraint.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/data/constraints/NoDeleteConstraint.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.accumulo.core.constraints;
+package org.apache.accumulo.core.data.constraints;
 
 import java.util.Collections;
 import java.util.List;
@@ -27,7 +27,7 @@ import org.apache.accumulo.core.data.Mutation;
 /**
  * This constraint ensures mutations do not have deletes.
  *
- * @since 2.0.0
+ * @since 2.1.0 moved from org.apache.accumulo.core.constraints package
  */
 public class NoDeleteConstraint implements Constraint {
 
diff --git 
a/core/src/main/java/org/apache/accumulo/core/constraints/VisibilityConstraint.java
 
b/core/src/main/java/org/apache/accumulo/core/data/constraints/VisibilityConstraint.java
similarity index 95%
copy from 
core/src/main/java/org/apache/accumulo/core/constraints/VisibilityConstraint.java
copy to 
core/src/main/java/org/apache/accumulo/core/data/constraints/VisibilityConstraint.java
index bf11224..a4d75b1 100644
--- 
a/core/src/main/java/org/apache/accumulo/core/constraints/VisibilityConstraint.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/data/constraints/VisibilityConstraint.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.accumulo.core.constraints;
+package org.apache.accumulo.core.data.constraints;
 
 import static java.nio.charset.StandardCharsets.UTF_8;
 
@@ -38,6 +38,8 @@ import org.apache.accumulo.core.util.BadArgumentException;
  * <li>1 = failure to parse visibility expression</li>
  * <li>2 = insufficient authorization</li>
  * </ul>
+ *
+ * @since 2.1.0 moved from org.apache.accumulo.core.constraints package
  */
 public class VisibilityConstraint implements Constraint {
 
diff --git 
a/core/src/test/java/org/apache/accumulo/core/constraints/DefaultKeySizeConstraintTest.java
 
b/core/src/test/java/org/apache/accumulo/core/constraints/DefaultKeySizeConstraintTest.java
index 7e2a0e1..aa479f4 100644
--- 
a/core/src/test/java/org/apache/accumulo/core/constraints/DefaultKeySizeConstraintTest.java
+++ 
b/core/src/test/java/org/apache/accumulo/core/constraints/DefaultKeySizeConstraintTest.java
@@ -27,6 +27,7 @@ import org.apache.accumulo.core.data.Value;
 import org.apache.hadoop.io.Text;
 import org.junit.Test;
 
+@SuppressWarnings("deprecation")
 public class DefaultKeySizeConstraintTest {
 
   Constraint constraint = new DefaultKeySizeConstraint();
diff --git 
a/core/src/test/java/org/apache/accumulo/core/constraints/DeprecatedConstraintExtendTest.java
 
b/core/src/test/java/org/apache/accumulo/core/constraints/DeprecatedConstraintExtendTest.java
new file mode 100644
index 0000000..aa7ef99
--- /dev/null
+++ 
b/core/src/test/java/org/apache/accumulo/core/constraints/DeprecatedConstraintExtendTest.java
@@ -0,0 +1,97 @@
+/*
+ * 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 org.junit.Assert.assertEquals;
+
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.accumulo.core.data.ColumnUpdate;
+import org.apache.accumulo.core.data.Mutation;
+import org.apache.accumulo.core.data.Value;
+import org.apache.hadoop.io.Text;
+import org.junit.Test;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
+/**
+ * This tests the case where a user extended a Constraint class before it was 
deprecated to make
+ * sure the old Constraint will still work with the API migration changes.
+ *
+ * @since 2.1.0
+ */
+@SuppressWarnings("deprecation")
+public class DeprecatedConstraintExtendTest {
+
+  Constraint constraint = new MinKeySizeConstraint();
+
+  byte[] min = new byte[1024];
+  byte[] oversized = new byte[1048577];
+
+  @Test
+  public void testMinKeySizeConstraint() {
+
+    // pass constraints
+    Mutation m = new Mutation(min);
+    m.put("colf", "colq", new Value(new byte[] {}));
+    assertEquals(Collections.emptyList(), constraint.check(null, m));
+
+    // test with row id < 1KB
+    m = new Mutation("rowid");
+    m.put("colf", "colq", new Value(new byte[] {}));
+    
assertEquals(Collections.singletonList(MinKeySizeConstraint.MIN_KEY_SIZE_EXCEEDED_VIOLATION),
+        constraint.check(null, m));
+
+    // test with colf > 1mb
+    m = new Mutation("rowid");
+    m.put(new Text(oversized), new Text("colq"), new Value(new byte[] {}));
+    assertEquals(
+        
Collections.singletonList(DefaultKeySizeConstraint.MAX__KEY_SIZE_EXCEEDED_VIOLATION),
+        constraint.check(null, m));
+  }
+
+  /**
+   * Limit the size of 1mb but also a minimum of 1KB
+   */
+  @SuppressFBWarnings(value = "NM_WRONG_PACKAGE",
+      justification = "Same name used for compatibility during deprecation 
cycle")
+  private static class MinKeySizeConstraint extends DefaultKeySizeConstraint {
+    protected static final short MIN_KEY_SIZE_EXCEEDED_VIOLATION = 2;
+    protected static final long minSize = 1024; // 1MB default size
+
+    @Override
+    public List<Short> check(Constraint.Environment env, Mutation mutation) {
+      List<Short> violations = super.check(env, mutation);
+      if (!violations.isEmpty())
+        return violations;
+
+      for (ColumnUpdate cu : mutation.getUpdates()) {
+        int size = mutation.getRow().length;
+        size += cu.getColumnFamily().length;
+        size += cu.getColumnQualifier().length;
+        size += cu.getColumnVisibility().length;
+
+        if (size < minSize)
+          violations.add(MIN_KEY_SIZE_EXCEEDED_VIOLATION);
+      }
+      return violations;
+    }
+  }
+}
diff --git 
a/core/src/test/java/org/apache/accumulo/core/constraints/NoDeleteConstraintTest.java
 
b/core/src/test/java/org/apache/accumulo/core/constraints/NoDeleteConstraintTest.java
index eb42f10..d1fafab 100644
--- 
a/core/src/test/java/org/apache/accumulo/core/constraints/NoDeleteConstraintTest.java
+++ 
b/core/src/test/java/org/apache/accumulo/core/constraints/NoDeleteConstraintTest.java
@@ -27,6 +27,7 @@ import org.apache.accumulo.core.data.Mutation;
 import org.apache.accumulo.core.data.Value;
 import org.junit.Test;
 
+@SuppressWarnings("deprecation")
 public class NoDeleteConstraintTest {
 
   @Test
diff --git 
a/core/src/test/java/org/apache/accumulo/core/security/VisibilityConstraintTest.java
 
b/core/src/test/java/org/apache/accumulo/core/constraints/VisibilityConstraintTest.java
similarity index 90%
copy from 
core/src/test/java/org/apache/accumulo/core/security/VisibilityConstraintTest.java
copy to 
core/src/test/java/org/apache/accumulo/core/constraints/VisibilityConstraintTest.java
index 69678ae..d9b5964 100644
--- 
a/core/src/test/java/org/apache/accumulo/core/security/VisibilityConstraintTest.java
+++ 
b/core/src/test/java/org/apache/accumulo/core/constraints/VisibilityConstraintTest.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.accumulo.core.security;
+package org.apache.accumulo.core.constraints;
 
 import static java.nio.charset.StandardCharsets.UTF_8;
 import static org.easymock.EasyMock.createMock;
@@ -29,17 +29,18 @@ import static org.junit.Assert.assertNull;
 import java.util.Arrays;
 import java.util.List;
 
-import org.apache.accumulo.core.constraints.Constraint.Environment;
-import org.apache.accumulo.core.constraints.VisibilityConstraint;
 import org.apache.accumulo.core.data.ArrayByteSequence;
 import org.apache.accumulo.core.data.Mutation;
+import org.apache.accumulo.core.security.AuthorizationContainer;
+import org.apache.accumulo.core.security.ColumnVisibility;
 import org.junit.Before;
 import org.junit.Test;
 
+@SuppressWarnings("deprecation")
 public class VisibilityConstraintTest {
 
   VisibilityConstraint vc;
-  Environment env;
+  Constraint.Environment env;
   Mutation mutation;
 
   static final ColumnVisibility good = new ColumnVisibility("good");
@@ -60,7 +61,7 @@ public class VisibilityConstraintTest {
     expect(ac.contains(bs)).andReturn(true);
     replay(ac);
 
-    env = createMock(Environment.class);
+    env = createMock(Constraint.Environment.class);
     expect(env.getAuthorizationsContainer()).andReturn(ac);
     replay(env);
   }
diff --git 
a/core/src/test/java/org/apache/accumulo/core/constraints/DefaultKeySizeConstraintTest.java
 
b/core/src/test/java/org/apache/accumulo/core/data/constraints/DefaultKeySizeConstraintTest.java
similarity index 94%
copy from 
core/src/test/java/org/apache/accumulo/core/constraints/DefaultKeySizeConstraintTest.java
copy to 
core/src/test/java/org/apache/accumulo/core/data/constraints/DefaultKeySizeConstraintTest.java
index 7e2a0e1..f7b9679 100644
--- 
a/core/src/test/java/org/apache/accumulo/core/constraints/DefaultKeySizeConstraintTest.java
+++ 
b/core/src/test/java/org/apache/accumulo/core/data/constraints/DefaultKeySizeConstraintTest.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.accumulo.core.constraints;
+package org.apache.accumulo.core.data.constraints;
 
 import static org.junit.Assert.assertEquals;
 
@@ -31,12 +31,11 @@ public class DefaultKeySizeConstraintTest {
 
   Constraint constraint = new DefaultKeySizeConstraint();
 
-  byte[] oversized = new byte[1048577];
-  byte[] large = new byte[419430];
+  final private byte[] oversized = new byte[1048577];
+  final private byte[] large = new byte[419430];
 
   @Test
   public void testConstraint() {
-
     // pass constraints
     Mutation m = new Mutation("rowId");
     m.put("colf", "colq", new Value(new byte[] {}));
diff --git 
a/core/src/test/java/org/apache/accumulo/core/constraints/NoDeleteConstraintTest.java
 
b/core/src/test/java/org/apache/accumulo/core/data/constraints/NoDeleteConstraintTest.java
similarity index 96%
copy from 
core/src/test/java/org/apache/accumulo/core/constraints/NoDeleteConstraintTest.java
copy to 
core/src/test/java/org/apache/accumulo/core/data/constraints/NoDeleteConstraintTest.java
index eb42f10..0523874 100644
--- 
a/core/src/test/java/org/apache/accumulo/core/constraints/NoDeleteConstraintTest.java
+++ 
b/core/src/test/java/org/apache/accumulo/core/data/constraints/NoDeleteConstraintTest.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.accumulo.core.constraints;
+package org.apache.accumulo.core.data.constraints;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNull;
diff --git 
a/core/src/test/java/org/apache/accumulo/core/security/VisibilityConstraintTest.java
 
b/core/src/test/java/org/apache/accumulo/core/data/constraints/VisibilityConstraintTest.java
similarity index 92%
rename from 
core/src/test/java/org/apache/accumulo/core/security/VisibilityConstraintTest.java
rename to 
core/src/test/java/org/apache/accumulo/core/data/constraints/VisibilityConstraintTest.java
index 69678ae..893f0ae 100644
--- 
a/core/src/test/java/org/apache/accumulo/core/security/VisibilityConstraintTest.java
+++ 
b/core/src/test/java/org/apache/accumulo/core/data/constraints/VisibilityConstraintTest.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.accumulo.core.security;
+package org.apache.accumulo.core.data.constraints;
 
 import static java.nio.charset.StandardCharsets.UTF_8;
 import static org.easymock.EasyMock.createMock;
@@ -29,10 +29,11 @@ import static org.junit.Assert.assertNull;
 import java.util.Arrays;
 import java.util.List;
 
-import org.apache.accumulo.core.constraints.Constraint.Environment;
-import org.apache.accumulo.core.constraints.VisibilityConstraint;
 import org.apache.accumulo.core.data.ArrayByteSequence;
 import org.apache.accumulo.core.data.Mutation;
+import org.apache.accumulo.core.data.constraints.Constraint.Environment;
+import org.apache.accumulo.core.security.AuthorizationContainer;
+import org.apache.accumulo.core.security.ColumnVisibility;
 import org.junit.Before;
 import org.junit.Test;
 
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 1476430..7d7fdf5 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
@@ -28,10 +28,10 @@ import java.util.List;
 import java.util.Objects;
 
 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.Mutation;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.constraints.Constraint;
 import org.apache.accumulo.core.dataImpl.KeyExtent;
 import org.apache.accumulo.core.metadata.MetadataTable;
 import org.apache.accumulo.core.metadata.schema.DataFileValue;
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/constraints/SystemEnvironment.java
 
b/server/base/src/main/java/org/apache/accumulo/server/constraints/SystemEnvironment.java
index fc97dee..37b673a 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/constraints/SystemEnvironment.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/constraints/SystemEnvironment.java
@@ -18,7 +18,7 @@
  */
 package org.apache.accumulo.server.constraints;
 
-import org.apache.accumulo.core.constraints.Constraint;
+import org.apache.accumulo.core.data.constraints.Constraint;
 import org.apache.accumulo.server.ServerContext;
 
 public interface SystemEnvironment extends Constraint.Environment {
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/metadata/RootTabletMutatorImpl.java
 
b/server/base/src/main/java/org/apache/accumulo/server/metadata/RootTabletMutatorImpl.java
index a28bda6..c0ea220 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/metadata/RootTabletMutatorImpl.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/metadata/RootTabletMutatorImpl.java
@@ -23,7 +23,9 @@ import static java.nio.charset.StandardCharsets.UTF_8;
 import java.util.List;
 
 import org.apache.accumulo.core.data.Mutation;
+import org.apache.accumulo.core.data.TabletId;
 import org.apache.accumulo.core.dataImpl.KeyExtent;
+import org.apache.accumulo.core.dataImpl.TabletIdImpl;
 import org.apache.accumulo.core.metadata.RootTable;
 import org.apache.accumulo.core.metadata.schema.Ample;
 import org.apache.accumulo.core.metadata.schema.RootTabletMetadata;
@@ -35,13 +37,15 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public class RootTabletMutatorImpl extends TabletMutatorBase implements 
Ample.TabletMutator {
-  private ServerContext context;
+  private final ServerContext context;
 
   private static final Logger log = 
LoggerFactory.getLogger(RootTabletMutatorImpl.class);
 
-  private static class RootEnv implements SystemEnvironment {
+  @SuppressWarnings("deprecation")
+  private static class RootEnv
+      implements SystemEnvironment, 
org.apache.accumulo.core.constraints.Constraint.Environment {
 
-    private ServerContext ctx;
+    private final ServerContext ctx;
 
     RootEnv(ServerContext ctx) {
       this.ctx = ctx;
@@ -53,6 +57,11 @@ public class RootTabletMutatorImpl extends TabletMutatorBase 
implements Ample.Ta
     }
 
     @Override
+    public TabletId getTablet() {
+      return new TabletIdImpl(RootTable.EXTENT);
+    }
+
+    @Override
     public String getUser() {
       throw new UnsupportedOperationException();
     }
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 cbbc1e6..8c0f771 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
@@ -21,15 +21,18 @@ package org.apache.accumulo.tserver;
 import java.nio.ByteBuffer;
 import java.util.Collections;
 
-import org.apache.accumulo.core.data.ByteSequence;
+import org.apache.accumulo.core.data.TabletId;
 import org.apache.accumulo.core.dataImpl.KeyExtent;
+import org.apache.accumulo.core.dataImpl.TabletIdImpl;
 import org.apache.accumulo.core.security.AuthorizationContainer;
 import org.apache.accumulo.core.securityImpl.thrift.TCredentials;
 import org.apache.accumulo.server.ServerContext;
 import org.apache.accumulo.server.constraints.SystemEnvironment;
 import org.apache.accumulo.server.security.SecurityOperation;
 
-public class TservConstraintEnv implements SystemEnvironment {
+@SuppressWarnings("deprecation")
+public class TservConstraintEnv
+    implements SystemEnvironment, 
org.apache.accumulo.core.constraints.Constraint.Environment {
 
   private final ServerContext context;
   private final TCredentials credentials;
@@ -52,19 +55,19 @@ public class TservConstraintEnv implements 
SystemEnvironment {
   }
 
   @Override
+  public TabletId getTablet() {
+    return new TabletIdImpl(ke);
+  }
+
+  @Override
   public String getUser() {
     return credentials.getPrincipal();
   }
 
   @Override
   public AuthorizationContainer getAuthorizationsContainer() {
-    return new AuthorizationContainer() {
-      @Override
-      public boolean contains(ByteSequence auth) {
-        return security.authenticatedUserHasAuthorizations(credentials, 
Collections
-            .singletonList(ByteBuffer.wrap(auth.getBackingArray(), 
auth.offset(), auth.length())));
-      }
-    };
+    return auth -> security.authenticatedUserHasAuthorizations(credentials, 
Collections
+        .singletonList(ByteBuffer.wrap(auth.getBackingArray(), auth.offset(), 
auth.length())));
   }
 
   @Override
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 3acd4a8..cbc1ab7 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
@@ -25,13 +25,15 @@ import java.util.Map.Entry;
 import org.apache.accumulo.core.classloader.ClassLoaderUtil;
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
 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.ConstraintViolationSummary;
 import org.apache.accumulo.core.data.Mutation;
+import org.apache.accumulo.core.data.TabletId;
+import org.apache.accumulo.core.data.constraints.Constraint;
+import org.apache.accumulo.core.data.constraints.Constraint.Environment;
 import org.apache.accumulo.core.dataImpl.ComparableBytes;
 import org.apache.accumulo.server.conf.TableConfiguration;
+import org.apache.hadoop.io.BinaryComparable;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -84,7 +86,7 @@ public class ConstraintChecker {
   }
 
   public Violations check(Environment env, Mutation m) {
-    if (!env.getExtent().contains(new ComparableBytes(m.getRow()))) {
+    if (!tabletContains(env.getTablet(), new ComparableBytes(m.getRow()))) {
       Violations violations = new Violations();
 
       ConstraintViolationSummary cvs = new ConstraintViolationSummary(
@@ -136,4 +138,16 @@ public class ConstraintChecker {
 
     return violations;
   }
+
+  /**
+   * Return true if the tablet contains the row. This is similar to the 
contains in KeyExtent
+   */
+  public boolean tabletContains(TabletId tablet, BinaryComparable row) {
+    if (row == null) {
+      throw new IllegalArgumentException(
+          "Passing null to contains is ambiguous, could be in first or last 
extent of table");
+    }
+    return (tablet.getPrevEndRow() == null || 
tablet.getPrevEndRow().compareTo(row) < 0)
+        && (tablet.getEndRow() == null || tablet.getEndRow().compareTo(row) >= 
0);
+  }
 }
diff --git 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/constraints/SystemConstraint.java
 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/constraints/SystemConstraint.java
index 813054e..daedd70 100644
--- 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/constraints/SystemConstraint.java
+++ 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/constraints/SystemConstraint.java
@@ -18,6 +18,6 @@
  */
 package org.apache.accumulo.tserver.constraints;
 
-import org.apache.accumulo.core.constraints.Constraint;
+import org.apache.accumulo.core.data.constraints.Constraint;
 
 public abstract class SystemConstraint implements Constraint {}
diff --git 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/constraints/UnsatisfiableConstraint.java
 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/constraints/UnsatisfiableConstraint.java
index 8354967..d9c96d7 100644
--- 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/constraints/UnsatisfiableConstraint.java
+++ 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/constraints/UnsatisfiableConstraint.java
@@ -21,8 +21,8 @@ package org.apache.accumulo.tserver.constraints;
 import java.util.Collections;
 import java.util.List;
 
-import org.apache.accumulo.core.constraints.Constraint;
 import org.apache.accumulo.core.data.Mutation;
+import org.apache.accumulo.core.data.constraints.Constraint;
 
 public class UnsatisfiableConstraint implements Constraint {
 
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 ba4e718..e6f9c82 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
@@ -18,7 +18,7 @@
  */
 package org.apache.accumulo.tserver.constraints;
 
-import static org.easymock.EasyMock.anyObject;
+import static java.nio.charset.StandardCharsets.UTF_8;
 import static org.easymock.EasyMock.createMock;
 import static org.easymock.EasyMock.createMockBuilder;
 import static org.easymock.EasyMock.expect;
@@ -31,12 +31,12 @@ import java.util.HashSet;
 import java.util.List;
 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.Mutation;
-import org.apache.accumulo.core.dataImpl.KeyExtent;
-import org.apache.hadoop.io.BinaryComparable;
+import org.apache.accumulo.core.data.TabletId;
+import org.apache.accumulo.core.data.constraints.Constraint;
+import org.apache.accumulo.core.data.constraints.Constraint.Environment;
+import org.apache.hadoop.io.Text;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -47,8 +47,9 @@ public class ConstraintCheckerTest {
   private ConstraintChecker cc;
   private ArrayList<Constraint> constraints;
   private Environment env;
-  private KeyExtent extent;
+  private TabletId tabletId;
   private Mutation m;
+  private Mutation m2;
 
   @Before
   public void setup() throws SecurityException {
@@ -57,10 +58,15 @@ public class ConstraintCheckerTest {
     expect(cc.getConstraints()).andReturn(constraints);
 
     env = createMock(Environment.class);
-    extent = createMock(KeyExtent.class);
-    expect(env.getExtent()).andReturn(extent);
+    tabletId = createMock(TabletId.class);
+    expect(env.getTablet()).andReturn(tabletId);
 
     m = createMock(Mutation.class);
+    m2 = createMock(Mutation.class);
+    expect(tabletId.getEndRow()).andReturn(new Text("d")).anyTimes();
+    expect(tabletId.getPrevEndRow()).andReturn(new Text("a")).anyTimes();
+    expect(m.getRow()).andReturn("b".getBytes(UTF_8)).anyTimes();
+    expect(m2.getRow()).andReturn("z".getBytes(UTF_8)).anyTimes();
   }
 
   private Constraint makeSuccessConstraint() {
@@ -83,9 +89,10 @@ public class ConstraintCheckerTest {
   }
 
   private void replayAll() {
-    replay(extent);
+    replay(tabletId);
     replay(env);
     replay(cc);
+    replay(m);
   }
 
   private Constraint makeExceptionConstraint() {
@@ -97,23 +104,21 @@ public class ConstraintCheckerTest {
 
   @Test
   public void testCheckAllOK() {
-    expect(extent.contains(anyObject(BinaryComparable.class))).andReturn(true);
     replayAll();
     constraints.add(makeSuccessConstraint());
     assertNull(cc.check(env, m));
   }
 
   @Test
-  public void testCheckMutationOutsideKeyExtent() {
-    
expect(extent.contains(anyObject(BinaryComparable.class))).andReturn(false);
+  public void testCheckMutationOutsideTablet() {
     replayAll();
-    ConstraintViolationSummary cvs = Iterables.getOnlyElement(cc.check(env, 
m).asList());
+    replay(m2);
+    ConstraintViolationSummary cvs = Iterables.getOnlyElement(cc.check(env, 
m2).asList());
     assertEquals(SystemConstraint.class.getName(), cvs.getConstrainClass());
   }
 
   @Test
   public void testCheckFailure() {
-    expect(extent.contains(anyObject(BinaryComparable.class))).andReturn(true);
     replayAll();
     constraints.add(makeFailureConstraint());
     List<ConstraintViolationSummary> cvsList = cc.check(env, m).asList();
@@ -127,7 +132,6 @@ public class ConstraintCheckerTest {
 
   @Test
   public void testCheckException() {
-    expect(extent.contains(anyObject(BinaryComparable.class))).andReturn(true);
     replayAll();
     constraints.add(makeExceptionConstraint());
     ConstraintViolationSummary cvs = Iterables.getOnlyElement(cc.check(env, 
m).asList());
diff --git 
a/shell/src/main/java/org/apache/accumulo/shell/commands/ConstraintCommand.java 
b/shell/src/main/java/org/apache/accumulo/shell/commands/ConstraintCommand.java
index e4f3a58..4edfd4e 100644
--- 
a/shell/src/main/java/org/apache/accumulo/shell/commands/ConstraintCommand.java
+++ 
b/shell/src/main/java/org/apache/accumulo/shell/commands/ConstraintCommand.java
@@ -20,7 +20,7 @@ package org.apache.accumulo.shell.commands;
 
 import java.util.Map.Entry;
 
-import org.apache.accumulo.core.constraints.Constraint;
+import org.apache.accumulo.core.data.constraints.Constraint;
 import org.apache.accumulo.shell.Shell;
 import org.apache.accumulo.shell.Shell.Command;
 import org.apache.accumulo.shell.ShellCommandException;
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 d25884a..803635d 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
@@ -39,7 +39,7 @@ import org.apache.accumulo.core.client.admin.TimeType;
 import org.apache.accumulo.core.clientImpl.Tables;
 import org.apache.accumulo.core.conf.IterConfigUtil;
 import org.apache.accumulo.core.conf.Property;
-import org.apache.accumulo.core.constraints.VisibilityConstraint;
+import org.apache.accumulo.core.data.constraints.VisibilityConstraint;
 import org.apache.accumulo.core.iterators.IteratorUtil.IteratorScope;
 import org.apache.accumulo.shell.Shell;
 import org.apache.accumulo.shell.Shell.Command;
diff --git a/test/src/main/java/org/apache/accumulo/test/TableOperationsIT.java 
b/test/src/main/java/org/apache/accumulo/test/TableOperationsIT.java
index 47c4126..89e3ddd 100644
--- a/test/src/main/java/org/apache/accumulo/test/TableOperationsIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/TableOperationsIT.java
@@ -53,11 +53,11 @@ import org.apache.accumulo.core.client.admin.DiskUsage;
 import org.apache.accumulo.core.client.admin.TableOperations;
 import org.apache.accumulo.core.clientImpl.ClientContext;
 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.Mutation;
 import org.apache.accumulo.core.data.PartialKey;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.data.constraints.DefaultKeySizeConstraint;
 import org.apache.accumulo.core.security.Authorizations;
 import org.apache.accumulo.core.security.TablePermission;
 import org.apache.accumulo.harness.AccumuloClusterHarness;
diff --git 
a/test/src/main/java/org/apache/accumulo/test/constraints/AlphaNumKeyConstraint.java
 
b/test/src/main/java/org/apache/accumulo/test/constraints/AlphaNumKeyConstraint.java
index eb09c65..e88d781 100644
--- 
a/test/src/main/java/org/apache/accumulo/test/constraints/AlphaNumKeyConstraint.java
+++ 
b/test/src/main/java/org/apache/accumulo/test/constraints/AlphaNumKeyConstraint.java
@@ -24,9 +24,9 @@ import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Set;
 
-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.data.constraints.Constraint;
 
 /**
  * This class is an accumulo constraint that ensures all fields of a key are 
alpha numeric.
diff --git 
a/test/src/main/java/org/apache/accumulo/test/constraints/MaxMutationSize.java 
b/test/src/main/java/org/apache/accumulo/test/constraints/MaxMutationSize.java
index a1d88d0..a9c9d89 100644
--- 
a/test/src/main/java/org/apache/accumulo/test/constraints/MaxMutationSize.java
+++ 
b/test/src/main/java/org/apache/accumulo/test/constraints/MaxMutationSize.java
@@ -21,8 +21,8 @@ package org.apache.accumulo.test.constraints;
 import java.util.Collections;
 import java.util.List;
 
-import org.apache.accumulo.core.constraints.Constraint;
 import org.apache.accumulo.core.data.Mutation;
+import org.apache.accumulo.core.data.constraints.Constraint;
 
 /**
  * Ensure that mutations are a reasonable size: we must be able to fit several 
in memory at a time.
diff --git 
a/test/src/main/java/org/apache/accumulo/test/constraints/NumericValueConstraint.java
 
b/test/src/main/java/org/apache/accumulo/test/constraints/NumericValueConstraint.java
index b459f9e..e1b2af7 100644
--- 
a/test/src/main/java/org/apache/accumulo/test/constraints/NumericValueConstraint.java
+++ 
b/test/src/main/java/org/apache/accumulo/test/constraints/NumericValueConstraint.java
@@ -23,9 +23,9 @@ import java.util.Collection;
 import java.util.Collections;
 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.data.constraints.Constraint;
 
 /**
  * This class is an accumulo constraint that ensures values are numeric 
strings.
diff --git 
a/test/src/main/java/org/apache/accumulo/test/functional/SlowConstraint.java 
b/test/src/main/java/org/apache/accumulo/test/functional/SlowConstraint.java
index 1fe9335..d86ea1c 100644
--- a/test/src/main/java/org/apache/accumulo/test/functional/SlowConstraint.java
+++ b/test/src/main/java/org/apache/accumulo/test/functional/SlowConstraint.java
@@ -23,8 +23,8 @@ import static 
org.apache.accumulo.fate.util.UtilWaitThread.sleepUninterruptibly;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
 
-import org.apache.accumulo.core.constraints.Constraint;
 import org.apache.accumulo.core.data.Mutation;
+import org.apache.accumulo.core.data.constraints.Constraint;
 
 public class SlowConstraint implements Constraint {
 

Reply via email to