package com.airlock.iam.plugin.framework.misc.config;

import com.airlock.iam.plugin.framework.application.configuration.MutablePluginConfiguration;
import java.util.stream.Stream;

public final class AllPropertiesWalkerScope implements SubtreeWalkerScope {
   @Override
   public Stream<MutablePluginConfiguration> getNexts(MutablePluginConfiguration current) {
      return current.getLocallyUsedConfigurationEnvironments()
         .stream()
         .flatMap(env -> new PluginConfigurationPropertiesView(current, env).inheritFromParent().getProperties().allProperties())
         .flatMap(property -> property.getDirectlyReferenced().stream().map(MutablePluginConfiguration.class::cast));
   }
}
