public static TableDescriptorBuilder setConfiguration(TableDescriptorBuilder builder,
    Class<? extends Constraint> clazz, Configuration configuration)
    throws IOException, IllegalArgumentException {
    // get the entry for this class
    Pair<String, String> e = getKeyValueForClass(builder, clazz);

    if (e == null) {
      throw new IllegalArgumentException(
        "Constraint: " + clazz.getName() + " is not associated with this table.");
    }

    // clone over the configuration elements
    Configuration conf = new Configuration(configuration);

    // read in the previous info about the constraint
    Configuration internal = readConfiguration(e.getSecond());

    // update the fields based on the previous settings
    conf.setIfUnset(ENABLED_KEY, internal.get(ENABLED_KEY));
    conf.setIfUnset(PRIORITY_KEY, internal.get(PRIORITY_KEY));

    // update the current value
    return writeConstraint(builder, e.getFirst(), conf);
  }
Update the configuration for the {@link Constraint}; does not change the order in which the
constraint is run.
@param builder       {@link TableDescriptorBuilder} to update
@param clazz         {@link Constraint} to update
@param configuration to update the {@link Constraint} with.
@throws IOException              if the Constraint was not stored correctly
@throws IllegalArgumentException if the Constraint was not present on this table.
hbase-server/src/main/java/org/apache/hadoop/hbase/constraint/Constraints.java