[java-identity-provider] branch main updated: IDP-1652 - Support easier integration into configuration by plugins
Scott Cantor
cantor.2 at osu.edu
Mon Sep 21 18:45:00 UTC 2020
This is an automated email from the git hooks/post-receive script.
scantor pushed a commit to branch main
in repository java-identity-provider.
View the commit online:
http://git.shibboleth.net/view/?p=java-identity-provider.git;a=commit;h=b939d3b9ed54c715e586b534ca0ac695102288d7
The following commit(s) were added to refs/heads/main by this push:
new b939d3b9e IDP-1652 - Support easier integration into configuration by plugins
b939d3b9e is described below
commit b939d3b9ed54c715e586b534ca0ac695102288d7
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Mon Sep 21 14:44:56 2020 -0400
IDP-1652 - Support easier integration into configuration by plugins
https://issues.shibboleth.net/jira/browse/IDP-1652
Auto-wire AttributeRegistry naming functions.
---
.../transcoding/AttributeTranscoderRegistry.java | 25 +++++++++
.../attribute/transcoding/BasicNamingFunction.java | 65 ++++++++++++++++++++++
.../policyrule/saml/impl/BaseMetadataTests.java | 4 +-
.../impl/AttributeRegistryServiceStrategy.java | 30 ++++++----
.../impl/AttributeTranscoderRegistryImpl.java | 16 ++----
.../impl/AttributeTranscoderRegistryImplTest.java | 12 +++-
.../CASScopedStringAttributeTranscoderTest.java | 5 +-
.../impl/CASStringAttributeTranscoderTest.java | 5 +-
.../net/shibboleth/idp/conf/global-system.xml | 38 +++++++------
.../net/shibboleth/idp/conf/services-system.xml | 3 +-
.../impl/SAML1ByteAttributeTranscoderTest.java | 5 +-
.../SAML1ScopedStringAttributeTranscoderTest.java | 5 +-
.../impl/SAML1StringAttributeTranscoderTest.java | 5 +-
.../impl/SAML2ByteAttributeTranscoderTest.java | 5 +-
.../SAML2ScopedStringAttributeTranscoderTest.java | 5 +-
.../impl/SAML2StringAttributeTranscoderTest.java | 5 +-
.../SAML2XMLObjectAttributeTranscoderTest.java | 5 +-
.../impl/AddAttributeStatementToAssertionTest.java | 15 ++---
.../impl/AddAttributeStatementToAssertionTest.java | 13 +++--
.../impl/metadata/attribute-registry-service.xml | 28 +++++++---
.../idp/saml/impl/metadata/attribute-registry.xml | 6 --
.../idp/saml/impl/profile/saml1Mapper.xml | 13 +++--
.../idp/saml/impl/profile/saml2Mapper.xml | 13 +++--
23 files changed, 225 insertions(+), 101 deletions(-)
diff --git a/idp-attribute-api/src/main/java/net/shibboleth/idp/attribute/transcoding/AttributeTranscoderRegistry.java b/idp-attribute-api/src/main/java/net/shibboleth/idp/attribute/transcoding/AttributeTranscoderRegistry.java
index b36ba9876..b9b25ed8b 100644
--- a/idp-attribute-api/src/main/java/net/shibboleth/idp/attribute/transcoding/AttributeTranscoderRegistry.java
+++ b/idp-attribute-api/src/main/java/net/shibboleth/idp/attribute/transcoding/AttributeTranscoderRegistry.java
@@ -20,6 +20,7 @@ package net.shibboleth.idp.attribute.transcoding;
import java.util.Collection;
import java.util.Locale;
import java.util.Map;
+import java.util.function.Function;
import javax.annotation.Nonnull;
import javax.annotation.concurrent.ThreadSafe;
@@ -107,5 +108,29 @@ public interface AttributeTranscoderRegistry extends IdentifiedComponent {
*/
@Nonnull @NonnullElements @Unmodifiable <T> Collection<TranscodingRule> getTranscodingRules(
@Nonnull final T from);
+
+ /**
+ * Interface to a naming function that allows an object to be turned into a unique string name.
+ *
+ * @param <T> type of object
+ *
+ * @since 4.1.0
+ */
+ interface NamingFunction<T> {
+
+ /**
+ * Gets the type of object supported.
+ *
+ * @return object type
+ */
+ @Nonnull Class<T> getType();
+ /**
+ * Gets the function that produces a name for an input object.
+ *
+ * @return naming function
+ */
+ @Nonnull Function<T,String> getFunction();
+ }
+
}
\ No newline at end of file
diff --git a/idp-attribute-api/src/main/java/net/shibboleth/idp/attribute/transcoding/BasicNamingFunction.java b/idp-attribute-api/src/main/java/net/shibboleth/idp/attribute/transcoding/BasicNamingFunction.java
new file mode 100644
index 000000000..027dd2f1f
--- /dev/null
+++ b/idp-attribute-api/src/main/java/net/shibboleth/idp/attribute/transcoding/BasicNamingFunction.java
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements. See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.attribute.transcoding;
+
+import java.util.function.Function;
+
+import javax.annotation.Nonnull;
+
+import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry.NamingFunction;
+import net.shibboleth.utilities.java.support.annotation.ParameterName;
+import net.shibboleth.utilities.java.support.logic.Constraint;
+
+/**
+ * Basic implementation of a {@link NamingFunction}.
+ *
+ * @param <T> type of object
+ *
+ * @since 4.1.0
+ */
+public class BasicNamingFunction<T> implements NamingFunction<T> {
+
+ /** Object type. */
+ @Nonnull private final Class<T> objectType;
+
+ /** Naming function. */
+ @Nonnull private final Function<T,String> namingFunction;
+
+ /**
+ * Constructor.
+ *
+ * @param claz object type
+ * @param function naming function
+ */
+ public BasicNamingFunction(@Nonnull @ParameterName(name="claz") final Class<T> claz,
+ @Nonnull @ParameterName(name="function") final Function<T,String> function) {
+ objectType = Constraint.isNotNull(claz, "Object type cannot be null");
+ namingFunction = Constraint.isNotNull(function, "Naming function cannot be null");
+ }
+
+ /** {@inheritDoc} */
+ @Nonnull public Class<T> getType() {
+ return objectType;
+ }
+
+ /** {@inheritDoc} */
+ @Nonnull public Function<T, String> getFunction() {
+ return namingFunction;
+ }
+
+}
\ No newline at end of file
diff --git a/idp-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/policyrule/saml/impl/BaseMetadataTests.java b/idp-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/policyrule/saml/impl/BaseMetadataTests.java
index 39ac55d94..a7b498418 100644
--- a/idp-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/policyrule/saml/impl/BaseMetadataTests.java
+++ b/idp-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/policyrule/saml/impl/BaseMetadataTests.java
@@ -22,6 +22,7 @@ import java.util.Collections;
import net.shibboleth.ext.spring.testing.MockApplicationContext;
import net.shibboleth.idp.attribute.filter.context.AttributeFilterContext;
+import net.shibboleth.idp.attribute.transcoding.BasicNamingFunction;
import net.shibboleth.idp.attribute.transcoding.impl.AttributeTranscoderRegistryImpl;
import net.shibboleth.idp.saml.attribute.transcoding.AbstractSAML2AttributeTranscoder;
import net.shibboleth.idp.saml.metadata.impl.AttributeMappingNodeProcessor;
@@ -67,7 +68,8 @@ public class BaseMetadataTests extends XMLObjectBaseTestCase {
final AttributeTranscoderRegistryImpl registry = new AttributeTranscoderRegistryImpl();
registry.setId("test");
- registry.setNamingRegistry(Collections.singletonMap(Attribute.class, new AbstractSAML2AttributeTranscoder.NamingFunction()));
+ registry.setNamingRegistry(Collections.singletonList(
+ new BasicNamingFunction<>(Attribute.class, new AbstractSAML2AttributeTranscoder.NamingFunction())));
registry.setApplicationContext(new MockApplicationContext());
registry.initialize();
diff --git a/idp-attribute-impl/src/main/java/net/shibboleth/idp/attribute/transcoding/impl/AttributeRegistryServiceStrategy.java b/idp-attribute-impl/src/main/java/net/shibboleth/idp/attribute/transcoding/impl/AttributeRegistryServiceStrategy.java
index a83cc5ca2..c7ed10fed 100644
--- a/idp-attribute-impl/src/main/java/net/shibboleth/idp/attribute/transcoding/impl/AttributeRegistryServiceStrategy.java
+++ b/idp-attribute-impl/src/main/java/net/shibboleth/idp/attribute/transcoding/impl/AttributeRegistryServiceStrategy.java
@@ -19,7 +19,8 @@ package net.shibboleth.idp.attribute.transcoding.impl;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.Map;
+import java.util.Collections;
+import java.util.List;
import java.util.function.Function;
import javax.annotation.Nonnull;
@@ -27,15 +28,16 @@ import javax.annotation.Nullable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
+import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry.NamingFunction;
import net.shibboleth.idp.attribute.transcoding.TranscodingRule;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
import net.shibboleth.utilities.java.support.component.AbstractIdentifiableInitializableComponent;
import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.primitive.StringSupport;
import net.shibboleth.utilities.java.support.service.ServiceException;
import net.shibboleth.utilities.java.support.service.ServiceableComponent;
@@ -49,24 +51,30 @@ public class AttributeRegistryServiceStrategy extends AbstractIdentifiableInitia
@Nonnull private final Logger log = LoggerFactory.getLogger(AttributeRegistryServiceStrategy.class);
/** Name of bean to supply naming function registry property. */
- @Nullable @NotEmpty private String namingRegistry;
+ @Nullable @NonnullElements private Collection<NamingFunction<?>> namingRegistry;
/**
- * Set the name of the bean providing the {@link AttributeTranscoderRegistryImpl#setNamingRegistry(Map)} value.
+ * Sets the collection of {@link NamingFunction}s to install into the registry.
*
- * @param beanName name of bean of type {@link Map}
+ * <p>This is done for auto-wiring exposure since plugins may be supplying additional functions
+ * outside the registry's own service context.</p>
+ *
+ * @param namingFunctions collection of functions to install
*/
- public void setNamingRegistry(@Nullable @NotEmpty final String beanName) {
+ @Autowired
+ public void setNamingRegistry(@Nullable @NonnullElements final Collection<NamingFunction<?>> namingFunctions) {
ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
- namingRegistry = StringSupport.trimOrNull(beanName);
+ if (namingFunctions != null) {
+ namingRegistry = List.copyOf(namingFunctions);
+ } else {
+ namingRegistry = Collections.emptyList();
+ }
}
/** {@inheritDoc} */
@Nullable public ServiceableComponent<AttributeTranscoderRegistry> apply(
@Nullable final ApplicationContext appContext) {
-
- final Map<Class<?>,Function<?,String>> namingRegistryBean = appContext.getBean(namingRegistry, Map.class);
final Collection<TranscodingRule> mappingBeans = appContext.getBeansOfType(TranscodingRule.class).values();
final Collection<TranscodingRuleLoader> loaderBeans =
@@ -83,7 +91,7 @@ public class AttributeRegistryServiceStrategy extends AbstractIdentifiableInitia
final AttributeTranscoderRegistryImpl registry = new AttributeTranscoderRegistryImpl();
registry.setId(getId());
registry.setApplicationContext(appContext);
- registry.setNamingRegistry(namingRegistryBean);
+ registry.setNamingRegistry(namingRegistry);
registry.setTranscoderRegistry(holder);
try {
diff --git a/idp-attribute-impl/src/main/java/net/shibboleth/idp/attribute/transcoding/impl/AttributeTranscoderRegistryImpl.java b/idp-attribute-impl/src/main/java/net/shibboleth/idp/attribute/transcoding/impl/AttributeTranscoderRegistryImpl.java
index 096d9b051..2f1483dff 100644
--- a/idp-attribute-impl/src/main/java/net/shibboleth/idp/attribute/transcoding/impl/AttributeTranscoderRegistryImpl.java
+++ b/idp-attribute-impl/src/main/java/net/shibboleth/idp/attribute/transcoding/impl/AttributeTranscoderRegistryImpl.java
@@ -90,22 +90,18 @@ public class AttributeTranscoderRegistryImpl extends AbstractServiceableComponen
/**
* Installs registry of naming functions mapped against the types of objects they support.
*
- * @param registry map of types to naming functions
+ * @param registry collection of naming functions for indexing
*/
- public void setNamingRegistry(@Nonnull @NonnullElements final Map<Class<?>,Function<?,String>> registry) {
+ public void setNamingRegistry(@Nullable @NonnullElements final Collection<NamingFunction<?>> registry) {
ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
namingFunctionRegistry.clear();
- if (registry == null) {
- return;
+ if (registry != null) {
+ registry.forEach(nf -> {
+ namingFunctionRegistry.put(nf.getType(), nf.getFunction());
+ });
}
-
- registry.forEach((k,v) -> {
- if (k != null && v != null) {
- namingFunctionRegistry.put(k, v);
- }
- });
}
/**
diff --git a/idp-attribute-impl/src/test/java/net/shibboleth/idp/attribute/transcoding/impl/AttributeTranscoderRegistryImplTest.java b/idp-attribute-impl/src/test/java/net/shibboleth/idp/attribute/transcoding/impl/AttributeTranscoderRegistryImplTest.java
index 2b6656c00..a86b7a2f9 100644
--- a/idp-attribute-impl/src/test/java/net/shibboleth/idp/attribute/transcoding/impl/AttributeTranscoderRegistryImplTest.java
+++ b/idp-attribute-impl/src/test/java/net/shibboleth/idp/attribute/transcoding/impl/AttributeTranscoderRegistryImplTest.java
@@ -24,6 +24,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
+import java.util.function.Function;
import static org.testng.Assert.*;
import org.testng.annotations.AfterClass;
@@ -40,9 +41,10 @@ import net.shibboleth.idp.attribute.IdPAttribute;
import net.shibboleth.idp.attribute.StringAttributeValue;
import net.shibboleth.idp.attribute.transcoding.AttributeTranscoder;
import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
+import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry.NamingFunction;
+import net.shibboleth.idp.attribute.transcoding.BasicNamingFunction;
import net.shibboleth.idp.attribute.transcoding.TranscoderSupport;
import net.shibboleth.idp.attribute.transcoding.TranscodingRule;
-import net.shibboleth.idp.attribute.transcoding.impl.AttributeTranscoderRegistryImpl;
import net.shibboleth.utilities.java.support.collection.Pair;
import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
@@ -58,7 +60,13 @@ public class AttributeTranscoderRegistryImplTest {
registry = new AttributeTranscoderRegistryImpl();
registry.setId("test");
- registry.setNamingRegistry(Collections.singletonMap(Pair.class, (Pair<?,?> p) -> "{Pair}" + p.getFirst().toString()));
+ final NamingFunction nf = new BasicNamingFunction<>(Pair.class,
+ new Function<Pair,String>() {
+ public String apply(final Pair p) {
+ return "{Pair}" + p.getFirst().toString();
+ }
+ });
+ registry.setNamingRegistry(Collections.singletonList(nf));
final PairTranscoder transcoder = new PairTranscoder();
transcoder.initialize();
diff --git a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/attribute/transcoding/impl/CASScopedStringAttributeTranscoderTest.java b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/attribute/transcoding/impl/CASScopedStringAttributeTranscoderTest.java
index 6380fa70f..20434a5ad 100644
--- a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/attribute/transcoding/impl/CASScopedStringAttributeTranscoderTest.java
+++ b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/attribute/transcoding/impl/CASScopedStringAttributeTranscoderTest.java
@@ -33,6 +33,7 @@ import net.shibboleth.idp.attribute.IdPAttributeValue;
import net.shibboleth.idp.attribute.ScopedStringAttributeValue;
import net.shibboleth.idp.attribute.StringAttributeValue;
import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
+import net.shibboleth.idp.attribute.transcoding.BasicNamingFunction;
import net.shibboleth.idp.attribute.transcoding.TranscoderSupport;
import net.shibboleth.idp.attribute.transcoding.TranscodingRule;
import net.shibboleth.idp.attribute.transcoding.impl.AttributeTranscoderRegistryImpl;
@@ -67,8 +68,8 @@ public class CASScopedStringAttributeTranscoderTest {
final CASScopedStringAttributeTranscoder transcoder = new CASScopedStringAttributeTranscoder();
transcoder.initialize();
- registry.setNamingRegistry(Collections.singletonMap(transcoder.getEncodedType(),
- new AbstractCASAttributeTranscoder.NamingFunction()));
+ registry.setNamingRegistry(Collections.singletonList(
+ new BasicNamingFunction<>(transcoder.getEncodedType(), new AbstractCASAttributeTranscoder.NamingFunction())));
final Map<String,Object> ruleset1 = new HashMap<>();
ruleset1.put(AttributeTranscoderRegistry.PROP_ID, ATTR_ID);
diff --git a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/attribute/transcoding/impl/CASStringAttributeTranscoderTest.java b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/attribute/transcoding/impl/CASStringAttributeTranscoderTest.java
index ede574406..78a8489d2 100644
--- a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/attribute/transcoding/impl/CASStringAttributeTranscoderTest.java
+++ b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/attribute/transcoding/impl/CASStringAttributeTranscoderTest.java
@@ -37,6 +37,7 @@ import net.shibboleth.idp.attribute.IdPAttributeValue;
import net.shibboleth.idp.attribute.ScopedStringAttributeValue;
import net.shibboleth.idp.attribute.StringAttributeValue;
import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
+import net.shibboleth.idp.attribute.transcoding.BasicNamingFunction;
import net.shibboleth.idp.attribute.transcoding.TranscoderSupport;
import net.shibboleth.idp.attribute.transcoding.TranscodingRule;
import net.shibboleth.idp.attribute.transcoding.impl.AttributeTranscoderRegistryImpl;
@@ -63,8 +64,8 @@ public class CASStringAttributeTranscoderTest {
final CASStringAttributeTranscoder transcoder = new CASStringAttributeTranscoder();
transcoder.initialize();
- registry.setNamingRegistry(Collections.singletonMap(transcoder.getEncodedType(),
- new AbstractCASAttributeTranscoder.NamingFunction()));
+ registry.setNamingRegistry(Collections.singletonList(
+ new BasicNamingFunction<>(transcoder.getEncodedType(), new AbstractCASAttributeTranscoder.NamingFunction())));
final Map<String,Object> ruleset1 = new HashMap<>();
ruleset1.put(AttributeTranscoderRegistry.PROP_ID, ATTR_ID);
diff --git a/idp-conf-impl/src/main/resources/net/shibboleth/idp/conf/global-system.xml b/idp-conf-impl/src/main/resources/net/shibboleth/idp/conf/global-system.xml
index 2083038bb..09791c8a4 100644
--- a/idp-conf-impl/src/main/resources/net/shibboleth/idp/conf/global-system.xml
+++ b/idp-conf-impl/src/main/resources/net/shibboleth/idp/conf/global-system.xml
@@ -105,6 +105,7 @@
<value>idp.authn.resolveAttribute</value>
<value>idp.nameid.saml1.legacyGenerator</value>
<value>idp.nameid.saml2.legacyGenerator</value>
+ <value>idp.service.attribute.registry.namingRegistry</value>
</list>
</property>
</bean>
@@ -328,23 +329,26 @@
p:useDefaultTimeZone="#{getObject('shibboleth.AuditDefaultTimeZone') ?: false}"
p:fieldReplacements="#{getObject('shibboleth.AuditFieldReplacementMap')}" />
- <!-- Default attribute mapping support for new registry service, exposed here for extension use. -->
-
- <bean id="shibboleth.DefaultNamingRegistry"
- class="org.springframework.beans.factory.config.MapFactoryBean">
- <property name="sourceMap">
- <map>
- <entry key="#{T(org.opensaml.saml.saml2.core.Attribute)}">
- <bean class="net.shibboleth.idp.saml.attribute.transcoding.AbstractSAML2AttributeTranscoder.NamingFunction" />
- </entry>
- <entry key="#{T(org.opensaml.saml.saml1.core.AttributeDesignator)}">
- <bean class="net.shibboleth.idp.saml.attribute.transcoding.AbstractSAML1AttributeTranscoder.NamingFunction" />
- </entry>
- <entry key="#{T(net.shibboleth.idp.cas.attribute.Attribute)}">
- <bean class="net.shibboleth.idp.cas.attribute.AbstractCASAttributeTranscoder.NamingFunction" />
- </entry>
- </map>
- </property>
+ <!-- Default attribute mapping support for registry service, exposed here for extension use. -->
+
+ <bean id="shibboleth.RegistryNamingFunction" abstract="true"
+ class="net.shibboleth.idp.attribute.transcoding.BasicNamingFunction" />
+
+ <!-- Built-in naming functions. -->
+ <bean parent="shibboleth.RegistryNamingFunction" c:claz="org.opensaml.saml.saml2.core.Attribute">
+ <constructor-arg name="function">
+ <bean class="net.shibboleth.idp.saml.attribute.transcoding.AbstractSAML2AttributeTranscoder.NamingFunction" />
+ </constructor-arg>
+ </bean>
+ <bean parent="shibboleth.RegistryNamingFunction" c:claz="org.opensaml.saml.saml1.core.AttributeDesignator">
+ <constructor-arg name="function">
+ <bean class="net.shibboleth.idp.saml.attribute.transcoding.AbstractSAML1AttributeTranscoder.NamingFunction" />
+ </constructor-arg>
+ </bean>
+ <bean parent="shibboleth.RegistryNamingFunction" c:claz="net.shibboleth.idp.cas.attribute.Attribute">
+ <constructor-arg name="function">
+ <bean class="net.shibboleth.idp.cas.attribute.AbstractCASAttributeTranscoder.NamingFunction" />
+ </constructor-arg>
</bean>
</beans>
diff --git a/idp-conf-impl/src/main/resources/net/shibboleth/idp/conf/services-system.xml b/idp-conf-impl/src/main/resources/net/shibboleth/idp/conf/services-system.xml
index 0b3b3289d..14de4d60c 100644
--- a/idp-conf-impl/src/main/resources/net/shibboleth/idp/conf/services-system.xml
+++ b/idp-conf-impl/src/main/resources/net/shibboleth/idp/conf/services-system.xml
@@ -62,8 +62,7 @@
p:beanFactoryPostProcessors-ref="shibboleth.PropertySourcesPlaceholderConfigurer">
<constructor-arg name="claz" value="net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry" />
<constructor-arg name="strategy">
- <bean class="net.shibboleth.idp.attribute.transcoding.impl.AttributeRegistryServiceStrategy"
- p:namingRegistry="#{'%{idp.service.attribute.registry.namingRegistry:shibboleth.DefaultNamingRegistry}'.trim()}" />
+ <bean class="net.shibboleth.idp.attribute.transcoding.impl.AttributeRegistryServiceStrategy" />
</constructor-arg>
</bean>
<bean id ="shibboleth.DefaultAttributeRegistryResources" class="net.shibboleth.ext.spring.factory.CombiningListFactoryBean"
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1ByteAttributeTranscoderTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1ByteAttributeTranscoderTest.java
index 885b2f10d..a58414610 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1ByteAttributeTranscoderTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1ByteAttributeTranscoderTest.java
@@ -34,6 +34,7 @@ import net.shibboleth.idp.attribute.IdPRequestedAttribute;
import net.shibboleth.idp.attribute.ScopedStringAttributeValue;
import net.shibboleth.idp.attribute.StringAttributeValue;
import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
+import net.shibboleth.idp.attribute.transcoding.BasicNamingFunction;
import net.shibboleth.idp.attribute.transcoding.TranscoderSupport;
import net.shibboleth.idp.attribute.transcoding.TranscodingRule;
import net.shibboleth.idp.attribute.transcoding.impl.AttributeTranscoderRegistryImpl;
@@ -93,8 +94,8 @@ public class SAML1ByteAttributeTranscoderTest extends OpenSAMLInitBaseTestCase {
final SAML1ByteAttributeTranscoder transcoder = new SAML1ByteAttributeTranscoder();
transcoder.initialize();
- registry.setNamingRegistry(Collections.singletonMap(transcoder.getEncodedType(),
- new AbstractSAML1AttributeTranscoder.NamingFunction()));
+ registry.setNamingRegistry(Collections.singletonList(
+ new BasicNamingFunction<>(transcoder.getEncodedType(), new AbstractSAML1AttributeTranscoder.NamingFunction())));
final Map<String,Object> ruleset1 = new HashMap<>();
ruleset1.put(AttributeTranscoderRegistry.PROP_ID, ATTR_NAME);
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1ScopedStringAttributeTranscoderTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1ScopedStringAttributeTranscoderTest.java
index 3c6beb6b1..93378002e 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1ScopedStringAttributeTranscoderTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1ScopedStringAttributeTranscoderTest.java
@@ -33,6 +33,7 @@ import net.shibboleth.idp.attribute.IdPRequestedAttribute;
import net.shibboleth.idp.attribute.ScopedStringAttributeValue;
import net.shibboleth.idp.attribute.StringAttributeValue;
import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
+import net.shibboleth.idp.attribute.transcoding.BasicNamingFunction;
import net.shibboleth.idp.attribute.transcoding.TranscoderSupport;
import net.shibboleth.idp.attribute.transcoding.TranscodingRule;
import net.shibboleth.idp.attribute.transcoding.impl.AttributeTranscoderRegistryImpl;
@@ -97,8 +98,8 @@ public class SAML1ScopedStringAttributeTranscoderTest extends OpenSAMLInitBaseTe
final SAML1ScopedStringAttributeTranscoder transcoder = new SAML1ScopedStringAttributeTranscoder();
transcoder.initialize();
- registry.setNamingRegistry(Collections.singletonMap(transcoder.getEncodedType(),
- new AbstractSAML1AttributeTranscoder.NamingFunction()));
+ registry.setNamingRegistry(Collections.singletonList(
+ new BasicNamingFunction<>(transcoder.getEncodedType(), new AbstractSAML1AttributeTranscoder.NamingFunction())));
final Map<String,Object> ruleset1 = new HashMap<>();
ruleset1.put(AttributeTranscoderRegistry.PROP_ID, ATTR_NAME);
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1StringAttributeTranscoderTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1StringAttributeTranscoderTest.java
index 516c1e618..77128ae83 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1StringAttributeTranscoderTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML1StringAttributeTranscoderTest.java
@@ -33,6 +33,7 @@ import net.shibboleth.idp.attribute.IdPRequestedAttribute;
import net.shibboleth.idp.attribute.ScopedStringAttributeValue;
import net.shibboleth.idp.attribute.StringAttributeValue;
import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
+import net.shibboleth.idp.attribute.transcoding.BasicNamingFunction;
import net.shibboleth.idp.attribute.transcoding.TranscoderSupport;
import net.shibboleth.idp.attribute.transcoding.TranscodingRule;
import net.shibboleth.idp.attribute.transcoding.impl.AttributeTranscoderRegistryImpl;
@@ -87,8 +88,8 @@ public class SAML1StringAttributeTranscoderTest extends OpenSAMLInitBaseTestCase
final SAML1StringAttributeTranscoder transcoder = new SAML1StringAttributeTranscoder();
transcoder.initialize();
- registry.setNamingRegistry(Collections.singletonMap(transcoder.getEncodedType(),
- new AbstractSAML1AttributeTranscoder.NamingFunction()));
+ registry.setNamingRegistry(Collections.singletonList(
+ new BasicNamingFunction<>(transcoder.getEncodedType(), new AbstractSAML1AttributeTranscoder.NamingFunction())));
final Map<String,Object> ruleset1 = new HashMap<>();
ruleset1.put(AttributeTranscoderRegistry.PROP_ID, ATTR_NAME);
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2ByteAttributeTranscoderTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2ByteAttributeTranscoderTest.java
index 2452c4e85..0bdfd83db 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2ByteAttributeTranscoderTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2ByteAttributeTranscoderTest.java
@@ -49,6 +49,7 @@ import net.shibboleth.idp.attribute.IdPRequestedAttribute;
import net.shibboleth.idp.attribute.ScopedStringAttributeValue;
import net.shibboleth.idp.attribute.StringAttributeValue;
import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
+import net.shibboleth.idp.attribute.transcoding.BasicNamingFunction;
import net.shibboleth.idp.attribute.transcoding.TranscoderSupport;
import net.shibboleth.idp.attribute.transcoding.TranscodingRule;
import net.shibboleth.idp.attribute.transcoding.impl.AttributeTranscoderRegistryImpl;
@@ -94,8 +95,8 @@ public class SAML2ByteAttributeTranscoderTest extends OpenSAMLInitBaseTestCase {
final SAML2ByteAttributeTranscoder transcoder = new SAML2ByteAttributeTranscoder();
transcoder.initialize();
- registry.setNamingRegistry(Collections.singletonMap(transcoder.getEncodedType(),
- new AbstractSAML2AttributeTranscoder.NamingFunction()));
+ registry.setNamingRegistry(Collections.singletonList(
+ new BasicNamingFunction<>(transcoder.getEncodedType(), new AbstractSAML2AttributeTranscoder.NamingFunction())));
final Map<String,Object> ruleset1 = new HashMap<>();
ruleset1.put(AttributeTranscoderRegistry.PROP_ID, ATTR_NAME);
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2ScopedStringAttributeTranscoderTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2ScopedStringAttributeTranscoderTest.java
index 1608dd9a1..5c88674ba 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2ScopedStringAttributeTranscoderTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2ScopedStringAttributeTranscoderTest.java
@@ -33,6 +33,7 @@ import net.shibboleth.idp.attribute.IdPRequestedAttribute;
import net.shibboleth.idp.attribute.ScopedStringAttributeValue;
import net.shibboleth.idp.attribute.StringAttributeValue;
import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
+import net.shibboleth.idp.attribute.transcoding.BasicNamingFunction;
import net.shibboleth.idp.attribute.transcoding.TranscoderSupport;
import net.shibboleth.idp.attribute.transcoding.TranscodingRule;
import net.shibboleth.idp.attribute.transcoding.impl.AttributeTranscoderRegistryImpl;
@@ -91,8 +92,8 @@ public class SAML2ScopedStringAttributeTranscoderTest extends OpenSAMLInitBaseTe
final SAML2ScopedStringAttributeTranscoder transcoder = new SAML2ScopedStringAttributeTranscoder();
transcoder.initialize();
- registry.setNamingRegistry(Collections.singletonMap(transcoder.getEncodedType(),
- new AbstractSAML2AttributeTranscoder.NamingFunction()));
+ registry.setNamingRegistry(Collections.singletonList(
+ new BasicNamingFunction<>(transcoder.getEncodedType(), new AbstractSAML2AttributeTranscoder.NamingFunction())));
final Map<String,Object> ruleset1 = new HashMap<>();
ruleset1.put(AttributeTranscoderRegistry.PROP_ID, ATTR_NAME);
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2StringAttributeTranscoderTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2StringAttributeTranscoderTest.java
index 7cf451fab..89968b76b 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2StringAttributeTranscoderTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2StringAttributeTranscoderTest.java
@@ -32,6 +32,7 @@ import net.shibboleth.idp.attribute.IdPRequestedAttribute;
import net.shibboleth.idp.attribute.ScopedStringAttributeValue;
import net.shibboleth.idp.attribute.StringAttributeValue;
import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
+import net.shibboleth.idp.attribute.transcoding.BasicNamingFunction;
import net.shibboleth.idp.attribute.transcoding.TranscoderSupport;
import net.shibboleth.idp.attribute.transcoding.TranscodingRule;
import net.shibboleth.idp.attribute.transcoding.impl.AttributeTranscoderRegistryImpl;
@@ -87,8 +88,8 @@ public class SAML2StringAttributeTranscoderTest extends OpenSAMLInitBaseTestCase
final SAML2StringAttributeTranscoder transcoder = new SAML2StringAttributeTranscoder();
transcoder.initialize();
- registry.setNamingRegistry(Collections.singletonMap(transcoder.getEncodedType(),
- new AbstractSAML2AttributeTranscoder.NamingFunction()));
+ registry.setNamingRegistry(Collections.singletonList(
+ new BasicNamingFunction<>(transcoder.getEncodedType(), new AbstractSAML2AttributeTranscoder.NamingFunction())));
final Map<String,Object> ruleset1 = new HashMap<>();
ruleset1.put(AttributeTranscoderRegistry.PROP_ID, ATTR_NAME);
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2XMLObjectAttributeTranscoderTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2XMLObjectAttributeTranscoderTest.java
index 5ee1386e4..6a84d18b4 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2XMLObjectAttributeTranscoderTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2XMLObjectAttributeTranscoderTest.java
@@ -34,6 +34,7 @@ import net.shibboleth.idp.attribute.IdPRequestedAttribute;
import net.shibboleth.idp.attribute.StringAttributeValue;
import net.shibboleth.idp.attribute.XMLObjectAttributeValue;
import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
+import net.shibboleth.idp.attribute.transcoding.BasicNamingFunction;
import net.shibboleth.idp.attribute.transcoding.TranscoderSupport;
import net.shibboleth.idp.attribute.transcoding.TranscodingRule;
import net.shibboleth.idp.attribute.transcoding.impl.AttributeTranscoderRegistryImpl;
@@ -92,8 +93,8 @@ public class SAML2XMLObjectAttributeTranscoderTest extends OpenSAMLInitBaseTestC
final SAML2XMLObjectAttributeTranscoder transcoder = new SAML2XMLObjectAttributeTranscoder();
transcoder.initialize();
- registry.setNamingRegistry(Collections.singletonMap(transcoder.getEncodedType(),
- new AbstractSAML2AttributeTranscoder.NamingFunction()));
+ registry.setNamingRegistry(Collections.singletonList(
+ new BasicNamingFunction<>(transcoder.getEncodedType(), new AbstractSAML2AttributeTranscoder.NamingFunction())));
final Map<String,Object> ruleset1 = new HashMap<>();
ruleset1.put(AttributeTranscoderRegistry.PROP_ID, ATTR_NAME);
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml1/profile/impl/AddAttributeStatementToAssertionTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml1/profile/impl/AddAttributeStatementToAssertionTest.java
index 1defbe594..91f3eb645 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml1/profile/impl/AddAttributeStatementToAssertionTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml1/profile/impl/AddAttributeStatementToAssertionTest.java
@@ -31,6 +31,7 @@ import net.shibboleth.idp.attribute.IdPAttribute;
import net.shibboleth.idp.attribute.StringAttributeValue;
import net.shibboleth.idp.attribute.context.AttributeContext;
import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
+import net.shibboleth.idp.attribute.transcoding.BasicNamingFunction;
import net.shibboleth.idp.attribute.transcoding.TranscodingRule;
import net.shibboleth.idp.attribute.transcoding.impl.AttributeTranscoderRegistryImpl;
import net.shibboleth.idp.profile.IdPEventIds;
@@ -98,8 +99,8 @@ public class AddAttributeStatementToAssertionTest extends OpenSAMLInitBaseTestCa
registry = new AttributeTranscoderRegistryImpl();
registry.setId("test");
- registry.setNamingRegistry(Collections.singletonMap(AttributeDesignator.class,
- new AbstractSAML1AttributeTranscoder.NamingFunction()));
+ registry.setNamingRegistry(Collections.singletonList(
+ new BasicNamingFunction<>(AttributeDesignator.class, new AbstractSAML1AttributeTranscoder.NamingFunction())));
final SAML1StringAttributeTranscoder transcoder = new SAML1StringAttributeTranscoder();
transcoder.initialize();
@@ -197,9 +198,9 @@ public class AddAttributeStatementToAssertionTest extends OpenSAMLInitBaseTestCa
final AttributeTranscoderRegistryImpl localregistry = new AttributeTranscoderRegistryImpl();
localregistry.setId("test");
- localregistry.setNamingRegistry(Collections.singletonMap(AttributeDesignator.class,
- new AbstractSAML1AttributeTranscoder.NamingFunction()));
-
+ localregistry.setNamingRegistry(Collections.singletonList(
+ new BasicNamingFunction<>(AttributeDesignator.class, new AbstractSAML1AttributeTranscoder.NamingFunction())));
+
final MockSAML1StringAttributeTranscoder transcoder = new MockSAML1StringAttributeTranscoder();
transcoder.initialize();
@@ -238,8 +239,8 @@ public class AddAttributeStatementToAssertionTest extends OpenSAMLInitBaseTestCa
final AttributeTranscoderRegistryImpl localregistry = new AttributeTranscoderRegistryImpl();
localregistry.setId("test");
- localregistry.setNamingRegistry(Collections.singletonMap(AttributeDesignator.class,
- new AbstractSAML1AttributeTranscoder.NamingFunction()));
+ localregistry.setNamingRegistry(Collections.singletonList(
+ new BasicNamingFunction<>(AttributeDesignator.class, new AbstractSAML1AttributeTranscoder.NamingFunction())));
final MockSAML1StringAttributeTranscoder transcoder = new MockSAML1StringAttributeTranscoder();
transcoder.initialize();
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/AddAttributeStatementToAssertionTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/AddAttributeStatementToAssertionTest.java
index 66daedddd..738756655 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/AddAttributeStatementToAssertionTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/AddAttributeStatementToAssertionTest.java
@@ -31,6 +31,7 @@ import net.shibboleth.idp.attribute.IdPAttribute;
import net.shibboleth.idp.attribute.StringAttributeValue;
import net.shibboleth.idp.attribute.context.AttributeContext;
import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
+import net.shibboleth.idp.attribute.transcoding.BasicNamingFunction;
import net.shibboleth.idp.attribute.transcoding.TranscodingRule;
import net.shibboleth.idp.attribute.transcoding.impl.AttributeTranscoderRegistryImpl;
import net.shibboleth.idp.profile.IdPEventIds;
@@ -100,8 +101,8 @@ public class AddAttributeStatementToAssertionTest extends OpenSAMLInitBaseTestCa
registry = new AttributeTranscoderRegistryImpl();
registry.setId("test");
- registry.setNamingRegistry(Collections.singletonMap(Attribute.class,
- new AbstractSAML2AttributeTranscoder.NamingFunction()));
+ registry.setNamingRegistry(Collections.singletonList(
+ new BasicNamingFunction<>(Attribute.class, new AbstractSAML2AttributeTranscoder.NamingFunction())));
final SAML2StringAttributeTranscoder transcoder = new SAML2StringAttributeTranscoder();
transcoder.initialize();
@@ -205,8 +206,8 @@ public class AddAttributeStatementToAssertionTest extends OpenSAMLInitBaseTestCa
final AttributeTranscoderRegistryImpl localregistry = new AttributeTranscoderRegistryImpl();
localregistry.setId("test");
- localregistry.setNamingRegistry(Collections.singletonMap(Attribute.class,
- new AbstractSAML2AttributeTranscoder.NamingFunction()));
+ localregistry.setNamingRegistry(Collections.singletonList(
+ new BasicNamingFunction<>(Attribute.class, new AbstractSAML2AttributeTranscoder.NamingFunction())));
final MockSAML2StringAttributeTranscoder transcoder = new MockSAML2StringAttributeTranscoder();
transcoder.initialize();
@@ -246,8 +247,8 @@ public class AddAttributeStatementToAssertionTest extends OpenSAMLInitBaseTestCa
final AttributeTranscoderRegistryImpl localregistry = new AttributeTranscoderRegistryImpl();
localregistry.setId("test");
- localregistry.setNamingRegistry(Collections.singletonMap(Attribute.class,
- new AbstractSAML2AttributeTranscoder.NamingFunction()));
+ localregistry.setNamingRegistry(Collections.singletonList(
+ new BasicNamingFunction<>(Attribute.class, new AbstractSAML2AttributeTranscoder.NamingFunction())));
final MockSAML2StringAttributeTranscoder transcoder = new MockSAML2StringAttributeTranscoder();
transcoder.initialize();
diff --git a/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/impl/metadata/attribute-registry-service.xml b/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/impl/metadata/attribute-registry-service.xml
index 271cd9a1b..a97baa7ba 100644
--- a/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/impl/metadata/attribute-registry-service.xml
+++ b/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/impl/metadata/attribute-registry-service.xml
@@ -1,24 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:c="http://www.springframework.org/schema/c"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+ http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"
default-init-method="initialize"
default-destroy-method="destroy">
-
- <bean id="shibboleth.AttributeRegistryService" class="net.shibboleth.ext.spring.service.ReloadableSpringService" p:failFast="true"
- p:reloadCheckDelay="0">
- <constructor-arg name="claz"
- value="net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry" />
- <constructor-arg name="strategy">
- <bean class="net.shibboleth.idp.attribute.transcoding.impl.AttributeRegistryServiceStrategy"
- p:id="shibboleth.AttributeRegistryService"
- p:namingRegistry="DefaultNamingRegistry" />
+ <!-- Needed to allow for auto-wiring of descriptors and other componnents. -->
+ <context:annotation-config />
+
+ <bean id="SAML2NamingFunction" class="net.shibboleth.idp.attribute.transcoding.BasicNamingFunction"
+ c:claz="org.opensaml.saml.saml2.core.Attribute">
+ <constructor-arg name="function">
+ <bean class="net.shibboleth.idp.saml.attribute.transcoding.AbstractSAML2AttributeTranscoder.NamingFunction" />
</constructor-arg>
+ </bean>
+
+ <bean id="RegistryServiceStrategy" class="net.shibboleth.idp.attribute.transcoding.impl.AttributeRegistryServiceStrategy"
+ p:id="shibboleth.AttributeRegistryService" />
+
+ <bean id="shibboleth.AttributeRegistryService" class="net.shibboleth.ext.spring.service.ReloadableSpringService"
+ c:claz="net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry"
+ c:strategy-ref="RegistryServiceStrategy"
+ p:failFast="true"
+ p:reloadCheckDelay="0">
<property name="serviceConfigurations">
<util:list>
<value>net/shibboleth/idp/saml/impl/metadata/attribute-registry.xml</value>
diff --git a/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/impl/metadata/attribute-registry.xml b/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/impl/metadata/attribute-registry.xml
index c71cafc34..307cf3132 100644
--- a/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/impl/metadata/attribute-registry.xml
+++ b/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/impl/metadata/attribute-registry.xml
@@ -21,12 +21,6 @@
<bean id="SAML2XMLObjectTranscoder"
class="net.shibboleth.idp.saml.attribute.transcoding.impl.SAML2XMLObjectAttributeTranscoder" />
- <util:map id="DefaultNamingRegistry">
- <entry key="#{T(org.opensaml.saml.saml2.core.Attribute)}">
- <bean class="net.shibboleth.idp.saml.attribute.transcoding.AbstractSAML2AttributeTranscoder.NamingFunction" />
- </entry>
- </util:map>
-
<bean id="shibboleth.TranscodingRuleLoader"
class="net.shibboleth.idp.attribute.transcoding.impl.TranscodingRuleLoader"
c:dir="net/shibboleth/idp/saml/impl/metadata/rules" />
diff --git a/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/impl/profile/saml1Mapper.xml b/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/impl/profile/saml1Mapper.xml
index fc1f0de0b..f26fd38ae 100644
--- a/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/impl/profile/saml1Mapper.xml
+++ b/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/impl/profile/saml1Mapper.xml
@@ -2,6 +2,7 @@
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="http://www.springframework.org/schema/util"
+ xmlns:c="http://www.springframework.org/schema/c"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"
@@ -78,15 +79,15 @@
</util:list>
- <util:map id="DefaultNamingRegistry">
- <entry key="#{T(org.opensaml.saml.saml1.core.AttributeDesignator)}">
+ <bean id="SAML1NamingFunction" class="net.shibboleth.idp.attribute.transcoding.BasicNamingFunction"
+ c:claz="org.opensaml.saml.saml1.core.AttributeDesignator">
+ <constructor-arg name="function">
<bean class="net.shibboleth.idp.saml.attribute.transcoding.AbstractSAML1AttributeTranscoder.NamingFunction" />
- </entry>
- </util:map>
-
+ </constructor-arg>
+ </bean>
<bean id="AttributeTranscoderRegistry" class="net.shibboleth.idp.attribute.transcoding.impl.AttributeTranscoderRegistryImpl"
- p:namingRegistry-ref="DefaultNamingRegistry"
+ p:namingRegistry-ref="SAML1NamingFunction"
p:transcoderRegistry-ref="DefaultAttributeRegistry" />
</beans>
diff --git a/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/impl/profile/saml2Mapper.xml b/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/impl/profile/saml2Mapper.xml
index 6d1ee6f10..acb33001f 100644
--- a/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/impl/profile/saml2Mapper.xml
+++ b/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/impl/profile/saml2Mapper.xml
@@ -2,6 +2,7 @@
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="http://www.springframework.org/schema/util"
+ xmlns:c="http://www.springframework.org/schema/c"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"
@@ -77,15 +78,15 @@
</util:list>
- <util:map id="DefaultNamingRegistry">
- <entry key="#{T(org.opensaml.saml.saml2.core.Attribute)}">
+ <bean id="SAML2NamingFunction" class="net.shibboleth.idp.attribute.transcoding.BasicNamingFunction"
+ c:claz="org.opensaml.saml.saml2.core.Attribute">
+ <constructor-arg name="function">
<bean class="net.shibboleth.idp.saml.attribute.transcoding.AbstractSAML2AttributeTranscoder.NamingFunction" />
- </entry>
- </util:map>
-
+ </constructor-arg>
+ </bean>
<bean id="AttributeTranscoderRegistry" class="net.shibboleth.idp.attribute.transcoding.impl.AttributeTranscoderRegistryImpl"
- p:namingRegistry-ref="DefaultNamingRegistry"
+ p:namingRegistry-ref="SAML2NamingFunction"
p:transcoderRegistry-ref="DefaultAttributeRegistry" />
</beans>
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list