private List buildPrefixesToExclude()

in src/main/java/com/google/gcs/sdrs/service/worker/rule/impl/StsRuleExecutor.java [371:392]


  private List<String> buildPrefixesToExclude(
      final Map<String, Set<String>> prefixesToExcludeMap, String bucketName) {
    List<String> prefixesToExclude = new ArrayList<>();
    String predDefinedList =
        SdrsApplication.getAppConfigProperty("sts.defaultRuleExlcudePrefixList");
    if (predDefinedList != null && !predDefinedList.isEmpty()) {
      prefixesToExclude.addAll(Arrays.asList(predDefinedList.split(";")));
    }
    if (prefixesToExcludeMap.containsKey(bucketName)) {
      prefixesToExclude.addAll(prefixesToExcludeMap.get(bucketName));
      if (prefixesToExclude.isEmpty()) {
        // we have bucket that has one implied dataset. i.e 2018/, 2019, 2020/ are at the root of
        // the bucket
        prefixesToExclude.addAll(Arrays.asList(StsUtil.DEFAULT_LOG_CAT_BUCKET_PREFIX));
      }
    } else if (predDefinedList == null || predDefinedList.isEmpty()) {
      // we have to add a "fake" no-op exclude prefix. otherwise STS throws an error.
      prefixesToExclude.add(UUID.randomUUID().toString() + "_NOOP_EXCLUDE_PREFIX/");
    }

    return prefixesToExclude;
  }