@Override
  protected Catalog buildIcebergCatalog(
      String name, Map<String, String> properties, Configuration hadoopConf) {
    Preconditions.checkNotNull(
        properties.containsKey(CatalogProperties.URI),
        "lack required properties: %s",
        CatalogProperties.URI);

    properties = Maps.newHashMap(properties);
    properties.put(CatalogProperties.WAREHOUSE_LOCATION, name);

    // add table-filter to http header.
    // list table only return mixed-iceberg table.
    Map<String, String> headers = Maps.newHashMap();
    headers.put(HTTP_HEADER_LIST_TABLE_FILTER, TableFormat.MIXED_ICEBERG.name());
    String uri = properties.get(CatalogProperties.URI);
    Catalog catalog =
        new RESTCatalog(config -> HTTPClient.builder(config).uri(uri).withHeaders(headers).build());
    CatalogUtil.configureHadoopConf(catalog, hadoopConf);
    catalog.initialize(name, properties);
    return catalog;
  }
Mixed-iceberg format catalog base on internal catalog.
amoro-format-iceberg/src/main/java/org/apache/amoro/mixed/InternalMixedIcebergCatalog.java