[java-identity-provider] branch master updated: IDP-1121 remove AttributeDef and DataConnector getters from the Attribute Resolver Implementation
Rod Widdowson
rdw at steadingsoftware.com
Thu Apr 18 05:38:26 EDT 2019
This is an automated email from the git hooks/post-receive script.
rdw pushed a commit to branch master
in repository java-identity-provider.
View the commit online:
http://git.shibboleth.net/view/?p=java-identity-provider.git;a=commit;h=bc13ec3b3a6ea9c117d4ea4a4fb3dff6971b6270
The following commit(s) were added to refs/heads/master by this push:
new bc13ec3 IDP-1121 remove AttributeDef and DataConnector getters from the Attribute Resolver Implementation
bc13ec3 is described below
commit bc13ec3b3a6ea9c117d4ea4a4fb3dff6971b6270
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Thu Apr 18 10:24:26 2019 +0100
IDP-1121 remove AttributeDef and DataConnector getters from the Attribute Resolver Implementation
https://issues.shibboleth.net/jira/browse/IDP-1121
---
.../idp/attribute/resolver/AttributeResolver.java | 20 ++++-------
.../resolver/impl/AttributeResolverImpl.java | 19 +++++++++--
.../impl/AttributeResolverServiceGaugeSet.java | 12 ++++---
.../AbstractSAMLAttributeDesignatorsMapper.java | 39 +++++++++++-----------
.../mapping/AbstractSAMLAttributesMapper.java | 37 ++++++++++----------
5 files changed, 66 insertions(+), 61 deletions(-)
diff --git a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AttributeResolver.java b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AttributeResolver.java
index 8d2e837..1c7c8b3 100644
--- a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AttributeResolver.java
+++ b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AttributeResolver.java
@@ -17,14 +17,14 @@
package net.shibboleth.idp.attribute.resolver;
-import java.util.Map;
+import java.util.Collection;
import javax.annotation.Nonnull;
import javax.annotation.concurrent.ThreadSafe;
+import net.shibboleth.idp.attribute.AttributeEncoder;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
-import net.shibboleth.utilities.java.support.annotation.constraint.Unmodifiable;
+import net.shibboleth.utilities.java.support.collection.Pair;
import net.shibboleth.utilities.java.support.component.IdentifiedComponent;
/**
@@ -40,18 +40,12 @@ import net.shibboleth.utilities.java.support.component.IdentifiedComponent;
public interface AttributeResolver extends IdentifiedComponent {
/**
- * Gets the collection of attribute definitions for this resolver.
+ * Gets all the {@link AttributeEncoder}s for this resolver. Each encoder is linked
+ * (via being in an {@link Pair} to the name of the attribute it is associated with.
*
- * @return attribute definitions loaded in to this resolver
+ * @return The Attribute Encoders loaded in to this resolver
*/
- @Nonnull @NonnullElements @Unmodifiable Map<String, AttributeDefinition> getAttributeDefinitions();
-
- /**
- * Gets the unmodifiable collection of data connectors for this resolver.
- *
- * @return data connectors loaded in to this resolver
- */
- @Nonnull @NonnullElements @Unmodifiable Map<String, DataConnector> getDataConnectors();
+ @Nonnull Collection<Pair<String, AttributeEncoder<?>>> getAllEncoders();
/**
* Resolves the attribute for the give request. Note, if attributes are requested,
diff --git a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/impl/AttributeResolverImpl.java b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/impl/AttributeResolverImpl.java
index f5219f0..d2168fe 100644
--- a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/impl/AttributeResolverImpl.java
+++ b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/impl/AttributeResolverImpl.java
@@ -41,6 +41,7 @@ import org.slf4j.LoggerFactory;
import com.google.common.collect.ImmutableMap;
import net.shibboleth.ext.spring.service.AbstractServiceableComponent;
+import net.shibboleth.idp.attribute.AttributeEncoder;
import net.shibboleth.idp.attribute.EmptyAttributeValue;
import net.shibboleth.idp.attribute.IdPAttribute;
import net.shibboleth.idp.attribute.IdPAttributeValue;
@@ -60,6 +61,7 @@ import net.shibboleth.utilities.java.support.annotation.constraint.NullableEleme
import net.shibboleth.utilities.java.support.annotation.constraint.Unmodifiable;
import net.shibboleth.utilities.java.support.collection.LazyList;
import net.shibboleth.utilities.java.support.collection.LazySet;
+import net.shibboleth.utilities.java.support.collection.Pair;
import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
import net.shibboleth.utilities.java.support.component.ComponentSupport;
import net.shibboleth.utilities.java.support.logic.Constraint;
@@ -130,7 +132,7 @@ public class AttributeResolverImpl extends AbstractServiceableComponent<Attribut
*
* @return attribute definitions loaded in to this resolver
*/
- @Override @Nonnull @NonnullElements @Unmodifiable public Map<String, AttributeDefinition>
+ @Nonnull @NonnullElements @Unmodifiable public Map<String, AttributeDefinition>
getAttributeDefinitions() {
return attributeDefinitions;
}
@@ -164,7 +166,7 @@ public class AttributeResolverImpl extends AbstractServiceableComponent<Attribut
*
* @return data connectors loaded in to this resolver
*/
- @Override @Nonnull @NonnullElements @Unmodifiable public Map<String, DataConnector> getDataConnectors() {
+ @Nonnull @NonnullElements @Unmodifiable public Map<String, DataConnector> getDataConnectors() {
return dataConnectors;
}
@@ -629,5 +631,16 @@ public class AttributeResolverImpl extends AbstractServiceableComponent<Attribut
}
}
}
-
+
+ /** {@inheritDoc} */
+ public Collection<Pair<String, AttributeEncoder<?>>> getAllEncoders() {
+ final Collection<Pair<String, AttributeEncoder<?>>> result = new HashSet<>();
+
+ for (final AttributeDefinition attributeDef : getAttributeDefinitions().values()) {
+ for (final AttributeEncoder encoder : attributeDef.getAttributeEncoders()) {
+ result.add(new Pair<>(attributeDef.getId(), encoder));
+ }
+ }
+ return result;
+ }
}
\ No newline at end of file
diff --git a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/impl/AttributeResolverServiceGaugeSet.java b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/impl/AttributeResolverServiceGaugeSet.java
index 86aee3f..b70a1b8 100644
--- a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/impl/AttributeResolverServiceGaugeSet.java
+++ b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/impl/AttributeResolverServiceGaugeSet.java
@@ -62,11 +62,13 @@ public class AttributeResolverServiceGaugeSet extends ReloadableServiceGaugeSet
if (component != null) {
try {
final AttributeResolver resolver = component.getComponent();
- final Collection<DataConnector> connectors = resolver.getDataConnectors().values();
-
- for (final DataConnector connector: connectors) {
- if (connector.getLastFail() != null) {
- mapBuilder.put(connector.getId(), connector.getLastFail());
+ if (resolver instanceof AttributeResolverImpl) {
+ final Collection<DataConnector> connectors =
+ ((AttributeResolverImpl) resolver).getDataConnectors().values();
+ for (final DataConnector connector: connectors) {
+ if (connector.getLastFail() != null) {
+ mapBuilder.put(connector.getId(), connector.getLastFail());
+ }
}
}
} finally {
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/attribute/mapping/AbstractSAMLAttributeDesignatorsMapper.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/attribute/mapping/AbstractSAMLAttributeDesignatorsMapper.java
index c15b765..cccd896 100644
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/attribute/mapping/AbstractSAMLAttributeDesignatorsMapper.java
+++ b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/attribute/mapping/AbstractSAMLAttributeDesignatorsMapper.java
@@ -27,27 +27,27 @@ import java.util.Map.Entry;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
+import org.opensaml.saml.saml1.core.AttributeDesignator;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.common.base.Supplier;
+import com.google.common.collect.ArrayListMultimap;
+import com.google.common.collect.HashMultimap;
+import com.google.common.collect.Multimap;
+
import net.shibboleth.idp.attribute.AttributeEncoder;
import net.shibboleth.idp.attribute.IdPAttribute;
-import net.shibboleth.idp.attribute.resolver.AttributeDefinition;
import net.shibboleth.idp.attribute.resolver.AttributeResolver;
import net.shibboleth.idp.saml.attribute.encoding.AttributeDesignatorMapperProcessor;
import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.utilities.java.support.collection.Pair;
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.logic.Constraint;
-import org.opensaml.saml.saml1.core.AttributeDesignator;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.Supplier;
-import com.google.common.collect.ArrayListMultimap;
-import com.google.common.collect.HashMultimap;
-import com.google.common.collect.Multimap;
-
/**
* The class contains the mechanics to go from a list of {@link AttributeDesignator}s to a {@link Multimap} of
* {@link String},{@link IdPAttribute} (or derived, or null). The representation as a {@link Multimap} is useful for
@@ -96,19 +96,18 @@ public abstract class AbstractSAMLAttributeDesignatorsMapper<OutType extends IdP
final Multimap<AbstractSAMLAttributeDesignatorMapper<OutType>,String> theMappers = HashMultimap.create();
- for (final AttributeDefinition attributeDef : resolver.getAttributeDefinitions().values()) {
- for (final AttributeEncoder encoder : attributeDef.getAttributeEncoders()) {
- if (encoder instanceof AttributeDesignatorMapperProcessor) {
- // There is an appropriate reverse mapper.
- final AttributeDesignatorMapperProcessor factory = (AttributeDesignatorMapperProcessor) encoder;
- final AbstractSAMLAttributeDesignatorMapper<OutType> mapper = mapperFactory.get();
- factory.populateAttributeMapper(mapper);
+ for (final Pair<String, AttributeEncoder<?>> pair : resolver.getAllEncoders()) {
+ if (pair.getSecond() instanceof AttributeDesignatorMapperProcessor) {
+ // There is an appropriate reverse mapper.
+ final AttributeDesignatorMapperProcessor factory =
+ (AttributeDesignatorMapperProcessor) pair.getSecond();
+ final AbstractSAMLAttributeDesignatorMapper<OutType> mapper = mapperFactory.get();
+ factory.populateAttributeMapper(mapper);
- theMappers.put(mapper, attributeDef.getId());
- }
+ theMappers.put(mapper, pair.getFirst());
}
}
-
+
mappers = new ArrayList<>(theMappers.values().size());
for (final Entry<AbstractSAMLAttributeDesignatorMapper<OutType>,Collection<String>> entry
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/attribute/mapping/AbstractSAMLAttributesMapper.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/attribute/mapping/AbstractSAMLAttributesMapper.java
index 7ba120b..61e88bb 100644
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/attribute/mapping/AbstractSAMLAttributesMapper.java
+++ b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/attribute/mapping/AbstractSAMLAttributesMapper.java
@@ -27,27 +27,27 @@ import java.util.Map.Entry;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
+import org.opensaml.saml.saml2.core.Attribute;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.common.base.Supplier;
+import com.google.common.collect.ArrayListMultimap;
+import com.google.common.collect.HashMultimap;
+import com.google.common.collect.Multimap;
+
import net.shibboleth.idp.attribute.AttributeEncoder;
import net.shibboleth.idp.attribute.IdPAttribute;
-import net.shibboleth.idp.attribute.resolver.AttributeDefinition;
import net.shibboleth.idp.attribute.resolver.AttributeResolver;
import net.shibboleth.idp.saml.attribute.encoding.AttributeMapperProcessor;
import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.utilities.java.support.collection.Pair;
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.logic.Constraint;
-import org.opensaml.saml.saml2.core.Attribute;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.Supplier;
-import com.google.common.collect.ArrayListMultimap;
-import com.google.common.collect.HashMultimap;
-import com.google.common.collect.Multimap;
-
/**
* The class contains the mechanics to go from a list of {@link Attribute}s (or derived) to a {@link Multimap} of
* {@link String},{@link IdPAttribute} (or derived, or null). The representation as a {@link Multimap} is useful for
@@ -97,16 +97,13 @@ public abstract class AbstractSAMLAttributesMapper<InType extends Attribute, Out
theMappers = HashMultimap.create();
- for (final AttributeDefinition attributeDef : resolver.getAttributeDefinitions().values()) {
- for (final AttributeEncoder encode : attributeDef.getAttributeEncoders()) {
- if (encode instanceof AttributeMapperProcessor) {
- // There is an appropriate reverse mapper
- final AttributeMapperProcessor factory = (AttributeMapperProcessor) encode;
- final AbstractSAMLAttributeMapper<InType,OutType> mapper = mapperFactory.get();
- factory.populateAttributeMapper(mapper);
-
- theMappers.put(mapper, attributeDef.getId());
- }
+ for (final Pair<String, AttributeEncoder<?>> pair : resolver.getAllEncoders()) {
+ if (pair.getSecond() instanceof AttributeMapperProcessor) {
+ // There is an appropriate reverse mapper
+ final AttributeMapperProcessor factory = (AttributeMapperProcessor) pair.getSecond();
+ final AbstractSAMLAttributeMapper<InType,OutType> mapper = mapperFactory.get();
+ factory.populateAttributeMapper(mapper);
+ theMappers.put(mapper, pair.getFirst());
}
}
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list