diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/ShibbolethUiApplication.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/ShibbolethUiApplication.java index db1779592..6fea0aa99 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/ShibbolethUiApplication.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/ShibbolethUiApplication.java @@ -1,6 +1,7 @@ package edu.internet2.tier.shibboleth.admin.ui; import edu.internet2.tier.shibboleth.admin.ui.repository.MetadataResolverRepository; +import edu.internet2.tier.shibboleth.admin.ui.service.TokenPlaceholderValueResolvingService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.SpringApplication; diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/configuration/PlaceholderResolverComponentsConfiguration.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/configuration/PlaceholderResolverComponentsConfiguration.java new file mode 100644 index 000000000..08a0069d4 --- /dev/null +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/configuration/PlaceholderResolverComponentsConfiguration.java @@ -0,0 +1,15 @@ +package edu.internet2.tier.shibboleth.admin.ui.configuration; + +import edu.internet2.tier.shibboleth.admin.ui.service.TokenPlaceholderValueResolvingService; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.env.PropertyResolver; + +@Configuration +public class PlaceholderResolverComponentsConfiguration { + + @Bean + public TokenPlaceholderValueResolvingService tokenPlaceholderValueResolvingService(PropertyResolver propertyResolver) { + return TokenPlaceholderValueResolvingService.shibbolethPlaceholderAware(propertyResolver); + } +} diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/ShibbolethPlaceholderTokenAwareValueResolvingService.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/ShibbolethPlaceholderTokenAwareValueResolvingService.java index 50e49a6e3..8de170b49 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/ShibbolethPlaceholderTokenAwareValueResolvingService.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/ShibbolethPlaceholderTokenAwareValueResolvingService.java @@ -1,14 +1,24 @@ package edu.internet2.tier.shibboleth.admin.ui.service; +import org.springframework.core.env.PropertyResolver; + /** * Implementation of {@link TokenPlaceholderValueResolvingService} based on Spring Framework's default property resolver * which understands and replaces Shibboleth Idp specific placeholder prefix of '%{' with standard Spring's placeholder * prefix of '${' before resolving. * * If passed it value does not contain Shibboleth Idp '%{}' placeholder token, returns that value as is. + * + * @author Dmitriy Kopylenko */ public class ShibbolethPlaceholderTokenAwareValueResolvingService implements TokenPlaceholderValueResolvingService { + private PropertyResolver propertyResolver; + + ShibbolethPlaceholderTokenAwareValueResolvingService(PropertyResolver propertyResolver) { + this.propertyResolver = propertyResolver; + } + @Override public String resolveValueFromTokenPlaceholder(String tokenPlaceholder) { return null; diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/TokenPlaceholderValueResolvingService.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/TokenPlaceholderValueResolvingService.java index 3193a51aa..0df2f0ca0 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/TokenPlaceholderValueResolvingService.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/TokenPlaceholderValueResolvingService.java @@ -1,11 +1,18 @@ package edu.internet2.tier.shibboleth.admin.ui.service; +import org.springframework.core.env.PropertyResolver; + /** * Generic API to resolve values from arbitrary tokenized placeholders such as '%{token.placeholder}' etc. * * @author Dmitriy Kopylenko */ +@FunctionalInterface public interface TokenPlaceholderValueResolvingService { String resolveValueFromTokenPlaceholder(String tokenPlaceholder); + + static TokenPlaceholderValueResolvingService shibbolethPlaceholderAware(PropertyResolver propertyResolver) { + return new ShibbolethPlaceholderTokenAwareValueResolvingService(propertyResolver); + } }