/** * Update fields from configuration. * * @param config Configuration * @return updated builder instance */ public Builder config(Config config) { config.get("name").asString().ifPresent(this::name); config.get("default").asBoolean().ifPresent(this::isDefault); config.get("authentication").asList(FlaggedProvider::create) .ifPresent(this.authenticators::addAll); config.get("authorization").asList(FlaggedProvider::create) .ifPresent(this.authorizers::addAll); config.get("outbound").asNodeList() .ifPresent(configs -> configs.forEach(outConfig -> addOutboundProvider(outConfig.get("name") .asString() .get()))); return this; }
/** * Builder for this selection policy. * * @return builder instance */ public static Builder builder() { return new Builder(); }
/** * Load this policy from config. See {@link CompositeProviderSelectionPolicy} for example. * * @param config configuration instance * @return function as expected by {@link Security.Builder#providerSelectionPolicy(Function)} */ public static Function<Providers, ProviderSelectionPolicy> create(Config config) { return builder().config(config).build(); }