class HBaseDataStore implements DataStore {

    @Override
    @Timed
    public Document save(final Table table, Document document) {
        if(document == null || document.getData() == null || document.getId() == null) {
            throw FoxtrotExceptions.createBadRequestException(table.getName(), "Invalid Input Document");
        }
        Document translatedDocument = null;
        try (org.apache.hadoop.hbase.client.Table hTable = tableWrapper.getTable(table)) {
            translatedDocument = translator.translate(table, document);
            hTable.put(getPutForDocument(translatedDocument));
        } catch (JsonProcessingException e) {
            throw FoxtrotExceptions.createBadRequestException(table, e);
        } catch (IOException e) {
            throw FoxtrotExceptions.createConnectionException(table, e);
        }
        return translatedDocument;
    }

    @Inject public  HBaseDataStore(HbaseTableConnection tableWrapper, ObjectMapper mapper, DocumentTranslator translator);

}