class DefaultIndexer extends Indexer {

  protected void loadSecondaryIndexesForTable(HTableDescriptor desc,
      Map<IndexColumn, String> columnIndexes) throws IOException {
    for (HColumnDescriptor family : desc.getFamilies()) {
      if (IndexMasterObserver.isSecondaryIndexEnableFamily(family)) {
        List<Pair<String, String>> indexNameAndColumns = IndexMasterObserver
            .getIndexNameAndColumns(desc.getNameAsString(), family);
        for (Pair<String, String> indexNameAndColumn : indexNameAndColumns) {
          String indexName = indexNameAndColumn.getFirst();
          String column = indexNameAndColumn.getSecond();
          IndexColumn indexColumn = new IndexColumn(desc.getName(), family.getName(),
              Bytes.toBytes(column));
          String indexTableName = IndexMasterObserver.constructSecondaryIndexTableName(
            desc.getNameAsString(), family.getNameAsString(), column, indexName);
          if (!columnIndexes.containsKey(indexColumn)) {
            columnIndexes.put(indexColumn, indexTableName);
          } else {
            throw new IOException("duplicated index definition found, indexColumn=" + indexColumn);
          }
        }
      }
    }
  }

  public  DefaultIndexer(Configuration conf);

}