class GlueMetastoreClientDelegate {

  public List<String> getFunctions(String dbName, String pattern) throws TException {
    try {
      List<String> functionNames = Lists.newArrayList();
      List<UserDefinedFunction> functions =
              glueMetastore.getUserDefinedFunctions(dbName, pattern);
      for (UserDefinedFunction catalogFunction : functions) {
        functionNames.add(catalogFunction.getFunctionName());
      }
      return functionNames;
    } catch (AmazonServiceException e) {
      logger.error(e);
      throw CatalogToHiveConverter.wrapInHiveException(e);
    } catch (Exception e) {
      String msg = "Unable to get Functions: ";
      logger.error(msg, e);
      throw new MetaException(msg + e);
    }
  }

  public  GlueMetastoreClientDelegate(HiveConf conf, AWSGlueMetastore glueMetastore,
                                     Warehouse wh);

}