[java-identity-provider] 26/51: IDP-1121 Make AttributeDependencies and DataConnector dependencies different
Rod Widdowson
rdw at steadingsoftware.com
Wed Feb 6 08:42:57 EST 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=03e296c48aea650ad3daeac09fd55379bde71f40
commit 03e296c48aea650ad3daeac09fd55379bde71f40
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Tue Jan 22 13:59:24 2019 +0000
IDP-1121 Make AttributeDependencies and DataConnector dependencies different
https://issues.shibboleth.net/jira/browse/IDP-1121
A simple, but wide ranging change. Instead of single sets of
dependenies we have two, one for attribute definitions and one
for data connectors.
This simplifies a huge amount of complex code (for instance
DependencySupport) at the cost of a lot of boiler plate.
---
.../resolver/AbstractAttributeDefinition.java | 11 --
.../attribute/resolver/AbstractResolverPlugin.java | 84 ++++++----
.../MultipleResultAnErrorResolutionException.java | 2 +-
.../NoResultAnErrorResolutionException.java | 2 +-
.../resolver/PluginDependencySupport.java | 177 +++++++++------------
.../resolver/ResolvedAttributeDefinition.java | 9 +-
.../attribute/resolver/ResolvedDataConnector.java | 9 +-
.../resolver/ResolverDataConnectorDependency.java | 37 ++---
.../idp/attribute/resolver/ResolverPlugin.java | 15 +-
.../context/AttributeResolverWorkContext.java | 2 +-
.../resolver/AbstractAttributeDefinitionTest.java | 32 ++--
.../resolver/AbstractResolverPluginTest.java | 117 +++++++++-----
.../idp/attribute/resolver/MockDataConnector.java | 9 +-
.../resolver/PluginDependencySupportTest.java | 31 ++--
.../resolver/ResolvedAttributeDefinitionTest.java | 10 +-
.../resolver/ResolvedDataConnectorTest.java | 14 +-
.../ad/impl/PrescopedAttributeDefinition.java | 10 +-
.../ad/impl/RegexSplitAttributeDefinition.java | 7 +-
.../ad/impl/ScopedAttributeDefinition.java | 7 +-
.../ad/impl/ScriptedAttributeDefinition.java | 4 +-
.../ad/impl/SimpleAttributeDefinition.java | 7 +-
.../ad/impl/TemplateAttributeDefinition.java | 32 ++--
.../ad/mapped/impl/MappedAttributeDefinition.java | 7 +-
.../dc/impl/AbstractSearchDataConnector.java | 4 +-
.../resolver/dc/impl/ScriptedDataConnector.java | 4 +-
.../resolver/impl/AttributeResolverImpl.java | 79 +++++----
.../resolver/ad/impl/PrescopedAtributeTest.java | 29 ++--
.../resolver/ad/impl/RegexAtributeTest.java | 31 ++--
...SAML1NameIdentifierAttributeDefinitionTest.java | 30 ++--
.../impl/SAML2NameIDAttributeDefinitionTest.java | 22 +--
.../resolver/ad/impl/ScopedAttributeTest.java | 22 +--
.../resolver/ad/impl/ScriptedAttributeTest.java | 26 +--
.../resolver/ad/impl/SimpleAttributeTest.java | 26 +--
.../resolver/ad/impl/TemplateAttributeTest.java | 40 ++---
.../ad/mapped/impl/MappedAttributeTest.java | 33 ++--
.../dc/impl/ComputedIDDataConnectorTest.java | 29 ++--
.../resolver/impl/AttributeResolverImplTest.java | 81 +++++-----
...ava => BaseResolverPluginDependencyParser.java} | 33 +---
.../resolver/spring/BaseResolverPluginParser.java | 18 ++-
.../impl/AbstractResolverPluginFactoryBean.java | 57 +++++--
.../impl/AttributeResolverNamespaceHandler.java | 3 +-
.../impl/InputAttributeDefinitionParser.java | 4 +-
.../spring/impl/InputDataConnectorParser.java | 4 +-
.../resolver/spring/DependencyTypesTest.java | 3 +-
.../spring/ad/SimpleAttributeParserTest.java | 32 ++--
.../spring/dc/StoredIDDataConnectorParserTest.java | 13 +-
.../impl/AbstractPersistentIdDataConnector.java | 55 +++----
.../SAML1NameIdentifierAttributeDefinition.java | 5 +-
.../impl/SAML2NameIDAttributeDefinition.java | 5 +-
.../impl/TransientIdAttributeDefinitionTest.java | 8 +-
.../net/shibboleth/idp/saml/impl/TestSources.java | 17 +-
.../idp/saml/nameid/impl/TransientDecoderTest.java | 2 +-
52 files changed, 738 insertions(+), 612 deletions(-)
diff --git a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AbstractAttributeDefinition.java b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AbstractAttributeDefinition.java
index 7d9856b..c335c91 100644
--- a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AbstractAttributeDefinition.java
+++ b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AbstractAttributeDefinition.java
@@ -212,17 +212,6 @@ public abstract class AbstractAttributeDefinition extends AbstractResolverPlugin
// Set up the dependencies first. Then the initialize in the parent
// will correctly rehash the dependencies.
- if (null != getSourceAttributeId()) {
- for (final ResolverPluginDependency depends : getDependencies()) {
- if (depends instanceof ResolverAttributeDefinitionDependency) {
- // No work needed. The name is the reference
- } else if (depends instanceof ResolverDataConnectorDependency) {
- // No work needed. The names are stored elsewhere
- } else {
- depends.setDependencyAttributeId(getSourceAttributeId());
- }
- }
- }
super.doInitialize();
// The Id is now definitive. Just in case it was used prior to that, reset the getPrefixCache
logPrefix = null;
diff --git a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AbstractResolverPlugin.java b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AbstractResolverPlugin.java
index c676de2..0290705 100644
--- a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AbstractResolverPlugin.java
+++ b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AbstractResolverPlugin.java
@@ -28,8 +28,18 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.annotation.concurrent.ThreadSafe;
+import org.opensaml.messaging.context.navigate.ParentContextLookup;
+import org.opensaml.profile.context.MetricContext;
+import org.opensaml.profile.context.ProfileRequestContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.DisposableBean;
+
+import com.google.common.base.Predicates;
+
import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolverWorkContext;
+import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
import net.shibboleth.utilities.java.support.annotation.constraint.NullableElements;
import net.shibboleth.utilities.java.support.annotation.constraint.Unmodifiable;
@@ -39,16 +49,6 @@ import net.shibboleth.utilities.java.support.component.ComponentInitializationEx
import net.shibboleth.utilities.java.support.component.ComponentSupport;
import net.shibboleth.utilities.java.support.logic.Constraint;
-import org.opensaml.messaging.context.navigate.ParentContextLookup;
-import org.opensaml.profile.context.MetricContext;
-import org.opensaml.profile.context.ProfileRequestContext;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.DisposableBean;
-
-import com.google.common.base.Predicates;
-import com.google.common.collect.ImmutableSet;
-
/**
* Base class for all {@link ResolverPlugin}s.
*
@@ -71,8 +71,14 @@ public abstract class AbstractResolverPlugin<ResolvedType> extends AbstractIdent
/** Criterion that must be met for this plugin to be active for the given request. */
@Nullable private Predicate<ProfileRequestContext> activationCondition;
- /** IDs of the {@link ResolverPlugin}s this plug-in depends on. */
- @Nonnull @NonnullElements private Set<ResolverPluginDependency> dependencies = Collections.emptySet();
+ /** The {@link ResolverAttributeDefinitionDependency}s this plug-in depends on. */
+ @Nonnull @NonnullElements private Set<ResolverAttributeDefinitionDependency> attributeDependencies =
+ Collections.emptySet();
+
+ /** The {@link ResolverDataConnectorDependency}s this plug-in depends on. */
+ @Nonnull @NonnullElements private Set<ResolverDataConnectorDependency> dataConnectorDependencies =
+ Collections.emptySet();
+
/** {@inheritDoc} */
@Override public boolean isPropagateResolutionExceptions() {
@@ -124,31 +130,60 @@ public abstract class AbstractResolverPlugin<ResolvedType> extends AbstractIdent
public void setActivationCondition(@Nonnull final Predicate<ProfileRequestContext> pred) {
ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
- activationCondition = Constraint.isNotNull(pred, "Activiation condition cannot be null");
+ activationCondition = Constraint.isNotNull(pred, "Activation condition cannot be null");
}
/**
+ * Gets the unmodifiable list of attributeDependencies for this plugin.
+ *
+ * @return unmodifiable list of dependencies for this plugin, never null
+ */
+ @Override @NonnullAfterInit @NonnullElements @Unmodifiable public Set<ResolverAttributeDefinitionDependency>
+ getAttributeDependencies() {
+ return attributeDependencies;
+ }
+
+ /**
* Gets the unmodifiable list of dependencies for this plugin.
*
* @return unmodifiable list of dependencies for this plugin, never null
*/
- @Override @Nonnull @NonnullElements @Unmodifiable public Set<ResolverPluginDependency> getDependencies() {
- return dependencies;
+ @Override @NonnullAfterInit @NonnullElements @Unmodifiable public Set<ResolverDataConnectorDependency>
+ getDataConnectorDependencies() {
+ return dataConnectorDependencies;
}
+
/**
* Sets the list of dependencies for this plugin.
*
- * @param pluginDependencies unmodifiable list of dependencies for this plugin
+ * @param dependencies unmodifiable list of dependencies for this plugin
*/
- public void setDependencies(@Nullable @NullableElements final Set<ResolverPluginDependency> pluginDependencies) {
+ public void setAttributeDependencies(@Nullable @NullableElements
+ final Set<ResolverAttributeDefinitionDependency> dependencies) {
ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
- final HashSet<ResolverPluginDependency> checkedDeps = new HashSet<>();
- CollectionSupport.addIf(checkedDeps, pluginDependencies, Predicates.notNull());
- dependencies = Collections.unmodifiableSet(checkedDeps);
+ final HashSet<ResolverAttributeDefinitionDependency> checkedDeps = new HashSet<>();
+ CollectionSupport.addIf(checkedDeps, dependencies, Predicates.notNull());
+ attributeDependencies = Collections.unmodifiableSet(checkedDeps);
}
+
+ /**
+ * Sets the list of dependencies for this plugin.
+ *
+ * @param dependencies unmodifiable list of dependencies for this plugin
+ */
+ public void setDataConnectorDependencies(@Nullable @NullableElements
+ final Set<ResolverDataConnectorDependency> dependencies) {
+ ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+ ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+
+ final HashSet<ResolverDataConnectorDependency> checkedDeps = new HashSet<>();
+ CollectionSupport.addIf(checkedDeps, dependencies, Predicates.notNull());
+ dataConnectorDependencies = Collections.unmodifiableSet(checkedDeps);
+ }
+
/**
* Performs the attribute resolution for this plugin.
@@ -226,19 +261,14 @@ public abstract class AbstractResolverPlugin<ResolvedType> extends AbstractIdent
/** {@inheritDoc} */
@Override protected void doDestroy() {
activationCondition = Predicates.alwaysFalse();
- dependencies = Collections.emptySet();
-
+ attributeDependencies = Collections.emptySet();
+ dataConnectorDependencies = Collections.emptySet();
super.doDestroy();
}
/** {@inheritDoc} */
@Override protected void doInitialize() throws ComponentInitializationException {
super.doInitialize();
-
- // rebuild the hash set - we may have modified the dependencies in the
- // child class initialization.
- final HashSet<ResolverPluginDependency> checkedDeps = new HashSet<>(dependencies);
- dependencies = ImmutableSet.copyOf(checkedDeps);
}
/** {@inheritDoc} */
diff --git a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/MultipleResultAnErrorResolutionException.java b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/MultipleResultAnErrorResolutionException.java
index 3a359b4..dd1437b 100644
--- a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/MultipleResultAnErrorResolutionException.java
+++ b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/MultipleResultAnErrorResolutionException.java
@@ -19,7 +19,7 @@ package net.shibboleth.idp.attribute.resolver;
/**
* A special ResolutionException which is thrown if multiple results were resolved
- * by a dataconnector and the deployer specified "MultipleResultsAnError".
+ * by a data connector and the deployer specified "MultipleResultsAnError".
*/
public class MultipleResultAnErrorResolutionException extends ResolutionException {
diff --git a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/NoResultAnErrorResolutionException.java b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/NoResultAnErrorResolutionException.java
index 796b322..2b0b783 100644
--- a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/NoResultAnErrorResolutionException.java
+++ b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/NoResultAnErrorResolutionException.java
@@ -19,7 +19,7 @@ package net.shibboleth.idp.attribute.resolver;
/**
* A special ResolutionException which is thrown if no results were resolved
- * by a dataconnector and the deployer specified "NoResultsAnError".
+ * by a data connector and the deployer specified "NoResultsAnError".
*/
public class NoResultAnErrorResolutionException extends ResolutionException {
diff --git a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/PluginDependencySupport.java b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/PluginDependencySupport.java
index d08e8fe..774ec1b 100644
--- a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/PluginDependencySupport.java
+++ b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/PluginDependencySupport.java
@@ -19,7 +19,6 @@ package net.shibboleth.idp.attribute.resolver;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -59,88 +58,63 @@ public final class PluginDependencySupport {
* </p>
*
* @param workContext current attribute resolver work context
- * @param dependencies set of dependencies
+ * @param attributeDependencies set of dependencies on attribute definitions
+ * @param dataConnectorDependencies set of dependencies on data connector definitions
* @param attributeDefinitionId the attributeID that these values will be associated with.
* @return the merged value set. Returns an empty set if we were given a DataConnector as a dependency, but not
* attribute name
*/
+ // Checkstyle: MethodLength|CyclomaticComplexity OFF
@Nonnull @NonnullElements public static List<IdPAttributeValue<?>> getMergedAttributeValues(
@Nonnull final AttributeResolverWorkContext workContext,
- @Nonnull @NonnullElements final Collection<ResolverPluginDependency> dependencies,
+ @Nonnull @NonnullElements final Collection<ResolverAttributeDefinitionDependency> attributeDependencies,
+ @Nonnull @NonnullElements final Collection<ResolverDataConnectorDependency> dataConnectorDependencies,
@Nonnull final String attributeDefinitionId) {
Constraint.isNotNull(workContext, "Attribute resolution context cannot be null");
- Constraint.isNotNull(dependencies, "Resolver dependency collection cannot be null");
+ Constraint.isNotNull(attributeDependencies, "Resolver dependency collection cannot be null");
final List<IdPAttributeValue<?>> values = new ArrayList<>();
+ if (LOG.isTraceEnabled()) {
+ LOG.trace("GetMergedAttribute Values for {}", attributeDefinitionId);
+ }
- for (final ResolverPluginDependency dependency : dependencies) {
- Constraint.isNotNull(dependency, "Resolver dependency cannot be null");
+ for (final ResolverAttributeDefinitionDependency attributeDependency : attributeDependencies) {
+ Constraint.isNotNull(attributeDependency, "Resolver attribute dependency cannot be null");
- final String pluginId = dependency.getDependencyPluginId();
+ final String attributeId = attributeDependency.getDependencyPluginId();
+ final ResolvedAttributeDefinition attributeDefinition =
+ workContext.getResolvedIdPAttributeDefinitions().get(attributeId);
+ final IdPAttribute resolvedAttribute = attributeDefinition.getResolvedAttribute();
+ if (LOG.isTraceEnabled()) {
+ LOG.trace("Merging Attribute Values from Attribute {}", attributeId);
+ }
+ mergeAttributeValues(resolvedAttribute, values);
+ }
- if (dependency instanceof ResolverAttributeDefinitionDependency) {
- final ResolvedAttributeDefinition attributeDefinition =
- workContext.getResolvedIdPAttributeDefinitions().get(pluginId);
- final IdPAttribute resolvedAttribute = attributeDefinition.getResolvedAttribute();
- mergeAttributeValues(resolvedAttribute, values);
- } else if (dependency instanceof ResolverDataConnectorDependency) {
- // Merge all specified attribute values.
- final ResolverDataConnectorDependency dataConnectorDependency =
- (ResolverDataConnectorDependency) dependency;
- final ResolvedDataConnector dataConnector =
- workContext.getResolvedDataConnectors().get(dependency.getDependencyPluginId());
- if (dataConnector != null) {
- final Map<String, IdPAttribute> resolvedAttrs = dataConnector.getResolvedAttributes();
- if (null != resolvedAttrs) {
- for (final Entry<String, IdPAttribute> entry : resolvedAttrs.entrySet()) {
- if (dataConnectorDependency.isAllAttributes()
- || dataConnectorDependency.getAttributeNames().contains(entry.getKey())) {
- mergeAttributeValues(entry.getValue(), values);
- }
+ for (final ResolverDataConnectorDependency dataConnectorDependency : dataConnectorDependencies) {
+ Constraint.isNotNull(dataConnectorDependency, "Resolver data connector dependency cannot be null");
+
+ final String dataConnectorId = dataConnectorDependency.getDependencyPluginId();
+ final ResolvedDataConnector dataConnector = workContext.getResolvedDataConnectors().get(dataConnectorId);
+ if (dataConnector != null) {
+ final Map<String, IdPAttribute> resolvedAttrs = dataConnector.getResolvedAttributes();
+ if (null != resolvedAttrs) {
+ for (final Entry<String, IdPAttribute> entry : resolvedAttrs.entrySet()) {
+ if (dataConnectorDependency.isAllAttributes()
+ || dataConnectorDependency.getAttributeNames().contains(entry.getKey())) {
+ mergeAttributeValues(entry.getValue(), values);
+ }
+ if (LOG.isTraceEnabled()) {
+ LOG.trace("Merging Attribute {} from DataConnecteor {}",
+ entry.getValue(), dataConnectorId);
}
- }
- }
- } else {
- final ResolvedAttributeDefinition attributeDefinition =
- workContext.getResolvedIdPAttributeDefinitions().get(pluginId);
- final String dependencyAttributeId = dependency.getDependencyAttributeId();
- if (attributeDefinition != null) {
- if (null == dependencyAttributeId) {
- LOG.warn("Plugin '{}' was defined without a sourceAttributeID, but attribute '{}', specified" +
- " as a <Dependency> will be used.", attributeDefinitionId, pluginId);
- } else if (!dependencyAttributeId.equals(pluginId)) {
- LOG.warn("Plugin '{}' was defined with a sourceAttributeID '{}', " +
- "but the attribute definition '{}', specified as a <Dependency> will be used as well.",
- attributeDefinitionId, dependencyAttributeId, pluginId);
- }
-
- final IdPAttribute resolvedAttribute = attributeDefinition.getResolvedAttribute();
- mergeAttributeValues(resolvedAttribute, values);
- continue;
- }
-
- final ResolvedDataConnector dataConnector =
- workContext.getResolvedDataConnectors().get(dependency.getDependencyPluginId());
- if (dataConnector != null) {
- if (dependency.getDependencyAttributeId() == null) {
- LOG.error("Attribute definition '{}' has a data connector"
- + " dependency '{}' but no sourceAttributeID.", attributeDefinitionId,
- dataConnector.getId());
- return Collections.EMPTY_LIST;
- }
-
- if (null != dataConnector.getResolvedAttributes()) {
- final IdPAttribute resolvedAttribute =
- dataConnector.getResolvedAttributes().get(dependency.getDependencyAttributeId());
- mergeAttributeValues(resolvedAttribute, values);
- continue;
}
}
}
}
-
return values;
}
+ // Checkstyle: MethodLength|CyclomaticComplexity ON
/**
* Gets the values from all dependencies. Attributes, with the same identifier but from different resolver plugins,
@@ -155,63 +129,62 @@ public final class PluginDependencySupport {
* </p>
*
* @param workContext current attribute resolver work context
- * @param dependencies set of dependencies
+ * @param dataConnectorDependencies set of dependencies on data connector definitions
+ * @param attributeDependencies set of dependencies
*
* @return the merged value set
*/
+ // Checkstyle: MethodLength|CyclomaticComplexity OFF
public static Map<String, List<IdPAttributeValue<?>>> getAllAttributeValues(
@Nonnull final AttributeResolverWorkContext workContext,
- @Nonnull final Collection<ResolverPluginDependency> dependencies) {
+ @Nonnull final Collection<ResolverAttributeDefinitionDependency> attributeDependencies,
+ @Nonnull @NonnullElements final Collection<ResolverDataConnectorDependency> dataConnectorDependencies) {
final HashMap<String, List<IdPAttributeValue<?>>> result = new HashMap<>();
+ if (LOG.isTraceEnabled()) {
+ LOG.trace("Getting all Attribute Values");
+ }
- for (final ResolverPluginDependency dependency : dependencies) {
- Constraint.isNotNull(dependency, "Resolver dependency cannot be null");
+ for (final ResolverAttributeDefinitionDependency dependency : attributeDependencies) {
+ Constraint.isNotNull(dependency, "Attribute Definition dependency cannot be null");
- if (dependency instanceof ResolverAttributeDefinitionDependency) {
- final ResolvedAttributeDefinition attributeDefinition =
- workContext.getResolvedIdPAttributeDefinitions().get(dependency.getDependencyPluginId());
- if (attributeDefinition != null) {
- addAttribute(attributeDefinition.getResolvedAttribute(), result);
+ final String attributeId = dependency.getDependencyPluginId();
+ final ResolvedAttributeDefinition attributeDefinition =
+ workContext.getResolvedIdPAttributeDefinitions().get(attributeId);
+ if (attributeDefinition != null) {
+ if (LOG.isTraceEnabled()) {
+ LOG.trace("Adding Attribute {}", attributeId);
}
- } else if (dependency instanceof ResolverDataConnectorDependency) {
- // Just add those attributes specified
- final ResolverDataConnectorDependency dataConnectorDependency =
- (ResolverDataConnectorDependency) dependency;
- final ResolvedDataConnector dataConnector =
- workContext.getResolvedDataConnectors().get(dependency.getDependencyPluginId());
- if (dataConnector != null) {
- final Map<String, IdPAttribute> resolvedAttrs = dataConnector.getResolvedAttributes();
- if (null != resolvedAttrs) {
- for (final Entry<String, IdPAttribute> entry : resolvedAttrs.entrySet()) {
- if (dataConnectorDependency.isAllAttributes()
- || dataConnectorDependency.getAttributeNames().contains(entry.getKey())) {
- addAttribute(entry.getValue(), result);
+ addAttribute(attributeDefinition.getResolvedAttribute(), result);
+ }
+ }
+
+ for (final ResolverDataConnectorDependency dataConnectorDependency : dataConnectorDependencies) {
+ Constraint.isNotNull(dataConnectorDependency, "Data Connector dependency cannot be null");
+
+ // Just add those attributes specified
+ final String dataConnectorId = dataConnectorDependency.getDependencyPluginId();
+ final ResolvedDataConnector dataConnector =
+ workContext.getResolvedDataConnectors().get(dataConnectorId);
+ if (dataConnector != null) {
+ final Map<String, IdPAttribute> resolvedAttrs = dataConnector.getResolvedAttributes();
+ if (null != resolvedAttrs) {
+ for (final Entry<String, IdPAttribute> entry : resolvedAttrs.entrySet()) {
+ if (dataConnectorDependency.isAllAttributes()
+ || dataConnectorDependency.getAttributeNames().contains(entry.getKey())) {
+ addAttribute(entry.getValue(), result);
+ if (LOG.isTraceEnabled()) {
+ LOG.trace("Adding Attribute {} from Data Connector {}",
+ entry.getValue(), dataConnectorId);
}
}
}
}
- } else {
- // deprecated behavior
- final ResolvedAttributeDefinition attributeDefinition =
- workContext.getResolvedIdPAttributeDefinitions().get(dependency.getDependencyPluginId());
- if (attributeDefinition != null) {
- addAttribute(attributeDefinition.getResolvedAttribute(), result);
- continue;
- }
-
- final ResolvedDataConnector dataConnector =
- workContext.getResolvedDataConnectors().get(dependency.getDependencyPluginId());
- if (dataConnector != null) {
- if (null != dataConnector.getResolvedAttributes()) {
- mergeAttributes(dataConnector.getResolvedAttributes(), result);
- }
- }
}
}
-
return result;
}
+ // Checkstyle: MethodLength|CyclomaticComplexity ON
/**
* Adds the values of the attributes to the target collection of attribute values indexes by attribute ID.
diff --git a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/ResolvedAttributeDefinition.java b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/ResolvedAttributeDefinition.java
index 7650f9c..43e35d6 100644
--- a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/ResolvedAttributeDefinition.java
+++ b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/ResolvedAttributeDefinition.java
@@ -83,8 +83,13 @@ public final class ResolvedAttributeDefinition extends AbstractAttributeDefiniti
}
/** {@inheritDoc} */
- @Override @Nonnull @NonnullElements public Set<ResolverPluginDependency> getDependencies() {
- return resolvedDefinition.getDependencies();
+ @Override @Nonnull @NonnullElements public Set<ResolverAttributeDefinitionDependency> getAttributeDependencies() {
+ return resolvedDefinition.getAttributeDependencies();
+ }
+
+ /** {@inheritDoc} */
+ @Override @Nonnull @NonnullElements public Set<ResolverDataConnectorDependency> getDataConnectorDependencies() {
+ return resolvedDefinition.getDataConnectorDependencies();
}
/** {@inheritDoc} */
diff --git a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/ResolvedDataConnector.java b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/ResolvedDataConnector.java
index c92f685..e6adb2d 100644
--- a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/ResolvedDataConnector.java
+++ b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/ResolvedDataConnector.java
@@ -76,8 +76,13 @@ public final class ResolvedDataConnector extends AbstractDataConnector {
}
/** {@inheritDoc} */
- @Override @Nonnull @NonnullElements public Set<ResolverPluginDependency> getDependencies() {
- return resolvedConnector.getDependencies();
+ @Override @Nonnull @NonnullElements public Set<ResolverAttributeDefinitionDependency> getAttributeDependencies() {
+ return resolvedConnector.getAttributeDependencies();
+ }
+
+ /** {@inheritDoc} */
+ @Override @Nonnull @NonnullElements public Set<ResolverDataConnectorDependency> getDataConnectorDependencies() {
+ return resolvedConnector.getDataConnectorDependencies();
}
/** {@inheritDoc} */
diff --git a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/ResolverDataConnectorDependency.java b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/ResolverDataConnectorDependency.java
index 4ce58bb..58dd8c4 100644
--- a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/ResolverDataConnectorDependency.java
+++ b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/ResolverDataConnectorDependency.java
@@ -23,20 +23,21 @@ import java.util.HashSet;
import java.util.Set;
import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
import net.shibboleth.utilities.java.support.annotation.ParameterName;
import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.primitive.DeprecationSupport;
-import net.shibboleth.utilities.java.support.primitive.DeprecationSupport.ObjectType;
import net.shibboleth.utilities.java.support.primitive.StringSupport;
/**
* A Dependency that references to an Data Connector.
*/
-public final class ResolverDataConnectorDependency extends ResolverPluginDependency {
+public final class ResolverDataConnectorDependency {
+ /** ID of the plugin that will produce the attribute. */
+ @Nonnull @NotEmpty private final String dependencyPluginId;
+
+
/** Whether to depend on all the connector's attributes. */
private boolean allAttributes;
@@ -49,11 +50,21 @@ public final class ResolverDataConnectorDependency extends ResolverPluginDepende
* @param pluginId ID of dependency
*/
public ResolverDataConnectorDependency(@ParameterName(name="pluginId") final String pluginId) {
- super(pluginId);
-
+ dependencyPluginId = pluginId;
allAttributes = false;
attributeNames = Collections.emptySet();
}
+
+ /**
+ * Gets the ID of the plugin that will produce the attribute.
+ *
+ * @return ID of the plugin that will produce the attribute, never null or empty
+ */
+ @Nonnull public String getDependencyPluginId() {
+ return dependencyPluginId;
+ }
+
+
/**
* Get whether all the connector's attributes are part of the dependency.
@@ -90,18 +101,4 @@ public final class ResolverDataConnectorDependency extends ResolverPluginDepende
public void setAttributeNames(@Nonnull @NotEmpty final Collection<String> names) {
attributeNames = new HashSet<>(StringSupport.normalizeStringCollection(names));
}
-
- /**
- * {@inheritDoc}
- *
- * @deprecated Use {@link #setAttributeNames} instead
- * @see #setAttributeNames
- */
- @Override @Deprecated public void setDependencyAttributeId(@Nullable final String attributeId) {
- DeprecationSupport.warn(ObjectType.METHOD,
- "ResolverDataConnectorDependency#setDependencyAttributeId(String)",
- null, "#setAttributeNames(Collection<String>)");
- super.setDependencyAttributeId(attributeId);
- }
-
}
\ No newline at end of file
diff --git a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/ResolverPlugin.java b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/ResolverPlugin.java
index f01c1e4..632a70d 100644
--- a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/ResolverPlugin.java
+++ b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/ResolverPlugin.java
@@ -60,11 +60,20 @@ public interface ResolverPlugin<ResolvedType> extends UnmodifiableComponent,
@Nullable Predicate<ProfileRequestContext> getActivationCondition();
/**
- * Get the unmodifiable list of dependencies for this plugin.
+ * Get the unmodifiable list of attribute dependencies for this plugin.
*
- * @return unmodifiable list of dependencies for this plugin, never null
+ * @return unmodifiable list of attribute dependencies for this plugin, never null
*/
- @NonnullAfterInit @NonnullElements @Unmodifiable Set<ResolverPluginDependency> getDependencies();
+ @NonnullAfterInit @NonnullElements @Unmodifiable Set<ResolverAttributeDefinitionDependency>
+ getAttributeDependencies();
+
+ /**
+ * Get the unmodifiable list of data connector dependencies for this plugin.
+ *
+ * @return unmodifiable list of data connector dependencies for this plugin, never null
+ */
+ @NonnullAfterInit @NonnullElements @Unmodifiable Set<ResolverDataConnectorDependency>
+ getDataConnectorDependencies();
/**
* Perform the attribute resolution for this plugin.
diff --git a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/context/AttributeResolverWorkContext.java b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/context/AttributeResolverWorkContext.java
index 830967e..7a5a8ee 100644
--- a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/context/AttributeResolverWorkContext.java
+++ b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/context/AttributeResolverWorkContext.java
@@ -125,7 +125,7 @@ public class AttributeResolverWorkContext extends BaseContext {
}
/**
- * Transfer the attributes from a failover dataconnector to a failed one. This allows up stream processing to
+ * Transfer the attributes from a failover data connector to a failed one. This allows up stream processing to
* pretend that the failed connector worked OK. The inherent duplication is OK since the code which exploits this
* does the dedupe.
*
diff --git a/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/AbstractAttributeDefinitionTest.java b/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/AbstractAttributeDefinitionTest.java
index d69932c..e124afc 100644
--- a/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/AbstractAttributeDefinitionTest.java
+++ b/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/AbstractAttributeDefinitionTest.java
@@ -189,31 +189,31 @@ public class AbstractAttributeDefinitionTest {
}
+
@Test
public void dependencies() throws ComponentInitializationException {
MockAttributeDefinition definition = new MockAttributeDefinition("foo", null);
- definition.setDependencies(Collections.singleton((ResolverPluginDependency) new ResolverAttributeDefinitionDependency("plugin")));
+ final ResolverDataConnectorDependency dc = new ResolverDataConnectorDependency("dc");
+ dc.setAttributeNames(Collections.singletonList("da"));
+ definition.setDataConnectorDependencies(Collections.singleton(dc));
+ definition.setAttributeDependencies(Collections.singleton(new ResolverAttributeDefinitionDependency("ad")));
definition.initialize();
- Set<ResolverPluginDependency> depends = definition.getDependencies();
+ final Set<ResolverDataConnectorDependency> dDepends = definition.getDataConnectorDependencies();
- Assert.assertEquals(depends.size(), 1);
+ Assert.assertEquals(dDepends.size(), 1);
Assert.assertNull(definition.getSourceAttributeId());
- Assert.assertNull(depends.iterator().next().getDependencyAttributeId());
-
- definition = new MockAttributeDefinition("foo", null);
- definition.setSourceAttributeId("source");
- definition.setDependencies(Collections.singleton((ResolverPluginDependency) new ResolverAttributeDefinitionDependency("source")));
- definition.initialize();
-
- Assert.assertEquals(definition.getSourceAttributeId(), "source");
-
- depends = definition.getDependencies();
-
- Assert.assertEquals(depends.size(), 1);
- Assert.assertEquals(depends.iterator().next().getDependencyPluginId(), "source");
+ Assert.assertTrue(dDepends.iterator().next().getAttributeNames().contains("da"));
+ Assert.assertEquals(dDepends.iterator().next().getDependencyPluginId(), "dc");
+
+ final Set<ResolverAttributeDefinitionDependency> aDepends = definition.getAttributeDependencies();
+ Assert.assertEquals(aDepends.size(), 1);
+ Assert.assertNull(definition.getSourceAttributeId());
+ Assert.assertEquals(aDepends.iterator().next().getDependencyPluginId(), "ad");
+
}
+
private void testInvalidName(@Nonnull MockAttributeDefinition attrdef) {
try {
diff --git a/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/AbstractResolverPluginTest.java b/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/AbstractResolverPluginTest.java
index d175ab0..e5e07f5 100644
--- a/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/AbstractResolverPluginTest.java
+++ b/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/AbstractResolverPluginTest.java
@@ -17,12 +17,15 @@
package net.shibboleth.idp.attribute.resolver;
+import java.util.Collections;
import java.util.HashSet;
import java.util.function.Function;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
+import net.shibboleth.idp.attribute.IdPAttribute;
+import net.shibboleth.idp.attribute.StringAttributeValue;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolverWorkContext;
import net.shibboleth.utilities.java.support.logic.ConstraintViolationException;
@@ -39,18 +42,20 @@ public class AbstractResolverPluginTest {
/** Test an instantiated object has the proper state. */
@Test public void instantiation() {
- MockBaseResolverPlugin plugin = new MockBaseResolverPlugin(" foo ", "bar");
+ MockBaseAttributeResolver plugin = new MockBaseAttributeResolver(" foo ", "bar");
Assert.assertEquals(plugin.getId(), "foo");
Assert.assertTrue(plugin.isPropagateResolutionExceptions());
Assert.assertNull(plugin.getActivationCondition());
- Assert.assertNotNull(plugin.getDependencies());
- Assert.assertTrue(plugin.getDependencies().isEmpty());
+ Assert.assertNotNull(plugin.getDataConnectorDependencies());
+ Assert.assertTrue(plugin.getDataConnectorDependencies().isEmpty());
+ Assert.assertNotNull(plugin.getAttributeDependencies());
+ Assert.assertTrue(plugin.getAttributeDependencies().isEmpty());
}
/** Test get/set activation criteria. */
@Test public void activationCriteria() {
- MockBaseResolverPlugin plugin = new MockBaseResolverPlugin(" foo ", "bar");
+ MockBaseAttributeResolver plugin = new MockBaseAttributeResolver(" foo ", "bar");
plugin.setActivationCondition(Predicates.<ProfileRequestContext> alwaysFalse());
Assert.assertEquals(plugin.getActivationCondition(), Predicates.alwaysFalse());
@@ -63,7 +68,7 @@ public class AbstractResolverPluginTest {
}
@Test public void nativation() {
- MockBaseResolverPlugin plugin = new MockBaseResolverPlugin(" foo ", "bar");
+ MockBaseAttributeResolver plugin = new MockBaseAttributeResolver(" foo ", "bar");
Assert.assertEquals(plugin.getProfileContextStrategy().getClass(), ParentContextLookup.class);
plugin.setProfileContextStrategy(new TestFunc());
Assert.assertEquals(plugin.getProfileContextStrategy().getClass(), TestFunc.class);
@@ -71,7 +76,7 @@ public class AbstractResolverPluginTest {
/** Test setters to {@link AbstractResolverPlugin#setPropagateResolutionExceptions(boolean)}. */
@Test public void propogateSetters() {
- MockBaseResolverPlugin plugin = new MockBaseResolverPlugin("foo", "bar");
+ MockBaseAttributeResolver plugin = new MockBaseAttributeResolver("foo", "bar");
plugin.setPropagateResolutionExceptions(true);
Assert.assertTrue(plugin.isPropagateResolutionExceptions());
@@ -85,37 +90,68 @@ public class AbstractResolverPluginTest {
/** Test add, removing, setting dependencies. */
@Test public void dependencies() {
- MockBaseResolverPlugin plugin = new MockBaseResolverPlugin("foo", "bar");
+ MockBaseAttributeResolver plugin = new MockBaseAttributeResolver("foo", "bar");
+
+ plugin.setAttributeDependencies(null);
+ plugin.setDataConnectorDependencies(null);
+ Assert.assertNotNull(plugin.getAttributeDependencies());
+ Assert.assertTrue(plugin.getAttributeDependencies().isEmpty());
+ Assert.assertNotNull(plugin.getDataConnectorDependencies());
+ Assert.assertTrue(plugin.getDataConnectorDependencies().isEmpty());
+
+ plugin.setAttributeDependencies(new HashSet<ResolverAttributeDefinitionDependency>());
+ plugin.setDataConnectorDependencies(new HashSet<ResolverDataConnectorDependency>());
+ Assert.assertNotNull(plugin.getAttributeDependencies());
+ Assert.assertTrue(plugin.getAttributeDependencies().isEmpty());
+ Assert.assertNotNull(plugin.getDataConnectorDependencies());
+ Assert.assertTrue(plugin.getDataConnectorDependencies().isEmpty());
+
+ plugin.setAttributeDependencies(Collections.<ResolverAttributeDefinitionDependency>singleton(null));
+ plugin.setDataConnectorDependencies(Collections.<ResolverDataConnectorDependency>singleton(null));
+ Assert.assertNotNull(plugin.getAttributeDependencies());
+ Assert.assertTrue(plugin.getAttributeDependencies().isEmpty());
+ Assert.assertNotNull(plugin.getDataConnectorDependencies());
+ Assert.assertTrue(plugin.getDataConnectorDependencies().isEmpty());
+
+ final ResolverAttributeDefinitionDependency dep1 = new ResolverAttributeDefinitionDependency("foo");
+ dep1.setDependencyAttributeId("bar");
+ final ResolverAttributeDefinitionDependency dep2 = new ResolverAttributeDefinitionDependency("foo2");
+ dep2.setDependencyAttributeId("baz");
- plugin.setDependencies(null);
- Assert.assertNotNull(plugin.getDependencies());
- Assert.assertTrue(plugin.getDependencies().isEmpty());
+ final ResolverDataConnectorDependency depd1 = new ResolverDataConnectorDependency("food");
+ dep1.setDependencyAttributeId("bard");
+ final ResolverDataConnectorDependency depd2 = new ResolverDataConnectorDependency("food2");
+ dep2.setDependencyAttributeId("bazd");
- HashSet<ResolverPluginDependency> depdencies = new HashSet<>();
- plugin.setDependencies(depdencies);
- Assert.assertNotNull(plugin.getDependencies());
- Assert.assertTrue(plugin.getDependencies().isEmpty());
+ final HashSet<ResolverAttributeDefinitionDependency> adeps = new HashSet<>();
+ final HashSet<ResolverDataConnectorDependency> ddeps = new HashSet<>();
+
- depdencies.add(null);
- plugin.setDependencies(depdencies);
- Assert.assertNotNull(plugin.getDependencies());
- Assert.assertTrue(plugin.getDependencies().isEmpty());
+ adeps.add(dep1);
+ adeps.add(dep1);
+ adeps.add(dep2);
- ResolverPluginDependency dep1 = new ResolverAttributeDefinitionDependency("foo");
- dep1.setDependencyAttributeId("bar");
- ResolverPluginDependency dep2 = new ResolverAttributeDefinitionDependency("foo");
- dep2.setDependencyAttributeId("baz");
+ ddeps.add(depd1);
+ ddeps.add(depd1);
+ ddeps.add(depd2);
- depdencies.add(dep1);
- depdencies.add(dep1);
- depdencies.add(dep2);
+ plugin.setAttributeDependencies(adeps);
+ plugin.setDataConnectorDependencies(ddeps);
+
+ Assert.assertNotNull(plugin.getAttributeDependencies());
+ Assert.assertTrue(plugin.getAttributeDependencies().size() == 2);
- plugin.setDependencies(depdencies);
- Assert.assertNotNull(plugin.getDependencies());
- Assert.assertTrue(plugin.getDependencies().size() == 2);
+ Assert.assertNotNull(plugin.getDataConnectorDependencies());
+ Assert.assertTrue(plugin.getDataConnectorDependencies().size() == 2);
try {
- plugin.getDependencies().add(dep1);
+ plugin.getAttributeDependencies().add(dep1);
+ Assert.fail("able to add entry to supossedly unmodifiable collection");
+ } catch (UnsupportedOperationException e) {
+ // expected this
+ }
+ try {
+ plugin.getDataConnectorDependencies().add(depd1);
Assert.fail("able to add entry to supossedly unmodifiable collection");
} catch (UnsupportedOperationException e) {
// expected this
@@ -126,13 +162,13 @@ public class AbstractResolverPluginTest {
@Test public void resolver() throws Exception {
AttributeResolutionContext context = new AttributeResolutionContext();
context.getSubcontext(AttributeResolverWorkContext.class, true);
- MockBaseResolverPlugin plugin = new MockBaseResolverPlugin("foo", "bar");
+ MockBaseAttributeResolver plugin = new MockBaseAttributeResolver("foo", "bar");
plugin.initialize();
- Assert.assertEquals(plugin.resolve(context), "bar");
+ Assert.assertEquals(plugin.resolve(context).getId(), "foo");
context = new AttributeResolutionContext();
- plugin = new MockBaseResolverPlugin(" foo ", "bar");
+ plugin = new MockBaseAttributeResolver(" foo ", "bar");
plugin.setActivationCondition(Predicates.<ProfileRequestContext> alwaysFalse());
plugin.initialize();
@@ -144,10 +180,10 @@ public class AbstractResolverPluginTest {
* This class implements the minimal level of functionality and is meant only as a means of testing the abstract
* {@link ResolverPlugin}.
*/
- private static final class MockBaseResolverPlugin extends AbstractResolverPlugin<String> {
+ private static final class MockBaseAttributeResolver extends AbstractAttributeDefinition {
/** Static value return by resolution. */
- private String resolverValue;
+ private final IdPAttribute resolverValue;
/**
* Constructor.
@@ -155,16 +191,23 @@ public class AbstractResolverPluginTest {
* @param id id of this plugin
* @param value value returned by resolution
*/
- public MockBaseResolverPlugin(String id, String value) {
+ public MockBaseAttributeResolver(String id, String value) {
+ resolverValue = new IdPAttribute(id);
setId(id);
- resolverValue = value;
+ resolverValue.setValues(Collections.singleton(new StringAttributeValue(value)));
}
/** {@inheritDoc} */
- @Override @Nullable protected String doResolve(@Nonnull final AttributeResolutionContext resolutionContext,
+ @Override @Nullable protected IdPAttribute doResolve(@Nonnull final AttributeResolutionContext resolutionContext,
@Nonnull final AttributeResolverWorkContext workContext) throws ResolutionException {
return resolverValue;
}
+
+ /** {@inheritDoc} */
+ protected IdPAttribute doAttributeDefinitionResolve(AttributeResolutionContext resolutionContext,
+ AttributeResolverWorkContext workContext) throws ResolutionException {
+ return resolverValue;
+ }
}
static class TestFunc implements Function<AttributeResolutionContext, ProfileRequestContext> {
diff --git a/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/MockDataConnector.java b/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/MockDataConnector.java
index 8697028..09744f3 100644
--- a/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/MockDataConnector.java
+++ b/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/MockDataConnector.java
@@ -65,8 +65,13 @@ public class MockDataConnector extends AbstractDataConnector {
* @param newHashSet
* @throws ComponentInitializationException
*/
- public MockDataConnector(String id, Map<String, IdPAttribute> connectorValues, Set<ResolverPluginDependency> newHashSet) throws ComponentInitializationException {
- setDependencies(newHashSet);
+ public MockDataConnector(String id,
+ Map<String, IdPAttribute> connectorValues,
+ Set<ResolverAttributeDefinitionDependency> attrDepends,
+ Set<ResolverDataConnectorDependency> dcDepends
+ ) throws ComponentInitializationException {
+ setAttributeDependencies(attrDepends);
+ setDataConnectorDependencies(dcDepends);
setId(id);
values = connectorValues;
initialize();
diff --git a/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/PluginDependencySupportTest.java b/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/PluginDependencySupportTest.java
index 79b91a2..626465e 100644
--- a/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/PluginDependencySupportTest.java
+++ b/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/PluginDependencySupportTest.java
@@ -63,7 +63,8 @@ public class PluginDependencySupportTest {
final List<IdPAttributeValue<?>> result =
PluginDependencySupport.getMergedAttributeValues(workContext,
- Collections.singletonList((ResolverPluginDependency) new ResolverAttributeDefinitionDependency(ResolverTestSupport.EPA_ATTRIB_ID)),
+ Collections.singletonList(new ResolverAttributeDefinitionDependency(ResolverTestSupport.EPA_ATTRIB_ID)),
+ Collections.<ResolverDataConnectorDependency>emptyList(),
ResolverTestSupport.EPA_ATTRIB_ID);
Assert.assertNotNull(result);
@@ -81,7 +82,8 @@ public class PluginDependencySupportTest {
final List<IdPAttributeValue<?>> result =
PluginDependencySupport.getMergedAttributeValues(workContext,
- Collections.singletonList((ResolverPluginDependency)new ResolverAttributeDefinitionDependency(ResolverTestSupport.EPA_ATTRIB_ID)),
+ Collections.singletonList(new ResolverAttributeDefinitionDependency(ResolverTestSupport.EPA_ATTRIB_ID)),
+ Collections.<ResolverDataConnectorDependency>emptyList(),
ResolverTestSupport.EPA_ATTRIB_ID);
Assert.assertNotNull(result);
@@ -102,7 +104,9 @@ public class PluginDependencySupportTest {
final ResolverDataConnectorDependency depend = new ResolverDataConnectorDependency("connector1");
depend.setAttributeNames(Collections.singletonList(ResolverTestSupport.EPE_ATTRIB_ID));
final List<IdPAttributeValue<?>> result =
- PluginDependencySupport.getMergedAttributeValues(workContext, Collections.singletonList((ResolverPluginDependency) depend),
+ PluginDependencySupport.getMergedAttributeValues(workContext,
+ Collections.<ResolverAttributeDefinitionDependency>emptyList(),
+ Collections.singletonList(depend),
ResolverTestSupport.EPE_ATTRIB_ID);
Assert.assertNotNull(result);
@@ -124,7 +128,9 @@ public class PluginDependencySupportTest {
final ResolverDataConnectorDependency depend = new ResolverDataConnectorDependency("connector1");
depend.setAttributeNames(Collections.singleton(ResolverTestSupport.EPE_ATTRIB_ID));
final List<IdPAttributeValue<?>> result =
- PluginDependencySupport.getMergedAttributeValues(workContext, Collections.singletonList((ResolverPluginDependency)depend),
+ PluginDependencySupport.getMergedAttributeValues(workContext,
+ Collections.<ResolverAttributeDefinitionDependency>emptyList(),
+ Collections.singletonList(depend),
ResolverTestSupport.EPE_ATTRIB_ID);
Assert.assertNotNull(result);
@@ -147,7 +153,9 @@ public class PluginDependencySupportTest {
depend.setAttributeNames(Lists.newArrayList(ResolverTestSupport.EPE_ATTRIB_ID, ResolverTestSupport.EPA_ATTRIB_ID));
final List<IdPAttributeValue<?>> result =
- PluginDependencySupport.getMergedAttributeValues(workContext, Collections.singletonList((ResolverPluginDependency)depend),
+ PluginDependencySupport.getMergedAttributeValues(workContext,
+ Collections.<ResolverAttributeDefinitionDependency>emptyList(),
+ Collections.singletonList(depend),
ResolverTestSupport.EPE_ATTRIB_ID);
Assert.assertNotNull(result);
@@ -171,7 +179,9 @@ public class PluginDependencySupportTest {
final ResolverDataConnectorDependency depend = new ResolverDataConnectorDependency("connector1");
depend.setAllAttributes(true);
final List<IdPAttributeValue<?>> result =
- PluginDependencySupport.getMergedAttributeValues(workContext, Collections.singletonList((ResolverPluginDependency)depend),
+ PluginDependencySupport.getMergedAttributeValues(workContext,
+ Collections.<ResolverAttributeDefinitionDependency>emptyList(),
+ Collections.singletonList(depend),
ResolverTestSupport.EPE_ATTRIB_ID);
Assert.assertNotNull(result);
@@ -203,7 +213,8 @@ public class PluginDependencySupportTest {
dependConnector.setAttributeNames(Collections.singleton(ResolverTestSupport.EPA_ATTRIB_ID));
final List<IdPAttributeValue<?>> result =
PluginDependencySupport.getMergedAttributeValues(workContext,
- Arrays.asList(dependConnector, new ResolverAttributeDefinitionDependency(ResolverTestSupport.EPA_ATTRIB_ID)),
+ Collections.singletonList(new ResolverAttributeDefinitionDependency(ResolverTestSupport.EPA_ATTRIB_ID)),
+ Collections.singletonList(dependConnector),
ResolverTestSupport.EPE_ATTRIB_ID);
Assert.assertNotNull(result);
@@ -234,7 +245,8 @@ public class PluginDependencySupportTest {
final Map<String, List<IdPAttributeValue<?>>> result =
PluginDependencySupport.getAllAttributeValues(workContext,
- Arrays.asList(depend, new ResolverAttributeDefinitionDependency(ResolverTestSupport.EPA_ATTRIB_ID)));
+ Collections.singletonList(new ResolverAttributeDefinitionDependency(ResolverTestSupport.EPA_ATTRIB_ID)),
+ Collections.singletonList(depend));
Assert.assertNotNull(result);
Assert.assertEquals(result.size(), 2);
@@ -273,7 +285,8 @@ public class PluginDependencySupportTest {
depend.setAttributeNames(Collections.singleton(ResolverTestSupport.EPA_ATTRIB_ID));
final Map<String, List<IdPAttributeValue<?>>> result =
PluginDependencySupport.getAllAttributeValues(workContext,
- Arrays.asList(depend, new ResolverAttributeDefinitionDependency(ResolverTestSupport.EPA_ATTRIB_ID)));
+ Collections.singletonList(new ResolverAttributeDefinitionDependency(ResolverTestSupport.EPA_ATTRIB_ID)),
+ Collections.singletonList(depend));
Assert.assertNotNull(result);
Assert.assertEquals(result.size(), 1);
diff --git a/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/ResolvedAttributeDefinitionTest.java b/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/ResolvedAttributeDefinitionTest.java
index 1f15dcd..9424a89 100644
--- a/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/ResolvedAttributeDefinitionTest.java
+++ b/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/ResolvedAttributeDefinitionTest.java
@@ -93,9 +93,12 @@ public class ResolvedAttributeDefinitionTest {
MockStaticAttributeDefinition attrDef = new MockStaticAttributeDefinition();
attrDef.setValue(attribute);
attrDef.setId("Defn");
- ResolverPluginDependency dep = new ResolverAttributeDefinitionDependency("doo");
+ final ResolverAttributeDefinitionDependency dep = new ResolverAttributeDefinitionDependency("doo");
dep.setDependencyAttributeId("foo");
- attrDef.setDependencies(Collections.singleton(dep));
+ attrDef.setAttributeDependencies(Collections.singleton(dep));
+ final ResolverDataConnectorDependency ddep = new ResolverDataConnectorDependency("ddoo");
+ ddep.setAttributeNames(Collections.singletonList("foo"));
+ attrDef.setDataConnectorDependencies(Collections.singleton(ddep));
attrDef.setPropagateResolutionExceptions(false);
attrDef.initialize();
@@ -103,7 +106,8 @@ public class ResolvedAttributeDefinitionTest {
new ResolvedAttributeDefinition(attrDef, new IdPAttribute("foo"));
resolvedAttributeDefinition.getActivationCondition();
- Assert.assertEquals(resolvedAttributeDefinition.getDependencies(), attrDef.getDependencies());
+ Assert.assertEquals(resolvedAttributeDefinition.getAttributeDependencies(), attrDef.getAttributeDependencies());
+ Assert.assertEquals(resolvedAttributeDefinition.getDataConnectorDependencies(), attrDef.getDataConnectorDependencies());
Assert.assertNull(resolvedAttributeDefinition.getActivationCondition());
Assert.assertFalse(resolvedAttributeDefinition.isPropagateResolutionExceptions());
diff --git a/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/ResolvedDataConnectorTest.java b/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/ResolvedDataConnectorTest.java
index 34dd4de..d7583b2 100644
--- a/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/ResolvedDataConnectorTest.java
+++ b/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/ResolvedDataConnectorTest.java
@@ -97,9 +97,14 @@ public class ResolvedDataConnectorTest {
MockStaticDataConnector dc = new MockStaticDataConnector();
dc.setValues(Arrays.asList(new IdPAttribute("attr")));
dc.setId("Defn");
- ResolverDataConnectorDependency dep = new ResolverDataConnectorDependency("doo");
- dep.setAttributeNames(Collections.singletonList("foo"));
- dc.setDependencies(Collections.singleton((ResolverPluginDependency) dep));
+
+ final ResolverAttributeDefinitionDependency dep = new ResolverAttributeDefinitionDependency("doo");
+ dep.setDependencyAttributeId("foo");
+ dc.setAttributeDependencies(Collections.singleton(dep));
+ final ResolverDataConnectorDependency ddep = new ResolverDataConnectorDependency("ddoo");
+ ddep.setAttributeNames(Collections.singletonList("foo"));
+ dc.setDataConnectorDependencies(Collections.singleton(ddep));
+
dc.setPropagateResolutionExceptions(false);
dc.initialize();
ResolvedDataConnector resolvedDataConnector = new ResolvedDataConnector(dc, resolvedData);
@@ -110,7 +115,8 @@ public class ResolvedDataConnectorTest {
Assert.assertEquals(resolvedDataConnector.getResolvedConnector(), dc);
Assert.assertTrue(resolvedDataConnector.isInitialized());
- Assert.assertEquals(resolvedDataConnector.getDependencies(), dc.getDependencies());
+ Assert.assertEquals(resolvedDataConnector.getAttributeDependencies(), dc.getAttributeDependencies());
+ Assert.assertEquals(resolvedDataConnector.getDataConnectorDependencies(), dc.getDataConnectorDependencies());
Assert.assertNull(resolvedDataConnector.getActivationCondition());
Assert.assertFalse(resolvedDataConnector.isPropagateResolutionExceptions());
diff --git a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/PrescopedAttributeDefinition.java b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/PrescopedAttributeDefinition.java
index 3539b50..fc77a96 100644
--- a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/PrescopedAttributeDefinition.java
+++ b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/PrescopedAttributeDefinition.java
@@ -91,9 +91,11 @@ public class PrescopedAttributeDefinition extends AbstractAttributeDefinition {
final IdPAttribute resultantAttribute = new IdPAttribute(getId());
final List<IdPAttributeValue<?>> dependencyValues =
- PluginDependencySupport.getMergedAttributeValues(workContext, getDependencies(), getId());
- log.debug("{} Dependencies {} provided unmapped values of {}", getLogPrefix(), getDependencies(),
- dependencyValues);
+ PluginDependencySupport.getMergedAttributeValues(workContext,
+ getAttributeDependencies(),
+ getDataConnectorDependencies(),
+ getId());
+ log.debug("{} Dependencies provided unmapped values of {}", getLogPrefix(), dependencyValues);
final List<IdPAttributeValue<?>> valueList = new ArrayList<>(dependencyValues.size());
for (final IdPAttributeValue<?> dependencyValue : dependencyValues) {
@@ -145,7 +147,7 @@ public class PrescopedAttributeDefinition extends AbstractAttributeDefinition {
@Override protected void doInitialize() throws ComponentInitializationException {
super.doInitialize();
- if (getDependencies().isEmpty()) {
+ if (getDataConnectorDependencies().isEmpty() && getAttributeDependencies().isEmpty()) {
throw new ComponentInitializationException(getLogPrefix() + " no dependencies were configured");
}
}
diff --git a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/RegexSplitAttributeDefinition.java b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/RegexSplitAttributeDefinition.java
index e3733c9..1c1d366 100644
--- a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/RegexSplitAttributeDefinition.java
+++ b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/RegexSplitAttributeDefinition.java
@@ -92,7 +92,10 @@ public class RegexSplitAttributeDefinition extends AbstractAttributeDefinition {
final IdPAttribute resultantAttribute = new IdPAttribute(getId());
final List<IdPAttributeValue<?>> dependencyValues =
- PluginDependencySupport.getMergedAttributeValues(workContext, getDependencies(), getId());
+ PluginDependencySupport.getMergedAttributeValues(workContext,
+ getAttributeDependencies(),
+ getDataConnectorDependencies(),
+ getId());
for (final IdPAttributeValue dependencyValue : dependencyValues) {
final String inputValue;
@@ -139,7 +142,7 @@ public class RegexSplitAttributeDefinition extends AbstractAttributeDefinition {
+ "': no regular expression was configured");
}
- if (getDependencies().isEmpty()) {
+ if (getDataConnectorDependencies().isEmpty() && getAttributeDependencies().isEmpty()) {
throw new ComponentInitializationException("Attribute definition '" + getId()
+ "': no dependencies were configured");
}
diff --git a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/ScopedAttributeDefinition.java b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/ScopedAttributeDefinition.java
index eb712de..8715195 100644
--- a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/ScopedAttributeDefinition.java
+++ b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/ScopedAttributeDefinition.java
@@ -89,7 +89,10 @@ public class ScopedAttributeDefinition extends AbstractAttributeDefinition {
final IdPAttribute resultantAttribute = new IdPAttribute(getId());
final List<IdPAttributeValue<?>> dependencyValues =
- PluginDependencySupport.getMergedAttributeValues(workContext, getDependencies(), getId());
+ PluginDependencySupport.getMergedAttributeValues(workContext,
+ getAttributeDependencies(),
+ getDataConnectorDependencies(),
+ getId());
final List<StringAttributeValue> valueList = new ArrayList<>(dependencyValues.size());
@@ -120,7 +123,7 @@ public class ScopedAttributeDefinition extends AbstractAttributeDefinition {
throw new ComponentInitializationException(getLogPrefix() + "': no scope was configured");
}
- if (getDependencies().isEmpty()) {
+ if (getDataConnectorDependencies().isEmpty() && getAttributeDependencies().isEmpty()) {
throw new ComponentInitializationException(getLogPrefix() + "': no dependencies were configured");
}
}
diff --git a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/ScriptedAttributeDefinition.java b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/ScriptedAttributeDefinition.java
index 24fed88..43e3a38 100644
--- a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/ScriptedAttributeDefinition.java
+++ b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/ScriptedAttributeDefinition.java
@@ -234,7 +234,9 @@ public class ScriptedAttributeDefinition extends AbstractAttributeDefinition {
final Map<String, List<IdPAttributeValue<?>>> dependencyAttributes =
PluginDependencySupport.getAllAttributeValues(
- (AttributeResolverWorkContext) input[1], getDependencies());
+ (AttributeResolverWorkContext) input[1],
+ getAttributeDependencies(),
+ getDataConnectorDependencies());
if (dependencyAttributes.containsKey(getId())) {
log.debug("{} The attribute ID to be populated is a dependency, not created", getLogPrefix());
diff --git a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/SimpleAttributeDefinition.java b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/SimpleAttributeDefinition.java
index a290f59..f828709 100644
--- a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/SimpleAttributeDefinition.java
+++ b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/SimpleAttributeDefinition.java
@@ -43,7 +43,10 @@ public class SimpleAttributeDefinition extends AbstractAttributeDefinition {
Constraint.isNotNull(workContext, "AttributeResolverWorkContext cannot be null");
final IdPAttribute result = new IdPAttribute(getId());
- result.setValues(PluginDependencySupport.getMergedAttributeValues(workContext, getDependencies(), getId()));
+ result.setValues(PluginDependencySupport.getMergedAttributeValues(workContext,
+ getAttributeDependencies(),
+ getDataConnectorDependencies(),
+ getId()));
return result;
}
@@ -52,7 +55,7 @@ public class SimpleAttributeDefinition extends AbstractAttributeDefinition {
@Override protected void doInitialize() throws ComponentInitializationException {
super.doInitialize();
- if (getDependencies().isEmpty()) {
+ if (getDataConnectorDependencies().isEmpty() && getAttributeDependencies().isEmpty()) {
throw new ComponentInitializationException(getLogPrefix() + " no dependencies were configured");
}
}
diff --git a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/TemplateAttributeDefinition.java b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/TemplateAttributeDefinition.java
index 96f5907..26e59f9 100644
--- a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/TemplateAttributeDefinition.java
+++ b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/TemplateAttributeDefinition.java
@@ -173,7 +173,7 @@ public class TemplateAttributeDefinition extends AbstractAttributeDefinition {
@Override protected void doInitialize() throws ComponentInitializationException {
super.doInitialize();
- if (getDependencies().isEmpty()) {
+ if (getAttributeDependencies().isEmpty() && getDataConnectorDependencies().isEmpty()) {
throw new ComponentInitializationException(getLogPrefix() + " no dependencies were configured");
}
@@ -209,19 +209,22 @@ public class TemplateAttributeDefinition extends AbstractAttributeDefinition {
return;
}
- final Set<String> dependencyAttributeNames = new HashSet<>(getDependencies().size());
- for (final ResolverPluginDependency dependency: getDependencies()) {
- if (dependency instanceof ResolverAttributeDefinitionDependency) {
- dependencyAttributeNames.add( dependency.getDependencyPluginId());
- } else if (dependency instanceof ResolverDataConnectorDependency) {
- final ResolverDataConnectorDependency dc = (ResolverDataConnectorDependency) dependency;
- if (dc.isAllAttributes()) {
- return;
- }
- dependencyAttributeNames.addAll(dc.getAttributeNames());
+ final Set<String> dependencyAttributeNames = new HashSet<>(getAttributeDependencies().size() +
+ getDataConnectorDependencies().size());
+
+ for (final ResolverAttributeDefinitionDependency attrDep: getAttributeDependencies()) {
+ dependencyAttributeNames.add(attrDep.getDependencyPluginId());
+ }
+
+ for (final ResolverDataConnectorDependency dcDep: getDataConnectorDependencies()) {
+ if (dcDep.isAllAttributes()) {
+ // No sensible check can be made if wild carding
+ return;
}
+ dependencyAttributeNames.addAll(dcDep.getAttributeNames());
}
+
for (final String s: sourceAttributes) {
if (!dependencyAttributeNames.contains(s)) {
log.warn("{} Source Attribute {} is not provided as a dependency", getLogPrefix(),s);
@@ -338,8 +341,11 @@ public class TemplateAttributeDefinition extends AbstractAttributeDefinition {
@Nonnull @NonnullElements final Map<String,Iterator<IdPAttributeValue<?>>> sourceValues)
throws ResolutionException {
- final Map<String, List<IdPAttributeValue<?>>> dependencyAttributes =
- PluginDependencySupport.getAllAttributeValues(workContext, getDependencies());
+ final Map<String, List<IdPAttributeValue<?>>> dependencyAttributes =
+ PluginDependencySupport.getAllAttributeValues(workContext,
+ getAttributeDependencies(),
+ getDataConnectorDependencies());
+
int valueCount = 0;
if (getSourceAttributes().isEmpty()) {
diff --git a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/mapped/impl/MappedAttributeDefinition.java b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/mapped/impl/MappedAttributeDefinition.java
index 53c9e4d..11395f9 100644
--- a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/mapped/impl/MappedAttributeDefinition.java
+++ b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/mapped/impl/MappedAttributeDefinition.java
@@ -198,7 +198,10 @@ public class MappedAttributeDefinition extends AbstractAttributeDefinition {
Constraint.isNotNull(resolutionContext, "Attribute resolution context can not be null");
final List<IdPAttributeValue<?>> unmappedResults =
- PluginDependencySupport.getMergedAttributeValues(workContext, getDependencies(), getId());
+ PluginDependencySupport.getMergedAttributeValues(workContext,
+ getAttributeDependencies(),
+ getDataConnectorDependencies(),
+ getId());
log.debug("Attribute Definition '{}': Attempting to map the following values: {}", getId(), unmappedResults);
// Bucket for results
@@ -241,7 +244,7 @@ public class MappedAttributeDefinition extends AbstractAttributeDefinition {
@Override protected void doInitialize() throws ComponentInitializationException {
super.doInitialize();
- if (getDependencies().isEmpty()) {
+ if (getAttributeDependencies().isEmpty() && getDataConnectorDependencies().isEmpty()) {
throw new ComponentInitializationException("Attribute definition '" + getId()
+ "': no dependencies were configured");
}
diff --git a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/impl/AbstractSearchDataConnector.java b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/impl/AbstractSearchDataConnector.java
index d343573..2ecc43b 100644
--- a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/impl/AbstractSearchDataConnector.java
+++ b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/impl/AbstractSearchDataConnector.java
@@ -174,7 +174,9 @@ public abstract class AbstractSearchDataConnector<T1 extends ExecutableSearch,T2
ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
final Map<String, List<IdPAttributeValue<?>>> dependsAttributes =
- PluginDependencySupport.getAllAttributeValues(workContext, getDependencies());
+ PluginDependencySupport.getAllAttributeValues(workContext,
+ getAttributeDependencies(),
+ getDataConnectorDependencies());
final T1 executable = searchBuilder.build(resolutionContext, dependsAttributes);
Map<String, IdPAttribute> resolvedAttributes = null;
if (resultsCache != null && resolutionContext.getAllowCachedResults()) {
diff --git a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/impl/ScriptedDataConnector.java b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/impl/ScriptedDataConnector.java
index 68baf0f..4aea98e 100644
--- a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/impl/ScriptedDataConnector.java
+++ b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/impl/ScriptedDataConnector.java
@@ -251,7 +251,9 @@ public class ScriptedDataConnector extends AbstractDataConnector {
final Map<String, List<IdPAttributeValue<?>>> dependencyAttributes =
PluginDependencySupport.getAllAttributeValues(
- (AttributeResolverWorkContext) input[1], getDependencies());
+ (AttributeResolverWorkContext) input[1],
+ getAttributeDependencies(),
+ getDataConnectorDependencies());
for (final Entry<String,List<IdPAttributeValue<?>>> dependencyAttribute : dependencyAttributes.entrySet()) {
log.trace("{} Adding dependent attribute '{}' with the following values to the script context: {}",
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 326f654..57bd840 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
@@ -52,10 +52,8 @@ import net.shibboleth.idp.attribute.resolver.ResolvedAttributeDefinition;
import net.shibboleth.idp.attribute.resolver.ResolverAttributeDefinitionDependency;
import net.shibboleth.idp.attribute.resolver.ResolverDataConnectorDependency;
import net.shibboleth.idp.attribute.resolver.ResolverPlugin;
-import net.shibboleth.idp.attribute.resolver.ResolverPluginDependency;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolverWorkContext;
-import net.shibboleth.idp.authn.context.SubjectCanonicalizationContext;
import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
import net.shibboleth.utilities.java.support.annotation.constraint.NullableElements;
@@ -414,29 +412,15 @@ public class AttributeResolverImpl extends AbstractServiceableComponent<Attribut
Constraint.isNotNull(plugin, "Plugin dependency can not be null");
Constraint.isNotNull(resolutionContext, "Attribute resolution context cannot be null");
- if (plugin.getDependencies().isEmpty()) {
- return;
- }
-
log.debug("{} Resolving dependencies for '{}'", logPrefix, plugin.getId());
- for (final ResolverPluginDependency dependency : plugin.getDependencies()) {
- final String pluginId = dependency.getDependencyPluginId();
- if (dependency instanceof ResolverAttributeDefinitionDependency) {
- resolveAttributeDefinition(pluginId, resolutionContext);
- } else if (dependency instanceof ResolverDataConnectorDependency) {
- resolveDataConnector(pluginId, resolutionContext);
- } else if (attributeDefinitions.containsKey(pluginId)) {
- resolveAttributeDefinition(pluginId, resolutionContext);
- } else if (dataConnectors.containsKey(pluginId)) {
- resolveDataConnector(pluginId, resolutionContext);
- } else {
- // This will not happen for as long as we test this in initialization
- throw new ResolutionException("Plugin '" + plugin.getId() + "' contains a dependency on plugin '"
- + pluginId + "' which does not exist.");
- }
+ for (final ResolverAttributeDefinitionDependency attrDependency : plugin.getAttributeDependencies()) {
+ resolveAttributeDefinition(attrDependency.getDependencyPluginId(), resolutionContext);
}
+ for (final ResolverDataConnectorDependency dependency : plugin.getDataConnectorDependencies()) {
+ resolveDataConnector(dependency.getDependencyPluginId(), resolutionContext);
+ }
log.debug("{} Finished resolving dependencies for '{}'", logPrefix, plugin.getId());
}
@@ -559,40 +543,53 @@ public class AttributeResolverImpl extends AbstractServiceableComponent<Attribut
final Set<String> checkedPlugins) throws ComponentInitializationException {
final String pluginId = plugin.getId();
- ResolverPlugin<?> dependencyPlugin;
- for (final ResolverPluginDependency dependency : plugin.getDependencies()) {
+ for (final ResolverAttributeDefinitionDependency attrDependency : plugin.getAttributeDependencies()) {
+ final AttributeDefinition dependencyAttribute;
if (checkedPlugins.contains(pluginId)) {
continue;
}
- if (circularCheckPluginId.equals(dependency.getDependencyPluginId())) {
+ if (circularCheckPluginId.equals(attrDependency.getDependencyPluginId())) {
throw new ComponentInitializationException(logPrefix + " Plugin '" + circularCheckPluginId
- + "' and plugin '" + dependency.getDependencyPluginId()
+ + "' and attribute definition '" + attrDependency.getDependencyPluginId()
+ "' have a circular dependency on each other.");
}
- final String dependencyType;
- if (dependency instanceof ResolverAttributeDefinitionDependency) {
- dependencyPlugin = attributeDefinitions.get(dependency.getDependencyPluginId());
- dependencyType = "Attribute Definition";
- } else if (dependency instanceof ResolverDataConnectorDependency) {
- dependencyPlugin = dataConnectors.get(dependency.getDependencyPluginId());
- dependencyType = "Data Connector";
- } else {
- dependencyPlugin = attributeDefinitions.get(dependency.getDependencyPluginId());
- if (dependencyPlugin == null) {
- dependencyPlugin = dataConnectors.get(dependency.getDependencyPluginId());
- }
- dependencyType = "Deprecated ";
+
+ dependencyAttribute = attributeDefinitions.get(attrDependency.getDependencyPluginId());
+ if (dependencyAttribute == null) {
+ throw new ComponentInitializationException(logPrefix + " Plugin '" + plugin.getId()
+ + "' has a dependency on attribute definition '" + attrDependency.getDependencyPluginId()
+ + "' which doesn't exist");
}
- if (dependencyPlugin == null) {
+
+ checkPlugInDependencies(circularCheckPluginId, dependencyAttribute, checkedPlugins);
+ checkedPlugins.add(pluginId);
+ }
+
+ for (final ResolverDataConnectorDependency dependency : plugin.getDataConnectorDependencies()) {
+ final ResolverPlugin<?> dependencyDataConnector;
+
+ if (checkedPlugins.contains(pluginId)) {
+ continue;
+ }
+
+ if (circularCheckPluginId.equals(dependency.getDependencyPluginId())) {
+ throw new ComponentInitializationException(logPrefix + " Plugin '" + circularCheckPluginId
+ + "' and data connector '" + dependency.getDependencyPluginId()
+ + "' have a circular dependency on each other.");
+ }
+ dependencyDataConnector = dataConnectors.get(dependency.getDependencyPluginId());
+
+ if (dependencyDataConnector == null) {
throw new ComponentInitializationException(logPrefix + " Plugin '" + plugin.getId()
- + "' has a " + dependencyType + " dependency on plugin '" + dependency.getDependencyPluginId()
+ + "' has a dependency on data connector '" + dependency.getDependencyPluginId()
+ "' which doesn't exist");
}
- checkPlugInDependencies(circularCheckPluginId, dependencyPlugin, checkedPlugins);
+ checkPlugInDependencies(circularCheckPluginId, dependencyDataConnector, checkedPlugins);
checkedPlugins.add(pluginId);
}
+
}
/** {@inheritDoc} */
diff --git a/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/ad/impl/PrescopedAtributeTest.java b/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/ad/impl/PrescopedAtributeTest.java
index fdf758b..7ca96d8 100644
--- a/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/ad/impl/PrescopedAtributeTest.java
+++ b/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/ad/impl/PrescopedAtributeTest.java
@@ -23,6 +23,9 @@ import java.util.Collections;
import java.util.List;
import java.util.Set;
+import org.testng.Assert;
+import org.testng.annotations.Test;
+
import net.shibboleth.idp.attribute.ByteAttributeValue;
import net.shibboleth.idp.attribute.EmptyAttributeValue;
import net.shibboleth.idp.attribute.EmptyAttributeValue.EmptyType;
@@ -34,7 +37,6 @@ import net.shibboleth.idp.attribute.resolver.AttributeDefinition;
import net.shibboleth.idp.attribute.resolver.DataConnector;
import net.shibboleth.idp.attribute.resolver.ResolutionException;
import net.shibboleth.idp.attribute.resolver.ResolverDataConnectorDependency;
-import net.shibboleth.idp.attribute.resolver.ResolverPluginDependency;
import net.shibboleth.idp.attribute.resolver.ResolverTestSupport;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
import net.shibboleth.idp.attribute.resolver.impl.AttributeResolverImpl;
@@ -46,9 +48,6 @@ import net.shibboleth.utilities.java.support.component.DestroyedComponentExcepti
import net.shibboleth.utilities.java.support.component.UninitializedComponentException;
import net.shibboleth.utilities.java.support.logic.ConstraintViolationException;
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
/**
* Test for prescoped attribute definitions.
*/
@@ -69,14 +68,12 @@ public class PrescopedAtributeTest {
@Test public void preScoped() throws ResolutionException, ComponentInitializationException {
// Set the dependency on the data connector
- final Set<ResolverPluginDependency> dependencySet = new LazySet<>();
final ResolverDataConnectorDependency depend = new ResolverDataConnectorDependency(TestSources.STATIC_CONNECTOR_NAME);
depend.setAttributeNames(Collections.singletonList(TestSources.DEPENDS_ON_ATTRIBUTE_NAME_CONNECTOR));
- dependencySet.add(depend);
final PrescopedAttributeDefinition attrDef = new PrescopedAttributeDefinition();
attrDef.setId(TEST_ATTRIBUTE_NAME);
attrDef.setScopeDelimiter("-");
- attrDef.setDependencies(dependencySet);
+ attrDef.setDataConnectorDependencies(Collections.singleton(depend));
attrDef.initialize();
// And resolve
@@ -107,14 +104,14 @@ public class PrescopedAtributeTest {
@Test public void preScopedNoValues() throws ResolutionException, ComponentInitializationException {
// Set the dependency on the data connector
- final Set<ResolverPluginDependency> dependencySet = new LazySet<>();
+ final Set<ResolverDataConnectorDependency> dependencySet = new LazySet<>();
final ResolverDataConnectorDependency depend = new ResolverDataConnectorDependency(TestSources.STATIC_CONNECTOR_NAME);
depend.setAttributeNames(Collections.singletonList(TestSources.DEPENDS_ON_ATTRIBUTE_NAME_CONNECTOR));
dependencySet.add(depend);
final PrescopedAttributeDefinition attrDef = new PrescopedAttributeDefinition();
attrDef.setId(TEST_ATTRIBUTE_NAME);
attrDef.setScopeDelimiter(DELIMITER);
- attrDef.setDependencies(dependencySet);
+ attrDef.setDataConnectorDependencies(dependencySet);
attrDef.initialize();
// And resolve
@@ -148,7 +145,7 @@ public class PrescopedAtributeTest {
attrDef.setScopeDelimiter("@");
final ResolverDataConnectorDependency depend = new ResolverDataConnectorDependency("connector1");
depend.setAttributeNames(Collections.singletonList(ResolverTestSupport.EPA_ATTRIB_ID));
- attrDef.setDependencies(Collections.singleton((ResolverPluginDependency) depend));
+ attrDef.setDataConnectorDependencies(Collections.singleton(depend));
attrDef.initialize();
try {
@@ -178,7 +175,7 @@ public class PrescopedAtributeTest {
final PrescopedAttributeDefinition attrDef = new PrescopedAttributeDefinition();
attrDef.setId(TEST_ATTRIBUTE_NAME);
attrDef.setScopeDelimiter("@");
- attrDef.setDependencies(Collections.singleton((ResolverPluginDependency) depend));
+ attrDef.setDataConnectorDependencies(Collections.singleton(depend));
attrDef.initialize();
final IdPAttribute result = attrDef.resolve(resolutionContext);
@@ -193,7 +190,7 @@ public class PrescopedAtributeTest {
@Test public void emptyValueType() throws ResolutionException, ComponentInitializationException {
// Set the dependency on the data connector
- final Set<ResolverPluginDependency> dependencySet = new LazySet<>();
+ final Set<ResolverDataConnectorDependency> dependencySet = new LazySet<>();
final ResolverDataConnectorDependency depend = new ResolverDataConnectorDependency(TestSources.STATIC_CONNECTOR_NAME);
depend.setAttributeNames(Collections.singletonList(TestSources.DEPENDS_ON_ATTRIBUTE_NAME_CONNECTOR));
dependencySet.add(depend);
@@ -201,7 +198,7 @@ public class PrescopedAtributeTest {
attrDef.setId(TEST_ATTRIBUTE_NAME);
// delimiter that will produce an empty value
attrDef.setScopeDelimiter("at1-");
- attrDef.setDependencies(dependencySet);
+ attrDef.setDataConnectorDependencies(dependencySet);
attrDef.initialize();
// And resolve
@@ -229,8 +226,8 @@ public class PrescopedAtributeTest {
PrescopedAttributeDefinition attrDef = new PrescopedAttributeDefinition();
final ResolverDataConnectorDependency depend = new ResolverDataConnectorDependency("connector1");
depend.setAttributeNames(Collections.singletonList(ResolverTestSupport.EPA_ATTRIB_ID));
- final Set<ResolverPluginDependency> pluginDependencies = Collections.singleton((ResolverPluginDependency)depend);
- attrDef.setDependencies(pluginDependencies);
+ final Set<ResolverDataConnectorDependency> pluginDependencies = Collections.singleton(depend);
+ attrDef.setDataConnectorDependencies(pluginDependencies);
attrDef.setId(TEST_ATTRIBUTE_NAME);
try {
@@ -250,7 +247,7 @@ public class PrescopedAtributeTest {
} catch (final ComponentInitializationException e) {
// OK
}
- attrDef.setDependencies(pluginDependencies);
+ attrDef.setDataConnectorDependencies(pluginDependencies);
try {
attrDef.resolve(new AttributeResolutionContext());
diff --git a/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/ad/impl/RegexAtributeTest.java b/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/ad/impl/RegexAtributeTest.java
index 30fe0f6..e2a156b 100644
--- a/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/ad/impl/RegexAtributeTest.java
+++ b/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/ad/impl/RegexAtributeTest.java
@@ -36,6 +36,7 @@ import net.shibboleth.idp.attribute.StringAttributeValue;
import net.shibboleth.idp.attribute.resolver.AttributeDefinition;
import net.shibboleth.idp.attribute.resolver.DataConnector;
import net.shibboleth.idp.attribute.resolver.ResolutionException;
+import net.shibboleth.idp.attribute.resolver.ResolverDataConnectorDependency;
import net.shibboleth.idp.attribute.resolver.ResolverPluginDependency;
import net.shibboleth.idp.attribute.resolver.ResolverTestSupport;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
@@ -68,13 +69,13 @@ public class RegexAtributeTest {
@Test public void regex() throws ResolutionException, ComponentInitializationException {
// Set the dependency on the data connector
- final Set<ResolverPluginDependency> dependencySet = new LazySet<>();
- final ResolverPluginDependency depend = TestSources.makeResolverPluginDependency(TestSources.STATIC_CONNECTOR_NAME,TestSources.DEPENDS_ON_ATTRIBUTE_NAME_CONNECTOR);
+ final Set<ResolverDataConnectorDependency> dependencySet = new LazySet<>();
+ final ResolverDataConnectorDependency depend = TestSources.makeResolverPluginDependency(TestSources.STATIC_CONNECTOR_NAME,TestSources.DEPENDS_ON_ATTRIBUTE_NAME_CONNECTOR);
dependencySet.add(depend);
final RegexSplitAttributeDefinition attrDef = new RegexSplitAttributeDefinition();
attrDef.setId(TEST_ATTRIBUTE_NAME);
attrDef.setRegularExpression(TestSources.CONNECTOR_ATTRIBUTE_VALUE_REGEXP_PATTERN);
- attrDef.setDependencies(dependencySet);
+ attrDef.setDataConnectorDependencies(dependencySet);
attrDef.initialize();
// And resolve
@@ -107,13 +108,13 @@ public class RegexAtributeTest {
final AttributeResolutionContext resolutionContext =
ResolverTestSupport.buildResolutionContext(ResolverTestSupport.buildDataConnector("connector1", attr));
- final ResolverPluginDependency depend = TestSources.makeResolverPluginDependency("connector1", ResolverTestSupport.EPA_ATTRIB_ID);
+ final ResolverDataConnectorDependency depend = TestSources.makeResolverPluginDependency("connector1", ResolverTestSupport.EPA_ATTRIB_ID);
final RegexSplitAttributeDefinition attrDef = new RegexSplitAttributeDefinition();
attrDef.setId(TEST_ATTRIBUTE_NAME);
attrDef.setRegularExpression(TestSources.CONNECTOR_ATTRIBUTE_VALUE_REGEXP_PATTERN);
- attrDef.setDependencies(Collections.singleton(depend));
+ attrDef.setDataConnectorDependencies(Collections.singleton(depend));
attrDef.initialize();
final IdPAttribute result = attrDef.resolve(resolutionContext);
@@ -135,8 +136,8 @@ public class RegexAtributeTest {
final RegexSplitAttributeDefinition attrDef = new RegexSplitAttributeDefinition();
attrDef.setId(TEST_ATTRIBUTE_NAME);
attrDef.setRegularExpression(TestSources.CONNECTOR_ATTRIBUTE_VALUE_REGEXP_PATTERN);
- final ResolverPluginDependency depend = TestSources.makeResolverPluginDependency("connector1", ResolverTestSupport.EPA_ATTRIB_ID);
- attrDef.setDependencies(Collections.singleton(depend));
+ final ResolverDataConnectorDependency depend = TestSources.makeResolverPluginDependency("connector1", ResolverTestSupport.EPA_ATTRIB_ID);
+ attrDef.setDataConnectorDependencies(Collections.singleton(depend));
attrDef.initialize();
try {
@@ -149,14 +150,15 @@ public class RegexAtributeTest {
@Test public void emptyValueType() throws ResolutionException, ComponentInitializationException {
// Set the dependency on the data connector
- final Set<ResolverPluginDependency> dependencySet = new LazySet<>();
- final ResolverPluginDependency depend = TestSources.makeResolverPluginDependency(TestSources.STATIC_CONNECTOR_NAME, TestSources.DEPENDS_ON_ATTRIBUTE_NAME_CONNECTOR);
+ final Set<ResolverDataConnectorDependency> dependencySet = new LazySet<>();
+ final ResolverDataConnectorDependency depend =
+ TestSources.makeResolverPluginDependency(TestSources.STATIC_CONNECTOR_NAME, TestSources.DEPENDS_ON_ATTRIBUTE_NAME_CONNECTOR);
dependencySet.add(depend);
final RegexSplitAttributeDefinition attrDef = new RegexSplitAttributeDefinition();
attrDef.setId(TEST_ATTRIBUTE_NAME);
// regex where the first group doesn't match
attrDef.setRegularExpression(Pattern.compile("([zZ]*)at1-(.+)or"));
- attrDef.setDependencies(dependencySet);
+ attrDef.setDataConnectorDependencies(dependencySet);
attrDef.initialize();
// And resolve
@@ -180,9 +182,10 @@ public class RegexAtributeTest {
@Test public void initDestroyParms() throws ResolutionException, ComponentInitializationException {
RegexSplitAttributeDefinition attrDef = new RegexSplitAttributeDefinition();
- final ResolverPluginDependency depend = TestSources.makeResolverPluginDependency("connector1", ResolverTestSupport.EPA_ATTRIB_ID);
- final Set<ResolverPluginDependency> pluginDependencies = Collections.singleton(depend);
- attrDef.setDependencies(pluginDependencies);
+ final ResolverDataConnectorDependency depend =
+ TestSources.makeResolverPluginDependency("connector1", ResolverTestSupport.EPA_ATTRIB_ID);
+ final Set<ResolverDataConnectorDependency> pluginDependencies = Collections.singleton(depend);
+ attrDef.setDataConnectorDependencies(pluginDependencies);
attrDef.setId(TEST_ATTRIBUTE_NAME);
try {
attrDef.initialize();
@@ -207,7 +210,7 @@ public class RegexAtributeTest {
} catch (final ComponentInitializationException e) {
// OK
}
- attrDef.setDependencies(pluginDependencies);
+ attrDef.setDataConnectorDependencies(pluginDependencies);
try {
attrDef.resolve(new AttributeResolutionContext());
diff --git a/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/ad/impl/SAML1NameIdentifierAttributeDefinitionTest.java b/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/ad/impl/SAML1NameIdentifierAttributeDefinitionTest.java
index 8095e1b..177322b 100644
--- a/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/ad/impl/SAML1NameIdentifierAttributeDefinitionTest.java
+++ b/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/ad/impl/SAML1NameIdentifierAttributeDefinitionTest.java
@@ -32,6 +32,8 @@ import net.shibboleth.idp.attribute.StringAttributeValue;
import net.shibboleth.idp.attribute.resolver.AttributeDefinition;
import net.shibboleth.idp.attribute.resolver.DataConnector;
import net.shibboleth.idp.attribute.resolver.ResolutionException;
+import net.shibboleth.idp.attribute.resolver.ResolverAttributeDefinitionDependency;
+import net.shibboleth.idp.attribute.resolver.ResolverDataConnectorDependency;
import net.shibboleth.idp.attribute.resolver.ResolverPluginDependency;
import net.shibboleth.idp.attribute.resolver.ResolverTestSupport;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
@@ -66,7 +68,7 @@ public class SAML1NameIdentifierAttributeDefinitionTest extends OpenSAMLInitBase
@Test public void empty() throws ResolutionException, ComponentInitializationException {
final SAML1NameIdentifierAttributeDefinition defn = new SAML1NameIdentifierAttributeDefinition();
defn.setId(TEST_ATTRIBUTE_NAME);
- defn.setDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("foo", "bar")));
+ defn.setDataConnectorDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("foo", "bar")));
defn.initialize();
final IdPAttribute result =
@@ -79,9 +81,9 @@ public class SAML1NameIdentifierAttributeDefinitionTest extends OpenSAMLInitBase
final SAML1NameIdentifierAttributeDefinition defn = new SAML1NameIdentifierAttributeDefinition();
defn.setId(TEST_ATTRIBUTE_NAME);
// Set the dependency on the data connector
- final Set<ResolverPluginDependency> dependencySet = new LazySet<>();
+ final Set<ResolverAttributeDefinitionDependency> dependencySet = new LazySet<>();
dependencySet.add(TestSources.makeResolverPluginDependency(TestSources.DEPENDS_ON_ATTRIBUTE_NAME_ATTR));
- defn.setDependencies(dependencySet);
+ defn.setAttributeDependencies(dependencySet);
defn.initialize();
// And resolve
@@ -120,13 +122,13 @@ public class SAML1NameIdentifierAttributeDefinitionTest extends OpenSAMLInitBase
final IdPAttribute attr = new IdPAttribute(ResolverTestSupport.EPA_ATTRIB_ID);
attr.setValues(values);
- final ResolverPluginDependency depend = TestSources.makeResolverPluginDependency("connector1", ResolverTestSupport.EPA_ATTRIB_ID);
+ final ResolverDataConnectorDependency depend = TestSources.makeResolverPluginDependency("connector1", ResolverTestSupport.EPA_ATTRIB_ID);
final SAML1NameIdentifierAttributeDefinition defn = new SAML1NameIdentifierAttributeDefinition();
defn.setId(TEST_ATTRIBUTE_NAME);
// Set the dependency on the data connector
- defn.setDependencies(Collections.singleton(depend));
+ defn.setDataConnectorDependencies(Collections.singleton(depend));
defn.initialize();
// And resolve
@@ -159,12 +161,12 @@ public class SAML1NameIdentifierAttributeDefinitionTest extends OpenSAMLInitBase
@Test public void nullIssuerID() throws ComponentInitializationException {
final SAML1NameIdentifierAttributeDefinition defn = new SAML1NameIdentifierAttributeDefinition();
defn.setId(TEST_ATTRIBUTE_NAME);
- defn.setDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("foo", "bar")));
+ defn.setDataConnectorDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("foo", "bar")));
// Set the dependency on the data connector
- final Set<ResolverPluginDependency> dependencySet = new LazySet<>();
+ final Set<ResolverAttributeDefinitionDependency> dependencySet = new LazySet<>();
dependencySet.add(TestSources.makeResolverPluginDependency(TestSources.DEPENDS_ON_ATTRIBUTE_NAME_ATTR));
- defn.setDependencies(dependencySet);
+ defn.setAttributeDependencies(dependencySet);
defn.initialize();
final Set<AttributeDefinition> am = new LazySet<>();
am.add(defn);
@@ -186,12 +188,12 @@ public class SAML1NameIdentifierAttributeDefinitionTest extends OpenSAMLInitBase
final SAML1NameIdentifierAttributeDefinition defn2 = new SAML1NameIdentifierAttributeDefinition();
defn2.setId(SECOND_ATTRIBUTE_NAME);
- defn2.setDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("foo", "bar")));
+ defn2.setDataConnectorDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("foo", "bar")));
// Set the dependency on the data connector
- final Set<ResolverPluginDependency> dependencySet = new LazySet<>();
+ final Set<ResolverAttributeDefinitionDependency> dependencySet = new LazySet<>();
dependencySet.add(TestSources.makeResolverPluginDependency(TEST_ATTRIBUTE_NAME));
- defn2.setDependencies(dependencySet);
+ defn2.setAttributeDependencies(dependencySet);
defn2.initialize();
// And resolve
@@ -215,12 +217,12 @@ public class SAML1NameIdentifierAttributeDefinitionTest extends OpenSAMLInitBase
@Test public void singleValueWithOptions() throws ResolutionException, ComponentInitializationException {
final SAML1NameIdentifierAttributeDefinition defn = new SAML1NameIdentifierAttributeDefinition();
defn.setId(TEST_ATTRIBUTE_NAME);
- defn.setDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("foo", "bar")));
+ defn.setDataConnectorDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("foo", "bar")));
// Set the dependency on the data connector
- final Set<ResolverPluginDependency> dependencySet = new LazySet<>();
+ final Set<ResolverAttributeDefinitionDependency> dependencySet = new LazySet<>();
dependencySet.add(TestSources.makeResolverPluginDependency(TestSources.DEPENDS_ON_ATTRIBUTE_NAME_ATTR));
- defn.setDependencies(dependencySet);
+ defn.setAttributeDependencies(dependencySet);
defn.setNameIdFormat(ALTERNATIVE_FORMAT);
defn.setNameIdQualifier(ALTERNATE_QUALIFIER);
defn.initialize();
diff --git a/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/ad/impl/SAML2NameIDAttributeDefinitionTest.java b/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/ad/impl/SAML2NameIDAttributeDefinitionTest.java
index edcb6a2..4c6323e 100644
--- a/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/ad/impl/SAML2NameIDAttributeDefinitionTest.java
+++ b/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/ad/impl/SAML2NameIDAttributeDefinitionTest.java
@@ -34,6 +34,8 @@ import net.shibboleth.idp.attribute.resolver.AttributeResolver;
import net.shibboleth.idp.attribute.resolver.DataConnector;
import net.shibboleth.idp.attribute.resolver.ResolutionException;
import net.shibboleth.idp.attribute.resolver.ResolvedAttributeDefinition;
+import net.shibboleth.idp.attribute.resolver.ResolverAttributeDefinitionDependency;
+import net.shibboleth.idp.attribute.resolver.ResolverDataConnectorDependency;
import net.shibboleth.idp.attribute.resolver.ResolverPluginDependency;
import net.shibboleth.idp.attribute.resolver.ResolverTestSupport;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
@@ -69,7 +71,7 @@ public class SAML2NameIDAttributeDefinitionTest extends OpenSAMLInitBaseTestCase
@Test public void testEmpty() throws ResolutionException, ComponentInitializationException {
final SAML2NameIDAttributeDefinition defn = new SAML2NameIDAttributeDefinition();
defn.setId(TEST_ATTRIBUTE_NAME);
- defn.setDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("bar")));
+ defn.setAttributeDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("bar")));
defn.initialize();
final IdPAttribute attr = new IdPAttribute("bar");
@@ -94,9 +96,9 @@ public class SAML2NameIDAttributeDefinitionTest extends OpenSAMLInitBaseTestCase
defn.setId(TEST_ATTRIBUTE_NAME);
// Set the dependency on the data connector
- final Set<ResolverPluginDependency> dependencySet = new LazySet<>();
+ final Set<ResolverAttributeDefinitionDependency> dependencySet = new LazySet<>();
dependencySet.add(TestSources.makeResolverPluginDependency(TestSources.DEPENDS_ON_ATTRIBUTE_NAME_ATTR));
- defn.setDependencies(dependencySet);
+ defn.setAttributeDependencies(dependencySet);
defn.initialize();
// And resolve
@@ -140,13 +142,13 @@ public class SAML2NameIDAttributeDefinitionTest extends OpenSAMLInitBaseTestCase
final IdPAttribute attr = new IdPAttribute(ResolverTestSupport.EPA_ATTRIB_ID);
attr.setValues(values);
- final ResolverPluginDependency depend = TestSources.makeResolverPluginDependency("connector1", ResolverTestSupport.EPA_ATTRIB_ID);
+ final ResolverDataConnectorDependency depend = TestSources.makeResolverPluginDependency("connector1", ResolverTestSupport.EPA_ATTRIB_ID);
final SAML2NameIDAttributeDefinition defn = new SAML2NameIDAttributeDefinition();
defn.setId(TEST_ATTRIBUTE_NAME);
// Set the dependency on the data connector
- defn.setDependencies(Collections.singleton(depend));
+ defn.setDataConnectorDependencies(Collections.singleton(depend));
defn.setNameIdSPQualifier("doo");
defn.initialize();
@@ -209,9 +211,9 @@ public class SAML2NameIDAttributeDefinitionTest extends OpenSAMLInitBaseTestCase
defn2.setId(SECOND_ATTRIBUTE_NAME);
// Set the dependency on the data connector
- final Set<ResolverPluginDependency> dependencySet = new LazySet<>();
+ final Set<ResolverAttributeDefinitionDependency> dependencySet = new LazySet<>();
dependencySet.add(TestSources.makeResolverPluginDependency(TEST_ATTRIBUTE_NAME));
- defn2.setDependencies(dependencySet);
+ defn2.setAttributeDependencies(dependencySet);
defn2.initialize();
// And resolve
@@ -237,12 +239,12 @@ public class SAML2NameIDAttributeDefinitionTest extends OpenSAMLInitBaseTestCase
ComponentInitializationException {
final SAML2NameIDAttributeDefinition defn = new SAML2NameIDAttributeDefinition();
defn.setId(TEST_ATTRIBUTE_NAME);
- defn.setDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("bar")));
+ defn.setAttributeDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("bar")));
// Set the dependency on the data connector
- final Set<ResolverPluginDependency> dependencySet = new LazySet<>();
+ final Set<ResolverAttributeDefinitionDependency> dependencySet = new LazySet<>();
dependencySet.add(TestSources.makeResolverPluginDependency(TestSources.DEPENDS_ON_ATTRIBUTE_NAME_ATTR));
- defn.setDependencies(dependencySet);
+ defn.setAttributeDependencies(dependencySet);
defn.setNameIdFormat(ALTERNATIVE_FORMAT);
defn.setNameIdQualifier(ALTERNATE_QUALIFIER);
defn.setNameIdSPQualifier(ALTERNATE_SP_QUALIFIER);
diff --git a/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/ad/impl/ScopedAttributeTest.java b/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/ad/impl/ScopedAttributeTest.java
index d5a3c8a..ce52775 100644
--- a/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/ad/impl/ScopedAttributeTest.java
+++ b/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/ad/impl/ScopedAttributeTest.java
@@ -25,6 +25,9 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;
+import org.testng.Assert;
+import org.testng.annotations.Test;
+
import net.shibboleth.idp.attribute.ByteAttributeValue;
import net.shibboleth.idp.attribute.EmptyAttributeValue;
import net.shibboleth.idp.attribute.EmptyAttributeValue.EmptyType;
@@ -35,7 +38,7 @@ import net.shibboleth.idp.attribute.StringAttributeValue;
import net.shibboleth.idp.attribute.resolver.AttributeDefinition;
import net.shibboleth.idp.attribute.resolver.DataConnector;
import net.shibboleth.idp.attribute.resolver.ResolutionException;
-import net.shibboleth.idp.attribute.resolver.ResolverPluginDependency;
+import net.shibboleth.idp.attribute.resolver.ResolverDataConnectorDependency;
import net.shibboleth.idp.attribute.resolver.ResolverTestSupport;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
import net.shibboleth.idp.attribute.resolver.impl.AttributeResolverImpl;
@@ -47,9 +50,6 @@ import net.shibboleth.utilities.java.support.component.DestroyedComponentExcepti
import net.shibboleth.utilities.java.support.component.UninitializedComponentException;
import net.shibboleth.utilities.java.support.logic.ConstraintViolationException;
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
/**
* Tester for {@link ScopedAttributeDefinition}.
*/
@@ -70,14 +70,14 @@ public class ScopedAttributeTest {
@Test public void scopes() throws ResolutionException, ComponentInitializationException {
// Set the dependency on the data connector
- final Set<ResolverPluginDependency> dependencySet = new LazySet<>();
+ final Set<ResolverDataConnectorDependency> dependencySet = new LazySet<>();
dependencySet.add(TestSources.makeResolverPluginDependency(TestSources.STATIC_CONNECTOR_NAME,
TestSources.DEPENDS_ON_ATTRIBUTE_NAME_CONNECTOR));
final ScopedAttributeDefinition scoped = new ScopedAttributeDefinition();
scoped.setScope(TEST_SCOPE);
scoped.setId(TEST_ATTRIBUTE_NAME);
- scoped.setDependencies(dependencySet);
+ scoped.setDataConnectorDependencies(dependencySet);
scoped.initialize();
// And resolve
@@ -116,7 +116,7 @@ public class ScopedAttributeTest {
final ScopedAttributeDefinition attrDef = new ScopedAttributeDefinition();
attrDef.setId(TEST_ATTRIBUTE_NAME);
attrDef.setScope(TEST_SCOPE);
- attrDef.setDependencies(new HashSet<>(Arrays.asList(TestSources.makeResolverPluginDependency("connector1",
+ attrDef.setDataConnectorDependencies(new HashSet<>(Arrays.asList(TestSources.makeResolverPluginDependency("connector1",
ResolverTestSupport.EPA_ATTRIB_ID))));
attrDef.initialize();
@@ -144,7 +144,7 @@ public class ScopedAttributeTest {
final ScopedAttributeDefinition attrDef = new ScopedAttributeDefinition();
attrDef.setId(TEST_ATTRIBUTE_NAME);
attrDef.setScope(TEST_SCOPE);
- attrDef.setDependencies(new HashSet<>(Arrays.asList(TestSources.makeResolverPluginDependency("connector1",
+ attrDef.setDataConnectorDependencies(new HashSet<>(Arrays.asList(TestSources.makeResolverPluginDependency("connector1",
ResolverTestSupport.EPA_ATTRIB_ID))));
attrDef.initialize();
@@ -162,10 +162,10 @@ public class ScopedAttributeTest {
@Test public void initDestroyParms() throws ResolutionException, ComponentInitializationException {
ScopedAttributeDefinition attrDef = new ScopedAttributeDefinition();
- final Set<ResolverPluginDependency> pluginDependencies =
+ final Set<ResolverDataConnectorDependency> pluginDependencies =
new HashSet<>(Arrays.asList(TestSources.makeResolverPluginDependency("connector1",
ResolverTestSupport.EPA_ATTRIB_ID)));
- attrDef.setDependencies(pluginDependencies);
+ attrDef.setDataConnectorDependencies(pluginDependencies);
attrDef.setId(TEST_ATTRIBUTE_NAME);
try {
@@ -188,7 +188,7 @@ public class ScopedAttributeTest {
attrDef = new ScopedAttributeDefinition();
attrDef.setId(TEST_ATTRIBUTE_NAME);
Assert.assertNull(attrDef.getScope());
- attrDef.setDependencies(pluginDependencies);
+ attrDef.setDataConnectorDependencies(pluginDependencies);
try {
attrDef.initialize();
Assert.fail("no Scope - should fail");
diff --git a/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/ad/impl/ScriptedAttributeTest.java b/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/ad/impl/ScriptedAttributeTest.java
index 4143657..6f23be8 100644
--- a/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/ad/impl/ScriptedAttributeTest.java
+++ b/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/ad/impl/ScriptedAttributeTest.java
@@ -40,6 +40,8 @@ import net.shibboleth.idp.attribute.XMLObjectAttributeValue;
import net.shibboleth.idp.attribute.resolver.AttributeDefinition;
import net.shibboleth.idp.attribute.resolver.DataConnector;
import net.shibboleth.idp.attribute.resolver.ResolutionException;
+import net.shibboleth.idp.attribute.resolver.ResolverAttributeDefinitionDependency;
+import net.shibboleth.idp.attribute.resolver.ResolverDataConnectorDependency;
import net.shibboleth.idp.attribute.resolver.ResolverPluginDependency;
import net.shibboleth.idp.attribute.resolver.ResolverTestSupport;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
@@ -350,12 +352,12 @@ public class ScriptedAttributeTest extends XMLObjectBaseTestCase {
IOException {
// Set the dependency on the data connector
- final Set<ResolverPluginDependency> ds = new LazySet<>();
+ final Set<ResolverAttributeDefinitionDependency> ds = new LazySet<>();
ds.add(TestSources.makeResolverPluginDependency(TestSources.DEPENDS_ON_ATTRIBUTE_NAME_ATTR));
final ScriptedAttributeDefinition scripted = new ScriptedAttributeDefinition();
scripted.setId(TEST_ATTRIBUTE_NAME);
scripted.setScript(new EvaluableScript(SCRIPT_LANGUAGE, getScript("attributes.script")));
- scripted.setDependencies(ds);
+ scripted.setAttributeDependencies(ds);
scripted.initialize();
// And resolve
@@ -383,12 +385,12 @@ public class ScriptedAttributeTest extends XMLObjectBaseTestCase {
IOException {
// Set the dependency on the data connector
- final Set<ResolverPluginDependency> ds = new LazySet<>();
+ final Set<ResolverAttributeDefinitionDependency> ds = new LazySet<>();
ds.add(TestSources.makeResolverPluginDependency(TestSources.DEPENDS_ON_ATTRIBUTE_NAME_ATTR));
final ScriptedAttributeDefinition scripted = new ScriptedAttributeDefinition();
scripted.setId(TEST_ATTRIBUTE_NAME);
scripted.setScript(new EvaluableScript(SCRIPT_LANGUAGE, getScript("work.script")));
- scripted.setDependencies(ds);
+ scripted.setAttributeDependencies(ds);
scripted.initialize();
// And resolve
@@ -431,12 +433,12 @@ public class ScriptedAttributeTest extends XMLObjectBaseTestCase {
final AttributeResolutionContext resolutionContext =
ResolverTestSupport.buildResolutionContext(ResolverTestSupport.buildDataConnector("connector1", attr));
- final ResolverPluginDependency depend = TestSources.makeResolverPluginDependency("connector1", TestSources.DEPENDS_ON_ATTRIBUTE_NAME_ATTR);
+ final ResolverDataConnectorDependency depend = TestSources.makeResolverPluginDependency("connector1", TestSources.DEPENDS_ON_ATTRIBUTE_NAME_ATTR);
final ScriptedAttributeDefinition scripted = new ScriptedAttributeDefinition();
scripted.setId(TEST_ATTRIBUTE_NAME);
scripted.setScript(new EvaluableScript(SCRIPT_LANGUAGE, getScript("attributes.script")));
- scripted.setDependencies(Collections.singleton(depend));
+ scripted.setDataConnectorDependencies(Collections.singleton(depend));
scripted.initialize();
final IdPAttribute result = scripted.resolve(resolutionContext);
@@ -452,13 +454,13 @@ public class ScriptedAttributeTest extends XMLObjectBaseTestCase {
IOException {
// Set the dependency on the data connector
- final Set<ResolverPluginDependency> ds = new LazySet<>();
+ final Set<ResolverAttributeDefinitionDependency> ds = new LazySet<>();
ds.add(TestSources.makeResolverPluginDependency(TestSources.DEPENDS_ON_SECOND_ATTRIBUTE_NAME));
final ScriptedAttributeDefinition scripted = new ScriptedAttributeDefinition();
scripted.setId(TEST_ATTRIBUTE_NAME);
scripted.setScript(new EvaluableScript(SCRIPT_LANGUAGE, getScript("attributes2.script")));
- scripted.setDependencies(ds);
+ scripted.setAttributeDependencies(ds);
scripted.initialize();
// And resolve
@@ -497,14 +499,14 @@ public class ScriptedAttributeTest extends XMLObjectBaseTestCase {
IOException {
// Set the dependency on the data connector
- final Set<ResolverPluginDependency> ds = new LazySet<>();
+ final Set<ResolverDataConnectorDependency> ds = new LazySet<>();
ds.add(TestSources.makeResolverPluginDependency(TestSources.STATIC_CONNECTOR_NAME,
TestSources.DEPENDS_ON_ATTRIBUTE_NAME_CONNECTOR));
final ScriptedAttributeDefinition scripted = new ScriptedAttributeDefinition();
scripted.setId(TEST_ATTRIBUTE_NAME);
scripted.setScript(new EvaluableScript(SCRIPT_LANGUAGE, getScript("context.script", false)));
- scripted.setDependencies(ds);
+ scripted.setDataConnectorDependencies(ds);
scripted.initialize();
// And resolve
@@ -540,13 +542,13 @@ public class ScriptedAttributeTest extends XMLObjectBaseTestCase {
connector.setAttributesStrategy(new Locator(exampleData));
connector.setId("Connector");
- final Set<ResolverPluginDependency> ds =
+ final Set<ResolverDataConnectorDependency> ds =
Collections.singleton(TestSources.makeResolverPluginDependency("Connector", null));
final ScriptedAttributeDefinition scripted = new ScriptedAttributeDefinition();
scripted.setId(attributeName);
scripted.setScript(new EvaluableScript(SCRIPT_LANGUAGE, getScript(exampleScript, false)));
- scripted.setDependencies(ds);
+ scripted.setDataConnectorDependencies(ds);
final Set<DataConnector> dataDefinitions = Collections.singleton((DataConnector) connector);
final Set<AttributeDefinition> attrDefinitions = Collections.singleton((AttributeDefinition) scripted);
diff --git a/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/ad/impl/SimpleAttributeTest.java b/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/ad/impl/SimpleAttributeTest.java
index 963fa21..6cdb79b 100644
--- a/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/ad/impl/SimpleAttributeTest.java
+++ b/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/ad/impl/SimpleAttributeTest.java
@@ -30,6 +30,8 @@ import net.shibboleth.idp.attribute.IdPAttributeValue;
import net.shibboleth.idp.attribute.resolver.AttributeDefinition;
import net.shibboleth.idp.attribute.resolver.DataConnector;
import net.shibboleth.idp.attribute.resolver.ResolutionException;
+import net.shibboleth.idp.attribute.resolver.ResolverAttributeDefinitionDependency;
+import net.shibboleth.idp.attribute.resolver.ResolverDataConnectorDependency;
import net.shibboleth.idp.attribute.resolver.ResolverPluginDependency;
import net.shibboleth.idp.attribute.resolver.ResolverTestSupport;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
@@ -64,7 +66,7 @@ public class SimpleAttributeTest {
} catch (final ComponentInitializationException e) {
//OK
}
- simple.setDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("foo", "bar")));
+ simple.setDataConnectorDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("foo", "bar")));
simple.initialize();
final AttributeResolutionContext context = new AttributeResolutionContext();
@@ -85,10 +87,10 @@ public class SimpleAttributeTest {
final SimpleAttributeDefinition simple = new SimpleAttributeDefinition();
simple.setId(TEST_ATTRIBUTE_NAME);
- final Set<ResolverPluginDependency> dependencySet = new LazySet<>();
+ final Set<ResolverDataConnectorDependency> dependencySet = new LazySet<>();
dependencySet.add(TestSources.makeResolverPluginDependency(TestSources.STATIC_CONNECTOR_NAME,
TestSources.DEPENDS_ON_ATTRIBUTE_NAME_CONNECTOR));
- simple.setDependencies(dependencySet);
+ simple.setDataConnectorDependencies(dependencySet);
simple.initialize();
// And resolve
@@ -126,9 +128,9 @@ public class SimpleAttributeTest {
simple.setId(TEST_ATTRIBUTE_NAME);
// Set the dependency on the data connector
- final Set<ResolverPluginDependency> dependencySet = new LazySet<>();
+ final Set<ResolverAttributeDefinitionDependency> dependencySet = new LazySet<>();
dependencySet.add(TestSources.makeResolverPluginDependency(TestSources.DEPENDS_ON_ATTRIBUTE_NAME_ATTR));
- simple.setDependencies(dependencySet);
+ simple.setAttributeDependencies(dependencySet);
simple.initialize();
// And resolve
@@ -170,11 +172,11 @@ public class SimpleAttributeTest {
final AttributeResolutionContext resolutionContext =
ResolverTestSupport.buildResolutionContext(ResolverTestSupport.buildDataConnector("connector1", attr));
- final ResolverPluginDependency depend = TestSources.makeResolverPluginDependency("connector1", TestSources.DEPENDS_ON_ATTRIBUTE_NAME_ATTR);
+ final ResolverDataConnectorDependency depend = TestSources.makeResolverPluginDependency("connector1", TestSources.DEPENDS_ON_ATTRIBUTE_NAME_ATTR);
final SimpleAttributeDefinition simple = new SimpleAttributeDefinition();
simple.setId(TEST_ATTRIBUTE_NAME);
- simple.setDependencies(Collections.singleton(depend));
+ simple.setDataConnectorDependencies(Collections.singleton(depend));
simple.initialize();
final IdPAttribute result = simple.resolve(resolutionContext);
@@ -198,11 +200,11 @@ public class SimpleAttributeTest {
final SimpleAttributeDefinition simple = new SimpleAttributeDefinition();
simple.setId(TEST_ATTRIBUTE_NAME);
- final Set<ResolverPluginDependency> dependencySet = new LazySet<>();
- dependencySet.add(TestSources.makeResolverPluginDependency(TestSources.DEPENDS_ON_ATTRIBUTE_NAME_ATTR));
- dependencySet.add(TestSources.makeResolverPluginDependency(TestSources.STATIC_CONNECTOR_NAME,
- TestSources.DEPENDS_ON_ATTRIBUTE_NAME_CONNECTOR));
- simple.setDependencies(dependencySet);
+ simple.setAttributeDependencies(Collections.singleton(
+ TestSources.makeResolverPluginDependency(TestSources.DEPENDS_ON_ATTRIBUTE_NAME_ATTR)));
+ simple.setDataConnectorDependencies(Collections.singleton(
+ TestSources.makeResolverPluginDependency(TestSources.STATIC_CONNECTOR_NAME,
+ TestSources.DEPENDS_ON_ATTRIBUTE_NAME_CONNECTOR)));
simple.initialize();
// And resolve
diff --git a/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/ad/impl/TemplateAttributeTest.java b/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/ad/impl/TemplateAttributeTest.java
index 9b4500e..e38de45 100644
--- a/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/ad/impl/TemplateAttributeTest.java
+++ b/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/ad/impl/TemplateAttributeTest.java
@@ -34,6 +34,7 @@ import net.shibboleth.idp.attribute.StringAttributeValue;
import net.shibboleth.idp.attribute.resolver.AttributeDefinition;
import net.shibboleth.idp.attribute.resolver.DataConnector;
import net.shibboleth.idp.attribute.resolver.ResolutionException;
+import net.shibboleth.idp.attribute.resolver.ResolverAttributeDefinitionDependency;
import net.shibboleth.idp.attribute.resolver.ResolverPluginDependency;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolverWorkContext;
@@ -109,7 +110,7 @@ public class TemplateAttributeTest {
TemplateAttributeDefinition attr = new TemplateAttributeDefinition();
attr.setId(name);
Assert.assertNull(attr.getTemplate());
- attr.setDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("foo", "bar")));
+ attr.setDataConnectorDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("foo", "bar")));
try {
attr.initialize();
Assert.fail("No template");
@@ -121,7 +122,7 @@ public class TemplateAttributeTest {
Assert.assertNull(attr.getTemplateText());
attr.setTemplateText(TEST_ATTRIBUTES_TEMPLATE_ATTR);
Assert.assertNull(attr.getVelocityEngine());
- attr.setDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("foo", "bar")));
+ attr.setDataConnectorDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("foo", "bar")));
try {
attr.initialize();
Assert.fail("engine");
@@ -141,7 +142,7 @@ public class TemplateAttributeTest {
}
Assert.assertNotNull(attr.getTemplateText());
- attr.setDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("foo", "bar")));
+ attr.setDataConnectorDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("foo", "bar")));
attr.initialize();
Assert.assertNotNull(attr.getTemplate());
@@ -156,7 +157,7 @@ public class TemplateAttributeTest {
attr.setId(name);
attr.setVelocityEngine(getEngine());
attr.setTemplateText(TEST_ATTRIBUTES_TEMPLATE_ATTR);
- attr.setDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("foo", "bar")));
+ attr.setDataConnectorDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("foo", "bar")));
attr.setSourceAttributes(Collections.singletonList(TestSources.DEPENDS_ON_ATTRIBUTE_NAME_ATTR));
attr.initialize();
@@ -170,7 +171,7 @@ public class TemplateAttributeTest {
attr = new TemplateAttributeDefinition();
attr.setId(name);
attr.setVelocityEngine(getEngine());
- attr.setDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("foo", TestSources.DEPENDS_ON_ATTRIBUTE_NAME_ATTR)));
+ attr.setDataConnectorDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("foo", TestSources.DEPENDS_ON_ATTRIBUTE_NAME_ATTR)));
try {
attr.initialize();
Assert.fail("No Text or attributes");
@@ -200,9 +201,9 @@ public class TemplateAttributeTest {
templateDef.setVelocityEngine(getEngine());
templateDef.setTemplateText(TEST_SIMPLE_TEMPLATE);
- final Set<ResolverPluginDependency> ds = new LazySet<>();
+ final Set<ResolverAttributeDefinitionDependency> ds = new LazySet<>();
ds.add(TestSources.makeResolverPluginDependency(TestSources.DEPENDS_ON_ATTRIBUTE_NAME_ATTR));
- templateDef.setDependencies(ds);
+ templateDef.setAttributeDependencies(ds);
templateDef.initialize();
final Set<AttributeDefinition> attrDefinitions = new LazySet<>();
@@ -262,15 +263,16 @@ public class TemplateAttributeTest {
templateDef.setVelocityEngine(getEngine());
templateDef.setTemplateText(TEST_ATTRIBUTES_TEMPLATE_CONNECTOR);
- final Set<ResolverPluginDependency> ds = new LazySet<>();
+ final Set<ResolverAttributeDefinitionDependency> ds = new LazySet<>();
ds.add(TestSources.makeResolverPluginDependency(TestSources.DEPENDS_ON_ATTRIBUTE_NAME_ATTR));
if (setSources) {
ds.add(TestSources.makeResolverPluginDependency(TestSources.DEPENDS_ON_ATTRIBUTE_NAME_ATTR+"2"));
}
- ds.add(TestSources.makeResolverPluginDependency(TestSources.STATIC_CONNECTOR_NAME,
- TestSources.DEPENDS_ON_SECOND_ATTRIBUTE_NAME));
- templateDef.setDependencies(ds);
+ templateDef.setAttributeDependencies(ds);
+ templateDef.setDataConnectorDependencies(Collections.singleton(
+ TestSources.makeResolverPluginDependency(TestSources.STATIC_CONNECTOR_NAME,
+ TestSources.DEPENDS_ON_SECOND_ATTRIBUTE_NAME)));
if (setSources) {
templateDef.setSourceAttributes(Arrays.asList(TestSources.DEPENDS_ON_ATTRIBUTE_NAME_ATTR,
TestSources.DEPENDS_ON_SECOND_ATTRIBUTE_NAME));
@@ -309,9 +311,9 @@ public class TemplateAttributeTest {
templateDef.setVelocityEngine(getEngine());
templateDef.setTemplateText("Att ${at1}");
- final Set<ResolverPluginDependency> ds = new LazySet<>();
+ final Set<ResolverAttributeDefinitionDependency> ds = new LazySet<>();
ds.add(TestSources.makeResolverPluginDependency(TestSources.DEPENDS_ON_ATTRIBUTE_NAME_ATTR));
- templateDef.setDependencies(ds);
+ templateDef.setAttributeDependencies(ds);
templateDef.initialize();
final List<IdPAttributeValue<?>> values = new ArrayList<>();
@@ -350,10 +352,10 @@ public class TemplateAttributeTest {
templateDef.setTemplateText(TEST_ATTRIBUTES_TEMPLATE_CONNECTOR);
final String otherAttrName = TestSources.DEPENDS_ON_ATTRIBUTE_NAME_ATTR + "2";
- final Set<ResolverPluginDependency> ds = new LazySet<>();
+ final Set<ResolverAttributeDefinitionDependency> ds = new LazySet<>();
ds.add(TestSources.makeResolverPluginDependency(TestSources.DEPENDS_ON_ATTRIBUTE_NAME_ATTR));
ds.add(TestSources.makeResolverPluginDependency(otherAttrName));
- templateDef.setDependencies(ds);
+ templateDef.setAttributeDependencies(ds);
templateDef.initialize();
final Set<AttributeDefinition> attrDefinitions = new LazySet<>();
@@ -382,10 +384,10 @@ public class TemplateAttributeTest {
templateDef.setTemplateText(TEST_ATTRIBUTES_TEMPLATE_CONNECTOR);
final String otherAttrName = TestSources.DEPENDS_ON_ATTRIBUTE_NAME_ATTR + "2";
- final Set<ResolverPluginDependency> ds = new LazySet<>();
+ final Set<ResolverAttributeDefinitionDependency> ds = new LazySet<>();
ds.add(TestSources.makeResolverPluginDependency(TestSources.DEPENDS_ON_ATTRIBUTE_NAME_ATTR));
ds.add(TestSources.makeResolverPluginDependency(otherAttrName));
- templateDef.setDependencies(ds);
+ templateDef.setAttributeDependencies(ds);
templateDef.initialize();
final Set<AttributeDefinition> attrDefinitions = new LazySet<>();
@@ -408,9 +410,9 @@ public class TemplateAttributeTest {
templateDef.setVelocityEngine(getEngine());
templateDef.setTemplateText(TEST_ATTRIBUTES_TEMPLATE_ATTR);
- final Set<ResolverPluginDependency> ds = new LazySet<>();
+ final Set<ResolverAttributeDefinitionDependency> ds = new LazySet<>();
ds.add(TestSources.makeResolverPluginDependency(TestSources.DEPENDS_ON_ATTRIBUTE_NAME_ATTR));
- templateDef.setDependencies(ds);
+ templateDef.setAttributeDependencies(ds);
templateDef.initialize();
diff --git a/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/ad/mapped/impl/MappedAttributeTest.java b/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/ad/mapped/impl/MappedAttributeTest.java
index 696d004..be7d8b3 100644
--- a/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/ad/mapped/impl/MappedAttributeTest.java
+++ b/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/ad/mapped/impl/MappedAttributeTest.java
@@ -20,11 +20,14 @@ package net.shibboleth.idp.attribute.resolver.ad.mapped.impl;
import java.util.Collections;
import java.util.Set;
+import org.testng.Assert;
+import org.testng.annotations.Test;
+
import net.shibboleth.idp.attribute.ByteAttributeValue;
import net.shibboleth.idp.attribute.IdPAttribute;
import net.shibboleth.idp.attribute.StringAttributeValue;
import net.shibboleth.idp.attribute.resolver.ResolutionException;
-import net.shibboleth.idp.attribute.resolver.ResolverPluginDependency;
+import net.shibboleth.idp.attribute.resolver.ResolverDataConnectorDependency;
import net.shibboleth.idp.attribute.resolver.ResolverTestSupport;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
import net.shibboleth.idp.saml.impl.TestSources;
@@ -32,9 +35,6 @@ import net.shibboleth.utilities.java.support.collection.LazySet;
import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
import net.shibboleth.utilities.java.support.component.DestroyedComponentException;
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
/** Test the mapped attribute type. */
public class MappedAttributeTest {
@@ -54,10 +54,10 @@ public class MappedAttributeTest {
// expected this
}
- final Set<ResolverPluginDependency> dependencySet = new LazySet<>();
+ final Set<ResolverDataConnectorDependency> dependencySet = new LazySet<>();
dependencySet.add(TestSources.makeResolverPluginDependency(TestSources.STATIC_CONNECTOR_NAME,
TestSources.DEPENDS_ON_ATTRIBUTE_NAME_CONNECTOR));
- definition.setDependencies(dependencySet);
+ definition.setDataConnectorDependencies(dependencySet);
try {
definition.initialize();
@@ -96,7 +96,7 @@ public class MappedAttributeTest {
final MappedAttributeDefinition definition = new MappedAttributeDefinition();
definition.setId(TEST_ATTRIBUTE_NAME);
- definition.setDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("connector1",
+ definition.setDataConnectorDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("connector1",
"NoSuchAttribute")));
definition.setValueMaps(Collections.singleton(substringValueMapping("foo", false, "foo")));
definition.initialize();
@@ -115,7 +115,7 @@ public class MappedAttributeTest {
final MappedAttributeDefinition definition = new MappedAttributeDefinition();
definition.setId(TEST_ATTRIBUTE_NAME);
- definition.setDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("connector1",
+ definition.setDataConnectorDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("connector1",
"NoSuchAttribute")));
definition.setValueMaps(Collections.singleton(substringValueMapping("foo", false, "foo")));
definition.setDefaultValue("");
@@ -140,7 +140,7 @@ public class MappedAttributeTest {
final MappedAttributeDefinition definition = new MappedAttributeDefinition();
definition.setId(TEST_ATTRIBUTE_NAME);
- definition.setDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("connector1",
+ definition.setDataConnectorDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("connector1",
ResolverTestSupport.EPA_ATTRIB_ID)));
definition.setValueMaps(Collections.singleton(substringValueMapping("student", false, "student")));
definition.initialize();
@@ -163,7 +163,7 @@ public class MappedAttributeTest {
final MappedAttributeDefinition definition = new MappedAttributeDefinition();
definition.setId(TEST_ATTRIBUTE_NAME);
- definition.setDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("connector1",
+ definition.setDataConnectorDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("connector1",
ResolverTestSupport.EPA_ATTRIB_ID)));
Assert.assertTrue(definition.getValueMaps().isEmpty());
definition.setValueMaps(Collections.singleton(substringValueMapping("student", false, "student")));
@@ -185,7 +185,7 @@ public class MappedAttributeTest {
final MappedAttributeDefinition definition = new MappedAttributeDefinition();
definition.setId(TEST_ATTRIBUTE_NAME);
- definition.setDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("connector1",
+ definition.setDataConnectorDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("connector1",
ResolverTestSupport.EPA_ATTRIB_ID)));
Assert.assertTrue(definition.getValueMaps().isEmpty());
definition.setValueMaps(Collections.singleton(substringValueMapping("student", false, "student")));
@@ -209,7 +209,7 @@ public class MappedAttributeTest {
final MappedAttributeDefinition definition = new MappedAttributeDefinition();
definition.setId(TEST_ATTRIBUTE_NAME);
- definition.setDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("connector1",
+ definition.setDataConnectorDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("connector1",
ResolverTestSupport.EPA_ATTRIB_ID)));
Assert.assertTrue(definition.getValueMaps().isEmpty());
definition.setValueMaps(Collections.singleton(substringValueMapping("elephant", false, "banana")));
@@ -236,7 +236,7 @@ public class MappedAttributeTest {
final MappedAttributeDefinition definition = new MappedAttributeDefinition();
definition.setId(TEST_ATTRIBUTE_NAME);
- definition.setDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("connector1",
+ definition.setDataConnectorDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("connector1",
ResolverTestSupport.EPA_ATTRIB_ID)));
Assert.assertTrue(definition.getValueMaps().isEmpty());
definition.setValueMaps(Collections.singleton(substringValueMapping("elephant", false, "banana")));
@@ -273,7 +273,7 @@ public class MappedAttributeTest {
final MappedAttributeDefinition definition = new MappedAttributeDefinition();
definition.setId(TEST_ATTRIBUTE_NAME);
- definition.setDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("connector1",
+ definition.setDataConnectorDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("connector1",
ResolverTestSupport.EPA_ATTRIB_ID)));
definition.setValueMaps(Collections.singleton(valueMap));
@@ -285,10 +285,7 @@ public class MappedAttributeTest {
ResolverTestSupport.EPE1_VALUES), ResolverTestSupport.buildAttribute(
ResolverTestSupport.EPA_ATTRIB_ID, "Val", "val")));
- final IdPAttribute result = definition.resolve(resolutionContext);
-
-
-
+ definition.resolve(resolutionContext);
}
}
\ No newline at end of file
diff --git a/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/dc/impl/ComputedIDDataConnectorTest.java b/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/dc/impl/ComputedIDDataConnectorTest.java
index 4a3ba82..f4168a6 100644
--- a/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/dc/impl/ComputedIDDataConnectorTest.java
+++ b/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/dc/impl/ComputedIDDataConnectorTest.java
@@ -33,6 +33,7 @@ import net.shibboleth.idp.attribute.resolver.AttributeDefinition;
import net.shibboleth.idp.attribute.resolver.AttributeResolver;
import net.shibboleth.idp.attribute.resolver.DataConnector;
import net.shibboleth.idp.attribute.resolver.ResolutionException;
+import net.shibboleth.idp.attribute.resolver.ResolverDataConnectorDependency;
import net.shibboleth.idp.attribute.resolver.ResolverPluginDependency;
import net.shibboleth.idp.attribute.resolver.ResolverTestSupport;
import net.shibboleth.idp.attribute.resolver.ad.impl.SimpleAttributeDefinition;
@@ -84,7 +85,7 @@ public class ComputedIDDataConnectorTest extends OpenSAMLInitBaseTestCase {
final ComputedIDDataConnector connector = new ComputedIDDataConnector();
connector.setId(TEST_CONNECTOR_NAME);
- connector.setDependencies(Collections.singleton(TestSources.makeResolverPluginDependency(
+ connector.setAttributeDependencies(Collections.singleton(TestSources.makeResolverPluginDependency(
TestSources.DEPENDS_ON_ATTRIBUTE_NAME_ATTR)));
testInit(connector, "No salt");
connector.setSalt(salt);
@@ -93,8 +94,8 @@ public class ComputedIDDataConnectorTest extends OpenSAMLInitBaseTestCase {
final SimpleAttributeDefinition simple = new SimpleAttributeDefinition();
simple.setId(OUTPUT_ATTRIBUTE_NAME);
- simple.setDependencies(Collections.singleton(TestSources.makeResolverPluginDependency(TEST_CONNECTOR_NAME,
- TEST_ATTRIBUTE_NAME)));
+ simple.setDataConnectorDependencies(Collections.singleton(TestSources.makeResolverPluginDependency(TEST_CONNECTOR_NAME,
+ TEST_ATTRIBUTE_NAME)));
final Set<AttributeDefinition> set = new HashSet<>(2);
set.add(simple);
@@ -122,7 +123,7 @@ public class ComputedIDDataConnectorTest extends OpenSAMLInitBaseTestCase {
@Test public void getters() throws ComponentInitializationException {
final ComputedIDDataConnector connector = new ComputedIDDataConnector();
connector.setId(TEST_CONNECTOR_NAME);
- connector.setDependencies(Collections.singleton(TestSources.makeResolverPluginDependency(
+ connector.setAttributeDependencies(Collections.singleton(TestSources.makeResolverPluginDependency(
TestSources.DEPENDS_ON_ATTRIBUTE_NAME_ATTR)));
connector.setSalt(smallSalt);
connector.setSourceAttributeId(TestSources.DEPENDS_ON_ATTRIBUTE_NAME_ATTR);
@@ -151,7 +152,7 @@ public class ComputedIDDataConnectorTest extends OpenSAMLInitBaseTestCase {
protected static AttributeResolver constructResolver(final ComputedIDDataConnector connector, final int values, final boolean noSalt)
throws ComponentInitializationException {
connector.setId(TEST_CONNECTOR_NAME);
- connector.setDependencies(Collections.singleton(TestSources.makeResolverPluginDependency(
+ connector.setAttributeDependencies(Collections.singleton(TestSources.makeResolverPluginDependency(
TestSources.DEPENDS_ON_ATTRIBUTE_NAME_ATTR)));
connector.setSourceAttributeId(TestSources.DEPENDS_ON_ATTRIBUTE_NAME_ATTR);
if (!noSalt) {
@@ -160,7 +161,7 @@ public class ComputedIDDataConnectorTest extends OpenSAMLInitBaseTestCase {
final SimpleAttributeDefinition simple = new SimpleAttributeDefinition();
simple.setId(OUTPUT_ATTRIBUTE_NAME);
- simple.setDependencies(Collections.singleton(TestSources.makeResolverPluginDependency(TEST_CONNECTOR_NAME,
+ simple.setDataConnectorDependencies(Collections.singleton(TestSources.makeResolverPluginDependency(TEST_CONNECTOR_NAME,
TEST_CONNECTOR_NAME)));
simple.initialize();
@@ -180,13 +181,13 @@ public class ComputedIDDataConnectorTest extends OpenSAMLInitBaseTestCase {
protected static AttributeResolver constructResolverWithNonString(final ComputedIDDataConnector connector,
final String dependantOn) throws ComponentInitializationException {
connector.setId(TEST_CONNECTOR_NAME);
- connector.setDependencies(Collections.singleton(TestSources.makeResolverPluginDependency(dependantOn)));
+ connector.setAttributeDependencies(Collections.singleton(TestSources.makeResolverPluginDependency(dependantOn)));
connector.setSalt(salt);
connector.setSourceAttributeId(dependantOn);
final SimpleAttributeDefinition simple = new SimpleAttributeDefinition();
simple.setId(OUTPUT_ATTRIBUTE_NAME);
- simple.setDependencies(Collections.singleton(TestSources.makeResolverPluginDependency(TEST_CONNECTOR_NAME,
+ simple.setDataConnectorDependencies(Collections.singleton(TestSources.makeResolverPluginDependency(TEST_CONNECTOR_NAME,
TEST_CONNECTOR_NAME)));
simple.initialize();
final Set<AttributeDefinition> set = new HashSet<>(3);
@@ -297,7 +298,7 @@ public class ComputedIDDataConnectorTest extends OpenSAMLInitBaseTestCase {
final ComputedIDDataConnector connector = new ComputedIDDataConnector();
connector.setId(TEST_CONNECTOR_NAME);
- connector.setDependencies(Collections.singleton(TestSources.makeResolverPluginDependency(
+ connector.setDataConnectorDependencies(Collections.singleton(TestSources.makeResolverPluginDependency(
TestSources.STATIC_CONNECTOR_NAME, TestSources.DEPENDS_ON_ATTRIBUTE_NAME_CONNECTOR)));
connector.setSalt(salt);
connector.setGeneratedAttributeId("wibble");
@@ -309,7 +310,7 @@ public class ComputedIDDataConnectorTest extends OpenSAMLInitBaseTestCase {
final SimpleAttributeDefinition simple = new SimpleAttributeDefinition();
simple.setId(OUTPUT_ATTRIBUTE_NAME);
- simple.setDependencies(Collections.singleton(TestSources.makeResolverPluginDependency(TEST_CONNECTOR_NAME,
+ simple.setDataConnectorDependencies(Collections.singleton(TestSources.makeResolverPluginDependency(TEST_CONNECTOR_NAME,
"wibble")));
simple.initialize();
@@ -344,12 +345,12 @@ public class ComputedIDDataConnectorTest extends OpenSAMLInitBaseTestCase {
resolutionContext.setAttributeRecipientID(TestSources.SP_ENTITY_ID);
resolutionContext.setPrincipal(TestSources.PRINCIPAL_ID);
- final ResolverPluginDependency depend = TestSources.makeResolverPluginDependency("connector1", ResolverTestSupport.EPA_ATTRIB_ID);
+ final ResolverDataConnectorDependency depend = TestSources.makeResolverPluginDependency("connector1", ResolverTestSupport.EPA_ATTRIB_ID);
final ComputedIDDataConnector connector = new ComputedIDDataConnector();
connector.setId(TEST_CONNECTOR_NAME);
- connector.setDependencies(Collections.singleton(depend));
+ connector.setDataConnectorDependencies(Collections.singleton(depend));
connector.setSourceAttributeId(ResolverTestSupport.EPA_ATTRIB_ID);
connector.setSalt(salt);
connector.setGeneratedAttributeId("wibble");
@@ -374,12 +375,12 @@ public class ComputedIDDataConnectorTest extends OpenSAMLInitBaseTestCase {
resolutionContext.setAttributeRecipientID(TestSources.SP_ENTITY_ID);
resolutionContext.setPrincipal(TestSources.PRINCIPAL_ID);
- final ResolverPluginDependency depend = TestSources.makeResolverPluginDependency("connector1", ResolverTestSupport.EPA_ATTRIB_ID);
+ final ResolverDataConnectorDependency depend = TestSources.makeResolverPluginDependency("connector1", ResolverTestSupport.EPA_ATTRIB_ID);
final ComputedIDDataConnector connector = new ComputedIDDataConnector();
connector.setId(TEST_CONNECTOR_NAME);
- connector.setDependencies(Collections.singleton(depend));
+ connector.setDataConnectorDependencies(Collections.singleton(depend));
connector.setSourceAttributeId(ResolverTestSupport.EPA_ATTRIB_ID);
connector.setSalt(salt);
connector.setGeneratedAttributeId("wibble");
diff --git a/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/impl/AttributeResolverImplTest.java b/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/impl/AttributeResolverImplTest.java
index 513d0ef..2a4e47a 100644
--- a/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/impl/AttributeResolverImplTest.java
+++ b/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/impl/AttributeResolverImplTest.java
@@ -255,15 +255,15 @@ public class AttributeResolverImplTest {
final ResolverDataConnectorDependency dep1 = new ResolverDataConnectorDependency("dc1");
dep1.setAllAttributes(true);
final MockAttributeDefinition ad1 = new MockAttributeDefinition("ad1", attr);
- ad1.setDependencies(Collections.singleton((ResolverPluginDependency) dep1));
+ ad1.setDataConnectorDependencies(Collections.singleton(dep1));
ad1.initialize();
final MockAttributeDefinition ad2 = new MockAttributeDefinition("ad2", attr);
- final ResolverPluginDependency dep2 = new ResolverAttributeDefinitionDependency("ad1");
- final ResolverPluginDependency dep3 = new ResolverAttributeDefinitionDependency("ad2");
+ final ResolverAttributeDefinitionDependency dep2 = new ResolverAttributeDefinitionDependency("ad1");
+ final ResolverAttributeDefinitionDependency dep3 = new ResolverAttributeDefinitionDependency("ad2");
final MockAttributeDefinition ad0 = new MockAttributeDefinition("ad0", attr);
- ad0.setDependencies(new HashSet<>(Arrays.asList(dep2, dep3)));
+ ad0.setAttributeDependencies(new HashSet<>(Arrays.asList(dep2, dep3)));
ad0.initialize();
final LazySet<DataConnector> connectors = new LazySet<>();
@@ -298,9 +298,9 @@ public class AttributeResolverImplTest {
dc1.initialize();
//
- final ResolverPluginDependency dep1 = TestSources.makeResolverPluginDependency("dc1", null);
+ final ResolverDataConnectorDependency dep1 = TestSources.makeResolverPluginDependency("dc1", null);
final MockAttributeDefinition ad1 = new MockAttributeDefinition("ad1", new IdPAttribute("test"));
- ad1.setDependencies(Collections.singleton(dep1));
+ ad1.setDataConnectorDependencies(Collections.singleton(dep1));
ad1.initialize();
final LazySet<DataConnector> connectors = new LazySet<>();
@@ -330,8 +330,8 @@ public class AttributeResolverImplTest {
final MockDataConnector dc1 = new MockDataConnector("dc1", Collections.singletonMap("Atr", i1Val));
final SimpleAttributeDefinition ad = new SimpleAttributeDefinition();
ad.setId("output");
- final ResolverPluginDependency dep1 = TestSources.makeResolverPluginDependency("dc1","Atr");
- ad.setDependencies(Collections.singleton(dep1));
+ final ResolverDataConnectorDependency dep1 = TestSources.makeResolverPluginDependency("dc1","Atr");
+ ad.setDataConnectorDependencies(Collections.singleton(dep1));
ad.initialize();
final IdPAttribute i2Val = new IdPAttribute("Atr");
@@ -387,9 +387,9 @@ public class AttributeResolverImplTest {
dc1.setFailure(true);
dc1.initialize();
- final ResolverPluginDependency dep1 = TestSources.makeResolverPluginDependency("dc1", null);
+ final ResolverDataConnectorDependency dep1 = TestSources.makeResolverPluginDependency("dc1", null);
final MockAttributeDefinition ad1 = new MockAttributeDefinition("ad1", new IdPAttribute("test"));
- ad1.setDependencies(Collections.singleton(dep1));
+ ad1.setDataConnectorDependencies(Collections.singleton(dep1));
final LazySet<DataConnector> connectors = new LazySet<>();
connectors.add(dc1);
@@ -416,17 +416,17 @@ public class AttributeResolverImplTest {
final MockDataConnector dc1 = new MockDataConnector("dc1", (Map) null);
dc1.initialize();
- final ResolverPluginDependency dep1 = TestSources.makeResolverPluginDependency("dc1", null);
+ final ResolverDataConnectorDependency dep1 = TestSources.makeResolverPluginDependency("dc1", null);
IdPAttribute attr = new IdPAttribute("test1");
attr.setValues(Collections.singletonList(new StringAttributeValue("value1")));
final MockAttributeDefinition ad1 = new MockAttributeDefinition("ad1", attr);
- ad1.setDependencies(Collections.singleton(dep1));
+ ad1.setDataConnectorDependencies(Collections.singleton(dep1));
ad1.initialize();
attr = new IdPAttribute("test2");
attr.setValues(Collections.singletonList(new StringAttributeValue("value2")));
final MockAttributeDefinition ad2 = new MockAttributeDefinition("ad2", attr);
- ad2.setDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("dc1", null)));
+ ad2.setDataConnectorDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("dc1", null)));
ad2.initialize();
LazySet<DataConnector> connectors = new LazySet<>();
@@ -462,13 +462,13 @@ public class AttributeResolverImplTest {
connectors.add(dcfail2);
final MockAttributeDefinition ad10 = new MockAttributeDefinition("ad10", new IdPAttribute("ten"));
- ad10.setDependencies(Collections.singleton((ResolverPluginDependency) depFail1));
+ ad10.setDataConnectorDependencies(Collections.singleton(depFail1));
ad10.setPropagateResolutionExceptions(false);
ad10.initialize();
final MockAttributeDefinition ad11 = new MockAttributeDefinition("ad11", new IdPAttribute("eleven"));
- ad11.setDependencies(Collections.singleton((ResolverPluginDependency) depFail2));
+ ad11.setDataConnectorDependencies(Collections.singleton(depFail2));
ad11.setPropagateResolutionExceptions(false);
ad11.initialize();
@@ -490,11 +490,11 @@ public class AttributeResolverImplTest {
final MockDataConnector dc1 = new MockDataConnector("dc1", values);
dc1.initialize();
- final ResolverPluginDependency dep1 = TestSources.makeResolverPluginDependency("dc1", "SubAttribute");
+ final ResolverDataConnectorDependency dep1 = TestSources.makeResolverPluginDependency("dc1", "SubAttribute");
attr = new IdPAttribute("test1");
attr.setValues(Collections.singletonList(new StringAttributeValue("value1")));
final MockAttributeDefinition ad1 = new MockAttributeDefinition("ad1", attr);
- ad1.setDependencies(Collections.singleton(dep1));
+ ad1.setDataConnectorDependencies(Collections.singleton(dep1));
ad1.initialize();
final LazySet<DataConnector> connectors = new LazySet<>();
@@ -525,7 +525,7 @@ public class AttributeResolverImplTest {
attr = new IdPAttribute("test1");
attr.setValues(Collections.singletonList(new StringAttributeValue("value1")));
final MockAttributeDefinition ad1 = new MockAttributeDefinition("ad1", attr);
- ad1.setDependencies(Collections.singleton((ResolverPluginDependency)dep1));
+ ad1.setDataConnectorDependencies(Collections.singleton(dep1));
ad1.initialize();
final LazySet<DataConnector> connectors = new LazySet<>();
@@ -661,14 +661,14 @@ public class AttributeResolverImplTest {
/** Test that validation fails when a plugin depends on a non-existent plugin. */
@Test public void badPluginIdInitialize() throws Exception {
- final ResolverPluginDependency dep1 = new ResolverDataConnectorDependency("dc1");
+ final ResolverDataConnectorDependency dep1 = new ResolverDataConnectorDependency("dc1");
final MockAttributeDefinition ad1 = new MockAttributeDefinition("ad1", new IdPAttribute("test"));
- ad1.setDependencies(Collections.singleton(dep1));
+ ad1.setDataConnectorDependencies(Collections.singleton(dep1));
ad1.initialize();
- final ResolverPluginDependency dep2 = new ResolverAttributeDefinitionDependency("ad1");
+ final ResolverAttributeDefinitionDependency dep2 = new ResolverAttributeDefinitionDependency("ad1");
MockAttributeDefinition ad0 = new MockAttributeDefinition("ad0", new IdPAttribute("test"));
- ad0.setDependencies(Collections.singleton(dep2));
+ ad0.setAttributeDependencies(Collections.singleton(dep2));
ad0.initialize();
LazySet<AttributeDefinition> definitions = new LazySet<>();
@@ -683,9 +683,9 @@ public class AttributeResolverImplTest {
// OK
}
- final ResolverPluginDependency dep3 = new ResolverAttributeDefinitionDependency("ad0");
+ final ResolverAttributeDefinitionDependency dep3 = new ResolverAttributeDefinitionDependency("ad0");
ad0 = new MockAttributeDefinition("ad0", new IdPAttribute("test"));
- ad0.setDependencies(Collections.singleton(dep3));
+ ad0.setAttributeDependencies(Collections.singleton(dep3));
definitions = new LazySet<>();
definitions.add(ad0);
ad0.initialize();
@@ -702,14 +702,14 @@ public class AttributeResolverImplTest {
/** Test that validation fails when a plugin depends on a non-existent plugin. */
@Test public void badPluginIdInitializeOld() throws Exception {
- final ResolverPluginDependency dep1 = TestSources.makeResolverPluginDependency("dc1", "test");
+ final ResolverDataConnectorDependency dep1 = TestSources.makeResolverPluginDependency("dc1", "test");
final MockAttributeDefinition ad1 = new MockAttributeDefinition("ad1", new IdPAttribute("test"));
- ad1.setDependencies(Collections.singleton(dep1));
+ ad1.setDataConnectorDependencies(Collections.singleton(dep1));
ad1.initialize();
- final ResolverPluginDependency dep2 = TestSources.makeResolverPluginDependency("ad1");
+ final ResolverAttributeDefinitionDependency dep2 = TestSources.makeResolverPluginDependency("ad1");
MockAttributeDefinition ad0 = new MockAttributeDefinition("ad0", new IdPAttribute("test"));
- ad0.setDependencies(Collections.singleton(dep2));
+ ad0.setAttributeDependencies(Collections.singleton(dep2));
ad0.initialize();
LazySet<AttributeDefinition> definitions = new LazySet<>();
@@ -724,9 +724,9 @@ public class AttributeResolverImplTest {
// OK
}
- final ResolverPluginDependency dep3 = TestSources.makeResolverPluginDependency("ad0");
+ final ResolverAttributeDefinitionDependency dep3 = TestSources.makeResolverPluginDependency("ad0");
ad0 = new MockAttributeDefinition("ad0", new IdPAttribute("test"));
- ad0.setDependencies(Collections.singleton(dep3));
+ ad0.setAttributeDependencies(Collections.singleton(dep3));
definitions = new LazySet<>();
definitions.add(ad0);
ad0.initialize();
@@ -744,7 +744,7 @@ public class AttributeResolverImplTest {
/** Test that validation fails when there are circular dependencies between plugins. */
@Test public void circularDependencyInitializeOld() throws Exception {
MockAttributeDefinition ad1 = new MockAttributeDefinition("ad1", new IdPAttribute("test"));
- ad1.setDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("ad1")));
+ ad1.setAttributeDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("ad1")));
LazySet<AttributeDefinition> definitions = new LazySet<>();
definitions.add(ad1);
@@ -758,18 +758,18 @@ public class AttributeResolverImplTest {
// OK
}
- final MockDataConnector dc1 = new MockDataConnector("dc1", null, Collections.singleton(TestSources.makeResolverPluginDependency("ad0")));
+ final MockDataConnector dc1 = new MockDataConnector("dc1", null, Collections.singleton(TestSources.makeResolverPluginDependency("ad0")), null);
ad1 = new MockAttributeDefinition("ad1", new IdPAttribute("test"));
- ad1.setDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("dc1")));
+ ad1.setAttributeDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("dc1")));
ad1.initialize();
final MockAttributeDefinition ad2 = new MockAttributeDefinition("ad2", new IdPAttribute("test"));
- ad2.setDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("dc1")));
+ ad2.setAttributeDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("dc1")));
ad2.initialize();
final MockAttributeDefinition ad0 = new MockAttributeDefinition("ad0", new IdPAttribute("test"));
- ad0.setDependencies(new HashSet<>(Arrays.asList(TestSources.makeResolverPluginDependency("ad1"), TestSources.makeResolverPluginDependency("ad2"))));
+ ad0.setAttributeDependencies(new HashSet<>(Arrays.asList(TestSources.makeResolverPluginDependency("ad1"), TestSources.makeResolverPluginDependency("ad2"))));
ad0.initialize();
final LazySet<DataConnector> connectors = new LazySet<>();
@@ -793,7 +793,7 @@ public class AttributeResolverImplTest {
/** Test that validation fails when there are circular dependencies between plugins. */
@Test public void circularDependencyInitialize() throws Exception {
MockAttributeDefinition ad1 = new MockAttributeDefinition("ad1", new IdPAttribute("test"));
- ad1.setDependencies(Collections.singleton((ResolverPluginDependency)new ResolverAttributeDefinitionDependency("ad1")));
+ ad1.setAttributeDependencies(Collections.singleton(new ResolverAttributeDefinitionDependency("ad1")));
LazySet<AttributeDefinition> definitions = new LazySet<>();
definitions.add(ad1);
@@ -807,18 +807,19 @@ public class AttributeResolverImplTest {
// OK
}
- final MockDataConnector dc1 = new MockDataConnector("dc1", null, Collections.singleton((ResolverPluginDependency)new ResolverAttributeDefinitionDependency("ad0")));
+ final MockDataConnector dc1 = new MockDataConnector("dc1", null,
+ Collections.singleton(new ResolverAttributeDefinitionDependency("ad0")), null);
ad1 = new MockAttributeDefinition("ad1", new IdPAttribute("test"));
- ad1.setDependencies(Collections.singleton((ResolverPluginDependency)new ResolverDataConnectorDependency("dc1")));
+ ad1.setDataConnectorDependencies(Collections.singleton(new ResolverDataConnectorDependency("dc1")));
ad1.initialize();
final MockAttributeDefinition ad2 = new MockAttributeDefinition("ad2", new IdPAttribute("test"));
- ad2.setDependencies(Collections.singleton((ResolverPluginDependency)new ResolverDataConnectorDependency("dc1")));
+ ad2.setDataConnectorDependencies(Collections.singleton(new ResolverDataConnectorDependency("dc1")));
ad2.initialize();
final MockAttributeDefinition ad0 = new MockAttributeDefinition("ad0", new IdPAttribute("test"));
- ad0.setDependencies(new HashSet<>(Arrays.asList((ResolverPluginDependency)new ResolverAttributeDefinitionDependency("ad1"), new ResolverAttributeDefinitionDependency("ad2"))));
+ ad0.setAttributeDependencies(new HashSet<>(Arrays.asList(new ResolverAttributeDefinitionDependency("ad1"), new ResolverAttributeDefinitionDependency("ad2"))));
ad0.initialize();
final LazySet<DataConnector> connectors = new LazySet<>();
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ResolverPluginDependencyParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/BaseResolverPluginDependencyParser.java
similarity index 59%
rename from idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ResolverPluginDependencyParser.java
rename to idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/BaseResolverPluginDependencyParser.java
index 0ce7933..3dc5161 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ResolverPluginDependencyParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/BaseResolverPluginDependencyParser.java
@@ -18,16 +18,6 @@
package net.shibboleth.idp.attribute.resolver.spring;
import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-import javax.xml.namespace.QName;
-
-import net.shibboleth.idp.attribute.resolver.ResolverPluginDependency;
-import net.shibboleth.idp.attribute.resolver.spring.impl.AttributeResolverNamespaceHandler;
-import net.shibboleth.idp.attribute.resolver.spring.impl.InputAttributeDefinitionParser;
-import net.shibboleth.idp.attribute.resolver.spring.impl.InputDataConnectorParser;
-import net.shibboleth.utilities.java.support.primitive.DeprecationSupport;
-import net.shibboleth.utilities.java.support.primitive.StringSupport;
-import net.shibboleth.utilities.java.support.primitive.DeprecationSupport.ObjectType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -36,32 +26,19 @@ import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser;
import org.springframework.beans.factory.xml.ParserContext;
import org.w3c.dom.Element;
-/** Bean definition parser for a {@link ResolverPluginDependency}. */
-public class ResolverPluginDependencyParser extends AbstractSingleBeanDefinitionParser {
+import net.shibboleth.idp.attribute.resolver.ResolverPluginDependency;
+import net.shibboleth.utilities.java.support.primitive.StringSupport;
- /** Element name. */
- @Nonnull public static final QName ELEMENT_NAME =
- new QName(AttributeResolverNamespaceHandler.NAMESPACE, "Dependency");
+/** Bean definition parser for a {@link ResolverPluginDependency}. */
+public abstract class BaseResolverPluginDependencyParser extends AbstractSingleBeanDefinitionParser {
/** Class logger. */
- @Nonnull private final Logger log = LoggerFactory.getLogger(ResolverPluginDependencyParser.class);
-
- /** {@inheritDoc} */
- @Override protected Class<? extends ResolverPluginDependency> getBeanClass(@Nullable final Element element) {
- return ResolverPluginDependency.class;
- }
+ @Nonnull private final Logger log = LoggerFactory.getLogger(BaseResolverPluginDependencyParser.class);
/** {@inheritDoc} */
@Override protected void doParse(@Nonnull final Element config, @Nonnull final ParserContext parserContext,
@Nonnull final BeanDefinitionBuilder builder) {
- if (ELEMENT_NAME.getLocalPart().equals(config.getLocalName())) {
- DeprecationSupport.warnOnce(ObjectType.ELEMENT, ELEMENT_NAME.toString(),
- parserContext.getReaderContext().getResource().getDescription(),
- InputDataConnectorParser.ELEMENT_NAME.toString() + " or "
- + InputAttributeDefinitionParser.ELEMENT_NAME.toString());
- }
-
final String pluginId = StringSupport.trimOrNull(config.getAttributeNS(null, "ref"));
log.info("Parsing configuration for {} with pluginId: {}", config.getLocalName(), pluginId);
builder.addConstructorArgValue(pluginId);
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/BaseResolverPluginParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/BaseResolverPluginParser.java
index bafb36a..a651861 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/BaseResolverPluginParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/BaseResolverPluginParser.java
@@ -94,13 +94,12 @@ public abstract class BaseResolverPluginParser extends AbstractSingleBeanDefinit
StringSupport.trimOrNull(config.getAttributeNS(null, "propagateResolutionExceptions")));
}
- final List<Element> dependencyElements =
- ElementSupport.getChildElements(config, ResolverPluginDependencyParser.ELEMENT_NAME);
- dependencyElements.addAll(
- ElementSupport.getChildElements(config, InputAttributeDefinitionParser.ELEMENT_NAME));
- dependencyElements.addAll(
- ElementSupport.getChildElements(config, InputDataConnectorParser.ELEMENT_NAME));
- if (null != dependencyElements && !dependencyElements.isEmpty()) {
+ final List<Element> attributeDependencyElements =
+ ElementSupport.getChildElements(config, InputAttributeDefinitionParser.ELEMENT_NAME);
+ final List<Element> dataConnectorDependencyElements =
+ ElementSupport.getChildElements(config, InputDataConnectorParser.ELEMENT_NAME);
+ if ((null != attributeDependencyElements && !attributeDependencyElements.isEmpty()) ||
+ (null != dataConnectorDependencyElements && !dataConnectorDependencyElements.isEmpty())) {
if (failOnDependencies()) {
log.error("{} Dependencies are not allowed.", getLogPrefix());
throw new BeanCreationException(getLogPrefix() + " has meaningless Dependencies statements");
@@ -109,7 +108,10 @@ public abstract class BaseResolverPluginParser extends AbstractSingleBeanDefinit
log.warn("{} Dependencies are not allowed.", getLogPrefix());
}
}
- builder.addPropertyValue("dependencies", SpringSupport.parseCustomElements(dependencyElements, parserContext));
+ builder.addPropertyValue("attributeDependencies",
+ SpringSupport.parseCustomElements(attributeDependencyElements, parserContext));
+ builder.addPropertyValue("dataConnectorDependencies",
+ SpringSupport.parseCustomElements(dataConnectorDependencyElements, parserContext));
}
// Checkstyle: CyclomaticComplexity ON
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/impl/AbstractResolverPluginFactoryBean.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/impl/AbstractResolverPluginFactoryBean.java
index 39265dc..239aa80 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/impl/AbstractResolverPluginFactoryBean.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/impl/AbstractResolverPluginFactoryBean.java
@@ -26,6 +26,8 @@ import javax.annotation.Nullable;
import net.shibboleth.ext.spring.factory.AbstractComponentAwareFactoryBean;
import net.shibboleth.idp.attribute.resolver.AbstractResolverPlugin;
+import net.shibboleth.idp.attribute.resolver.ResolverAttributeDefinitionDependency;
+import net.shibboleth.idp.attribute.resolver.ResolverDataConnectorDependency;
import net.shibboleth.idp.attribute.resolver.ResolverPluginDependency;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
@@ -42,17 +44,20 @@ public abstract class AbstractResolverPluginFactoryBean<T extends AbstractResolv
/** The component Id. */
@Nullable private String componentId;
- /** Data Connector property "propagateResolutionExceptions". */
+ /** Plugin property "propagateResolutionExceptions". */
@Nullable private Boolean propagateResolutionExceptions;
- /** Data Connector property "profileContextStrategy". */
+ /** Plugin property "profileContextStrategy". */
@Nullable private Function<AttributeResolutionContext, ProfileRequestContext> profileContextStrategy;
- /** Data Connector property "activationCondition". */
+ /** Plugin property "activationCondition". */
@Nullable private Predicate<ProfileRequestContext> activationCondition;
- /** Data Connector property "dependencies". */
- @Nullable private Set<ResolverPluginDependency> dependencies;
+ /** Plugin property "attributeDependencies". */
+ @Nullable private Set<ResolverAttributeDefinitionDependency> attributeDependencies;
+
+ /** Plugin property "dataConnectorDependencies". */
+ @Nullable private Set<ResolverDataConnectorDependency> dataConnectorDependencies;
/** Get the component Id.
* @return the id.
@@ -124,22 +129,41 @@ public abstract class AbstractResolverPluginFactoryBean<T extends AbstractResolv
}
/**
- * Bean setter in support of {@link AbstractResolverPlugin#setDependencies(Set)}.
+ * Bean setter in support of {@link AbstractResolverPlugin#setAttributeDependencies(Set)}.
+ *
+ * @param dependencies value to set
+ */
+ public void setAttributeDependencies(@Nullable final Set<ResolverAttributeDefinitionDependency> dependencies) {
+
+ attributeDependencies = dependencies;
+ }
+
+ /**
+ * Bean setter in support of {@link AbstractResolverPlugin#setDataConnectorDependencies(Set)}.
*
- * @param pluginDependencies value to set
+ * @param dependencies value to set
*/
- public void setDependencies(@Nullable final Set<ResolverPluginDependency> pluginDependencies) {
+ public void setDataConnectorDependencies(@Nullable final Set<ResolverDataConnectorDependency> dependencies) {
- dependencies = pluginDependencies;
+ dataConnectorDependencies = dependencies;
}
/**
- * Bean getter in support of {@link AbstractResolverPlugin#setActivationCondition(Predicate)}.
+ * Bean getter in support of {@link AbstractResolverPlugin#setAttributeDependencies(Set)}.
*
- * @return The value to be set
+ * @return The value
*/
- @Nullable public Set<ResolverPluginDependency> getDependencies() {
- return dependencies;
+ @Nullable public Set<ResolverAttributeDefinitionDependency> getAttributeDependencies() {
+ return attributeDependencies;
+ }
+
+ /**
+ * Bean getter in support of {@link AbstractResolverPlugin#setDataConnectorDependencies(Set)}.
+ *
+ * @return The value
+ */
+ @Nullable public Set<ResolverDataConnectorDependency> getDataConnectorDependencies() {
+ return dataConnectorDependencies;
}
/**
@@ -153,8 +177,11 @@ public abstract class AbstractResolverPluginFactoryBean<T extends AbstractResolv
if (null != getActivationCondition()) {
what.setActivationCondition(getActivationCondition());
}
- if (null != getDependencies()) {
- what.setDependencies(getDependencies());
+ if (null != getAttributeDependencies()) {
+ what.setAttributeDependencies(getAttributeDependencies());
+ }
+ if (null != getDataConnectorDependencies()) {
+ what.setDataConnectorDependencies(getDataConnectorDependencies());
}
if (null != getProfileContextStrategy()) {
what.setProfileContextStrategy(getProfileContextStrategy());
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/impl/AttributeResolverNamespaceHandler.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/impl/AttributeResolverNamespaceHandler.java
index b3f6c0d..eab45c3 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/impl/AttributeResolverNamespaceHandler.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/impl/AttributeResolverNamespaceHandler.java
@@ -20,7 +20,7 @@ package net.shibboleth.idp.attribute.resolver.spring.impl;
import javax.annotation.Nonnull;
import net.shibboleth.ext.spring.util.BaseSpringNamespaceHandler;
-import net.shibboleth.idp.attribute.resolver.spring.ResolverPluginDependencyParser;
+import net.shibboleth.idp.attribute.resolver.spring.BaseResolverPluginDependencyParser;
import net.shibboleth.idp.attribute.resolver.spring.ad.impl.ContextDerivedAttributeDefinitionParser;
import net.shibboleth.idp.attribute.resolver.spring.ad.impl.CryptoTransientIdAttributeDefinitionParser;
import net.shibboleth.idp.attribute.resolver.spring.ad.impl.PrescopedAttributeDefinitionParser;
@@ -73,7 +73,6 @@ public class AttributeResolverNamespaceHandler extends BaseSpringNamespaceHandle
registerBeanDefinitionParser(AttributeResolverParser.SCHEMA_TYPE, parser);
registerBeanDefinitionParser(AttributeResolverParser.ELEMENT_NAME, parser);
- registerBeanDefinitionParser(ResolverPluginDependencyParser.ELEMENT_NAME, new ResolverPluginDependencyParser());
registerBeanDefinitionParser(InputDataConnectorParser.ELEMENT_NAME, new InputDataConnectorParser());
registerBeanDefinitionParser(InputAttributeDefinitionParser.ELEMENT_NAME, new InputAttributeDefinitionParser());
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/impl/InputAttributeDefinitionParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/impl/InputAttributeDefinitionParser.java
index 24b1e1d..b320a5b 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/impl/InputAttributeDefinitionParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/impl/InputAttributeDefinitionParser.java
@@ -23,12 +23,12 @@ import javax.xml.namespace.QName;
import net.shibboleth.idp.attribute.resolver.ResolverAttributeDefinitionDependency;
import net.shibboleth.idp.attribute.resolver.ResolverPluginDependency;
-import net.shibboleth.idp.attribute.resolver.spring.ResolverPluginDependencyParser;
+import net.shibboleth.idp.attribute.resolver.spring.BaseResolverPluginDependencyParser;
import org.w3c.dom.Element;
/** Bean definition parser for a {@link ResolverPluginDependency}. */
-public class InputAttributeDefinitionParser extends ResolverPluginDependencyParser {
+public class InputAttributeDefinitionParser extends BaseResolverPluginDependencyParser {
/** Element name. */
@Nonnull public static final QName ELEMENT_NAME =
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/impl/InputDataConnectorParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/impl/InputDataConnectorParser.java
index 6907116..07cb26f 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/impl/InputDataConnectorParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/impl/InputDataConnectorParser.java
@@ -32,11 +32,11 @@ import org.w3c.dom.Element;
import net.shibboleth.ext.spring.util.SpringSupport;
import net.shibboleth.idp.attribute.resolver.ResolverDataConnectorDependency;
import net.shibboleth.idp.attribute.resolver.ResolverPluginDependency;
-import net.shibboleth.idp.attribute.resolver.spring.ResolverPluginDependencyParser;
+import net.shibboleth.idp.attribute.resolver.spring.BaseResolverPluginDependencyParser;
import net.shibboleth.utilities.java.support.primitive.StringSupport;
/** Bean definition parser for a {@link ResolverPluginDependency}. */
-public class InputDataConnectorParser extends ResolverPluginDependencyParser {
+public class InputDataConnectorParser extends BaseResolverPluginDependencyParser {
/** Element name. */
@Nonnull public static final QName ELEMENT_NAME =
diff --git a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/DependencyTypesTest.java b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/DependencyTypesTest.java
index 7aafb2b..3a26c58 100644
--- a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/DependencyTypesTest.java
+++ b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/DependencyTypesTest.java
@@ -67,7 +67,8 @@ public class DependencyTypesTest extends BaseAttributeDefinitionParserTest {
@Test(dependsOnMethods={"attributeInput", "allAttributeDataConnector"}) public void simple() {
final AttributeDefinition attr = getBean(BEAN_FILE_PATH + "simpleDependencies.xml", AttributeDefinition.class, new GenericApplicationContext());
- Assert.assertEquals(attr.getDependencies().size(), 2);
+ Assert.assertEquals(attr.getDataConnectorDependencies().size(), 1);
+ Assert.assertEquals(attr.getAttributeDependencies().size(), 1);
}
}
diff --git a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/ad/SimpleAttributeParserTest.java b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/ad/SimpleAttributeParserTest.java
index ad6fb3a..7ca613b 100644
--- a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/ad/SimpleAttributeParserTest.java
+++ b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/ad/SimpleAttributeParserTest.java
@@ -34,7 +34,8 @@ import org.testng.annotations.Test;
import net.shibboleth.ext.spring.context.FilesystemGenericApplicationContext;
import net.shibboleth.idp.attribute.resolver.AttributeDefinition;
-import net.shibboleth.idp.attribute.resolver.ResolverPluginDependency;
+import net.shibboleth.idp.attribute.resolver.ResolverAttributeDefinitionDependency;
+import net.shibboleth.idp.attribute.resolver.ResolverDataConnectorDependency;
import net.shibboleth.idp.attribute.resolver.ad.impl.SimpleAttributeDefinition;
import net.shibboleth.idp.attribute.resolver.spring.BaseAttributeDefinitionParserTest;
import net.shibboleth.idp.attribute.resolver.spring.ad.impl.SimpleAttributeDefinitionParser;
@@ -58,7 +59,7 @@ public class SimpleAttributeParserTest extends BaseAttributeDefinitionParserTest
Assert.assertFalse(attrDef.isDependencyOnly(), "isDependencyOnly");
Assert.assertTrue(attrDef.getDisplayDescriptions().isEmpty(), "getDisplayDescriptions().isEmpty()");
Assert.assertTrue(attrDef.getDisplayNames().isEmpty(), "getDisplayNames().isEmpty()");
- Assert.assertEquals(attrDef.getDependencies().size(), 1);
+ Assert.assertEquals(attrDef.getAttributeDependencies().size(), 1);
Assert.assertTrue(attrDef.getAttributeEncoders().isEmpty(), "getgetAttributeEncoders().isEmpty()");
}
@@ -82,11 +83,16 @@ public class SimpleAttributeParserTest extends BaseAttributeDefinitionParserTest
Assert.assertEquals(names.get(new Locale("en")), "NameInEnglish");
Assert.assertEquals(names.get(new Locale("fr")), "NameEnFrancais");
- Set<ResolverPluginDependency> dependencies = attrDef.getDependencies();
- Assert.assertEquals(dependencies.size(), 3, "getDisplayDescriptions");
- Assert.assertTrue(dependencies.contains(TestSources.makeResolverPluginDependency("con1", "dep1")));
- Assert.assertTrue(dependencies.contains(TestSources.makeResolverPluginDependency("dep2")));
- Assert.assertTrue(dependencies.contains(TestSources.makeResolverPluginDependency("dep3")));
+ Set<ResolverAttributeDefinitionDependency> adDeps = attrDef.getAttributeDependencies();
+ Assert.assertEquals(adDeps.size(), 2, "getAttributeDependencies");
+ Assert.assertTrue(adDeps.contains(TestSources.makeResolverPluginDependency("dep2")));
+ Assert.assertTrue(adDeps.contains(TestSources.makeResolverPluginDependency("dep3")));
+
+ Set<ResolverDataConnectorDependency> dcDeps = attrDef.getDataConnectorDependencies();
+ Assert.assertEquals(dcDeps.size(), 1, "getDataConnectorDependencies");
+ final ResolverDataConnectorDependency dcDep = dcDeps.iterator().next();
+ Assert.assertEquals(dcDep.getDependencyPluginId(), "con1");
+ Assert.assertTrue(dcDep.getAttributeNames().contains("dep1"));
Assert.assertEquals(attrDef.getAttributeEncoders().size(), 1);
final SAML2StringAttributeEncoder e1 =
@@ -111,12 +117,16 @@ public class SimpleAttributeParserTest extends BaseAttributeDefinitionParserTest
Assert.assertEquals(names.size(), 1, "getDisplayNames");
Assert.assertEquals(names.get(new Locale("en")), "NameInAmerican");
- Set<ResolverPluginDependency> dependencies = attrDef.getDependencies();
- Assert.assertEquals(dependencies.size(), 1, "getDisplayDescriptions");
- Assert.assertTrue(dependencies.contains(TestSources.makeResolverPluginDependency("dep3")));
+ final Set<ResolverAttributeDefinitionDependency> attrDeps = attrDef.getAttributeDependencies();
+ Assert.assertEquals(attrDeps.size(), 1, "getAttributeDependencies");
+ Assert.assertTrue(attrDeps.contains(TestSources.makeResolverPluginDependency("dep3")));
+
+ final Set<ResolverDataConnectorDependency> dcDeps = attrDef.getDataConnectorDependencies();
+ Assert.assertEquals(dcDeps.size(), 0, "getDataConnectorDependencies");
+
Assert.assertEquals(attrDef.getAttributeEncoders().size(), 2);
- List a = new ArrayList(attrDef.getAttributeEncoders());
+ final List a = new ArrayList(attrDef.getAttributeEncoders());
final SAML2StringAttributeEncoder saml2;
final SAML1StringAttributeEncoder saml1;
diff --git a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/StoredIDDataConnectorParserTest.java b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/StoredIDDataConnectorParserTest.java
index ea35fa7..de5c968 100644
--- a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/StoredIDDataConnectorParserTest.java
+++ b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/StoredIDDataConnectorParserTest.java
@@ -17,17 +17,16 @@
package net.shibboleth.idp.attribute.resolver.spring.dc;
+import org.bouncycastle.util.Arrays;
+import org.testng.Assert;
+import org.testng.annotations.Test;
+
import net.shibboleth.idp.attribute.resolver.ResolverAttributeDefinitionDependency;
-import net.shibboleth.idp.attribute.resolver.ResolverPluginDependency;
import net.shibboleth.idp.attribute.resolver.spring.BaseAttributeDefinitionParserTest;
import net.shibboleth.idp.attribute.resolver.spring.dc.impl.StoredIDDataConnectorParser;
import net.shibboleth.idp.saml.attribute.resolver.impl.StoredIDDataConnector;
import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import org.bouncycastle.util.Arrays;
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
/**
* test for {@link StoredIDDataConnectorParser}
*/
@@ -47,7 +46,7 @@ public class StoredIDDataConnectorParserTest extends BaseAttributeDefinitionPars
@Test public void withSalt() throws ComponentInitializationException {
final StoredIDDataConnector connector = getDataConnector("resolver/stored.xml", StoredIDDataConnector.class);
- ResolverAttributeDefinitionDependency attrib = (ResolverAttributeDefinitionDependency) connector.getDependencies().iterator().next();
+ final ResolverAttributeDefinitionDependency attrib = connector.getAttributeDependencies().iterator().next();
Assert.assertEquals(attrib.getDependencyPluginId(), "theSourceRemainsTheSame");
Assert.assertEquals(connector.getSalt(), "abcdefghijklmnopqrst".getBytes());
testIt(connector);
@@ -55,7 +54,7 @@ public class StoredIDDataConnectorParserTest extends BaseAttributeDefinitionPars
@Test public void withOutSalt() throws ComponentInitializationException {
final StoredIDDataConnector connector = getDataConnector("resolver/storedNoSalt.xml", StoredIDDataConnector.class);
- ResolverAttributeDefinitionDependency attrib = (ResolverAttributeDefinitionDependency) connector.getDependencies().iterator().next();
+ final ResolverAttributeDefinitionDependency attrib = connector.getAttributeDependencies().iterator().next();
Assert.assertEquals(attrib.getDependencyPluginId(), "theSourceRemainsTheSame");
testIt(connector);
}
diff --git a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/attribute/resolver/impl/AbstractPersistentIdDataConnector.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/attribute/resolver/impl/AbstractPersistentIdDataConnector.java
index 031fdb0..3bc43cc 100644
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/attribute/resolver/impl/AbstractPersistentIdDataConnector.java
+++ b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/attribute/resolver/impl/AbstractPersistentIdDataConnector.java
@@ -118,45 +118,38 @@ public abstract class AbstractPersistentIdDataConnector extends AbstractDataConn
*
* @throws ComponentInitializationException if the dependencies are not aligned correctly
*/
- // Checkstyle: CyclomaticComplexity|MethodLength OFF
private void doDependencyInformation() throws ComponentInitializationException {
final StringBuilder dependencyInformation = new StringBuilder();
boolean seenAttribute = false;
- for (final ResolverPluginDependency depends : getDependencies()) {
+
+ for (final ResolverAttributeDefinitionDependency attrDep : getAttributeDependencies()) {
if (seenAttribute) {
dependencyInformation.append(", ");
}
- if (depends instanceof ResolverAttributeDefinitionDependency) {
- dependencyInformation.append(depends.getDependencyPluginId());
- // No other work needed. The name is the reference
- } else if (depends instanceof ResolverDataConnectorDependency) {
- final ResolverDataConnectorDependency dataConnectorDependency =
- (ResolverDataConnectorDependency) depends;
- if (dataConnectorDependency.isAllAttributes()) {
- dependencyInformation.append(depends.getDependencyPluginId()).append("/*");
- } else if (dataConnectorDependency.getAttributeNames().isEmpty()) {
- throw new ComponentInitializationException(getLogPrefix() + " No source attribute present.");
- } else if (dataConnectorDependency.getAttributeNames().size() == 1) {
- dependencyInformation.append(dataConnectorDependency.getDependencyPluginId()).
- append('/').
- append(dataConnectorDependency.getAttributeNames().iterator().next());
- } else {
- dependencyInformation.append(dataConnectorDependency.getDependencyPluginId()).
- append('/').
- append(dataConnectorDependency.getAttributeNames().toString());
- }
- // No work needed. The names are stored elsewhere
+ dependencyInformation.append(attrDep.getDependencyPluginId());
+ seenAttribute = true;
+ }
+
+ for (final ResolverDataConnectorDependency dataConnectorDependency : getDataConnectorDependencies()) {
+ if (seenAttribute) {
+ dependencyInformation.append(", ");
+ }
+ if (dataConnectorDependency.isAllAttributes()) {
+ dependencyInformation.append(dataConnectorDependency.getDependencyPluginId()).append("/*");
+ } else if (dataConnectorDependency.getAttributeNames().isEmpty()) {
+ throw new ComponentInitializationException(getLogPrefix() + " No source attribute present.");
+ } else if (dataConnectorDependency.getAttributeNames().size() == 1) {
+ dependencyInformation.append(dataConnectorDependency.getDependencyPluginId()).
+ append('/').
+ append(dataConnectorDependency.getAttributeNames().iterator().next());
} else {
- if (null == getSourceAttributeId()) {
- throw new ComponentInitializationException(getLogPrefix() + " No source attribute present.");
- }
- dependencyInformation.append(depends.getDependencyPluginId()).
+ dependencyInformation.append(dataConnectorDependency.getDependencyPluginId()).
append('/').
- append(getSourceAttributeId());
- depends.setDependencyAttributeId(getSourceAttributeId());
+ append(dataConnectorDependency.getAttributeNames().toString());
}
seenAttribute = true;
}
+
if (!seenAttribute) {
if (null == getSourceAttributeId()) {
throw new ComponentInitializationException(getLogPrefix() + " No source attribute present.");
@@ -169,7 +162,6 @@ public abstract class AbstractPersistentIdDataConnector extends AbstractDataConn
sourceInformation = dependencyInformation.toString();
log.debug("{} Source for definition: {}", getLogPrefix(), sourceInformation);
}
- // Checkstyle: CyclomaticComplexity|MethodLength ON
/** {@inheritDoc} */
@Override protected void doInitialize() throws ComponentInitializationException {
@@ -197,7 +189,10 @@ public abstract class AbstractPersistentIdDataConnector extends AbstractDataConn
ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
final List<IdPAttributeValue<?>> attributeValues =
- PluginDependencySupport.getMergedAttributeValues(workContext, getDependencies(), getId());
+ PluginDependencySupport.getMergedAttributeValues(workContext,
+ getAttributeDependencies(),
+ getDataConnectorDependencies(),
+ getId());
if (attributeValues == null || attributeValues.isEmpty()) {
log.debug("{} Source attribute {} for connector {} provide no values", getLogPrefix(),
getSourceAttributeInformation(), getId());
diff --git a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/attribute/resolver/impl/SAML1NameIdentifierAttributeDefinition.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/attribute/resolver/impl/SAML1NameIdentifierAttributeDefinition.java
index 0e72966..6e929a4 100644
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/attribute/resolver/impl/SAML1NameIdentifierAttributeDefinition.java
+++ b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/attribute/resolver/impl/SAML1NameIdentifierAttributeDefinition.java
@@ -188,7 +188,10 @@ public class SAML1NameIdentifierAttributeDefinition extends AbstractAttributeDef
List<? extends IdPAttributeValue<?>> outputValues = null;
final IdPAttribute result = new IdPAttribute(getId());
- inputValues = PluginDependencySupport.getMergedAttributeValues(workContext, getDependencies(), getId());
+ inputValues = PluginDependencySupport.getMergedAttributeValues(workContext,
+ getAttributeDependencies(),
+ getDataConnectorDependencies(),
+ getId());
if (null != inputValues && !inputValues.isEmpty()) {
if (1 == inputValues.size()) {
diff --git a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/attribute/resolver/impl/SAML2NameIDAttributeDefinition.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/attribute/resolver/impl/SAML2NameIDAttributeDefinition.java
index 89b3c88..21d0094 100644
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/attribute/resolver/impl/SAML2NameIDAttributeDefinition.java
+++ b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/attribute/resolver/impl/SAML2NameIDAttributeDefinition.java
@@ -224,7 +224,10 @@ public class SAML2NameIDAttributeDefinition extends AbstractAttributeDefinition
List<? extends IdPAttributeValue<?>> outputValues = null;
final IdPAttribute result = new IdPAttribute(getId());
- inputValues = PluginDependencySupport.getMergedAttributeValues(workContext, getDependencies(), getId());
+ inputValues = PluginDependencySupport.getMergedAttributeValues(workContext,
+ getAttributeDependencies(),
+ getDataConnectorDependencies(),
+ getId());
if (null != inputValues && !inputValues.isEmpty()) {
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/resolver/impl/TransientIdAttributeDefinitionTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/resolver/impl/TransientIdAttributeDefinitionTest.java
index 3d4fa33..1732158 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/resolver/impl/TransientIdAttributeDefinitionTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/attribute/resolver/impl/TransientIdAttributeDefinitionTest.java
@@ -67,7 +67,7 @@ public class TransientIdAttributeDefinitionTest extends OpenSAMLInitBaseTestCase
final TransientIdAttributeDefinition defn = newTransientIdAttributeDefinition(strategy);
defn.setId(TEST_ATTRIBUTE_NAME);
- defn.setDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("foo", "bar")));
+ defn.setDataConnectorDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("foo", "bar")));
defn.initialize();
@@ -105,7 +105,7 @@ public class TransientIdAttributeDefinitionTest extends OpenSAMLInitBaseTestCase
final TransientIdAttributeDefinition defn = newTransientIdAttributeDefinition(strategy);
defn.setId(TEST_ATTRIBUTE_NAME);
- defn.setDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("foo", "bar")));
+ defn.setDataConnectorDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("foo", "bar")));
defn.initialize();
try {
defn.resolve(TestSources.createResolutionContext(principal, idp, sp));
@@ -133,7 +133,7 @@ public class TransientIdAttributeDefinitionTest extends OpenSAMLInitBaseTestCase
strategy.initialize();
final TransientIdAttributeDefinition defn = newTransientIdAttributeDefinition(strategy);
defn.setId(TEST_ATTRIBUTE_NAME);
- defn.setDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("foo", "bar")));
+ defn.setDataConnectorDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("foo", "bar")));
defn.initialize();
@@ -154,7 +154,7 @@ public class TransientIdAttributeDefinitionTest extends OpenSAMLInitBaseTestCase
final TransientIdAttributeDefinition defn = newTransientIdAttributeDefinition(strategy);
defn.setId(TEST_ATTRIBUTE_NAME);
- defn.setDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("foo", "bar")));
+ defn.setDataConnectorDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("foo", "bar")));
defn.initialize();
IdPAttribute result = defn.resolve(TestSources.createResolutionContext(TestSources.PRINCIPAL_ID,
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/impl/TestSources.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/impl/TestSources.java
index 317e9e4..83bbc28 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/impl/TestSources.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/impl/TestSources.java
@@ -30,6 +30,10 @@ import java.util.regex.Pattern;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
+import org.opensaml.profile.context.ProfileRequestContext;
+
+import com.google.common.collect.ImmutableMap;
+
import net.shibboleth.idp.attribute.IdPAttribute;
import net.shibboleth.idp.attribute.IdPAttributeValue;
import net.shibboleth.idp.attribute.StringAttributeValue;
@@ -40,7 +44,6 @@ import net.shibboleth.idp.attribute.resolver.DataConnectorEx;
import net.shibboleth.idp.attribute.resolver.ResolutionException;
import net.shibboleth.idp.attribute.resolver.ResolverAttributeDefinitionDependency;
import net.shibboleth.idp.attribute.resolver.ResolverDataConnectorDependency;
-import net.shibboleth.idp.attribute.resolver.ResolverPluginDependency;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolverWorkContext;
import net.shibboleth.idp.saml.attribute.resolver.impl.SAML2NameIDAttributeDefinition;
@@ -51,10 +54,6 @@ import net.shibboleth.utilities.java.support.collection.LazySet;
import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import org.opensaml.profile.context.ProfileRequestContext;
-
-import com.google.common.collect.ImmutableMap;
-
/** Basic data sources for testing the attribute generators. */
public final class TestSources {
/** The name we use in this test for the static connector. */
@@ -192,8 +191,8 @@ public final class TestSources {
defn.setId(name);
// Set the dependency on the data connector
- ResolverPluginDependency depend = new ResolverAttributeDefinitionDependency(TestSources.DEPENDS_ON_ATTRIBUTE_NAME_ATTR);
- defn.setDependencies(Collections.singleton(depend));
+ ResolverAttributeDefinitionDependency depend = new ResolverAttributeDefinitionDependency(TestSources.DEPENDS_ON_ATTRIBUTE_NAME_ATTR);
+ defn.setAttributeDependencies(Collections.singleton(depend));
defn.initialize();
return defn;
}
@@ -211,12 +210,12 @@ public final class TestSources {
return retVal;
}
- public static ResolverPluginDependency makeResolverPluginDependency(String attributeId) {
+ public static ResolverAttributeDefinitionDependency makeResolverPluginDependency(String attributeId) {
ResolverAttributeDefinitionDependency retVal = new ResolverAttributeDefinitionDependency(attributeId);
return retVal;
}
- public static ResolverPluginDependency makeResolverPluginDependency(@Nonnull String connectorId, @Nullable String attributeId) {
+ public static ResolverDataConnectorDependency makeResolverPluginDependency(@Nonnull String connectorId, @Nullable String attributeId) {
ResolverDataConnectorDependency retVal = new ResolverDataConnectorDependency(connectorId);
if (null == attributeId) {
retVal.setAllAttributes(true);
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/nameid/impl/TransientDecoderTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/nameid/impl/TransientDecoderTest.java
index a983034..6a34e79 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/nameid/impl/TransientDecoderTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/nameid/impl/TransientDecoderTest.java
@@ -139,7 +139,7 @@ public class TransientDecoderTest extends OpenSAMLInitBaseTestCase {
final TransientIdAttributeDefinition defn = TransientIdAttributeDefinitionTest.newTransientIdAttributeDefinition(strategy);
defn.setId("id");
- defn.setDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("foo", "bar")));
+ defn.setDataConnectorDependencies(Collections.singleton(TestSources.makeResolverPluginDependency("foo", "bar")));
defn.initialize();
final IdPAttribute result =
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list