public static SubstitutionStrategyRegistry newInstance() { return new SubstitutionStrategyRegistry(); }
private SubstitutionStrategyRegistry() { strategies = Collections.unmodifiableList(new ArrayList<>(createStrategies())); }
@Override public CompletionStage<WithDittoHeaders> apply(final WithDittoHeaders withDittoHeaders) { requireNonNull(withDittoHeaders); final Optional<SubstitutionStrategy> firstMatchingStrategyOpt = substitutionStrategyRegistry.getMatchingStrategy(withDittoHeaders); if (firstMatchingStrategyOpt.isPresent()) { final SubstitutionStrategy firstMatchingStrategy = firstMatchingStrategyOpt.get(); return CompletableFuture.supplyAsync(() -> { @SuppressWarnings("unchecked") final WithDittoHeaders maybeSubstituted = firstMatchingStrategy.apply(withDittoHeaders, substitutionAlgorithm); return maybeSubstituted; }); } else { return CompletableFuture.completedFuture(withDittoHeaders); } }
private static PlaceholderSubstitution createInstance( final Map<String, Function<DittoHeaders, String>> replacementDefinitions) { final HeaderBasedPlaceholderSubstitutionAlgorithm algorithm = HeaderBasedPlaceholderSubstitutionAlgorithm.newInstance(replacementDefinitions); final SubstitutionStrategyRegistry substitutionStrategyRegistry = SubstitutionStrategyRegistry.newInstance(); return new PlaceholderSubstitution(algorithm, substitutionStrategyRegistry); } }