@VisibleForTesting
  protected List<PluginConfiguration> loadPluginConfigurations() {
    JsonNode yamlConfig = null;
    Path mangerConfigPath = pluginManagerConfigFilePath();
    if (!Files.exists(mangerConfigPath)) {
      return ImmutableList.of();
    }
    try {
      Object yamlObj = new Yaml().loadAs(Files.newInputStream(mangerConfigPath), Object.class);
      if (yamlObj instanceof Map) {
        yamlConfig = JacksonUtil.fromObjects(yamlObj);
      }
    } catch (IOException e) {
      throw new LoadingPluginException(
          "Failed when load plugin configs from file: " + mangerConfigPath, e);
    }

    LOG.info("initializing plugin configuration for: {}", pluginCategory());
    String pluginListKey = pluginCategory();

    JsonNode pluginConfigList = yamlConfig != null ? yamlConfig.get(pluginListKey) : null;
    List<PluginConfiguration> configs = Lists.newArrayList();
    if (pluginConfigList != null && !pluginConfigList.isEmpty()) {
      for (int i = 0; i < pluginConfigList.size(); i++) {
        JsonNode pluginConfiguration = pluginConfigList.get(i);
        PluginConfiguration configuration = PluginConfiguration.fromJSONObject(pluginConfiguration);
        configs.add(configuration);
      }
    }
    return configs;
  }
Visit all installed plugins.

@param visitor function to visit all installed plugins.
amoro-ams/src/main/java/org/apache/amoro/server/manager/AbstractPluginManager.java