@Override
  public List<CountryDetails> retrieveCountries() {
    try {
      context.authenticatedUser();
      final CountryMapper mapper = new CountryMapper();

      final String sql = "select " + mapper.schema();

      return this.jdbcTemplate.query(sql, mapper, new Object[] {});
    } catch (final EmptyResultDataAccessException e) {
      return null;
    }
  }