[java-identity-provider COMMIT] in /trunk/idp-attribute-resolver-api/src: main/java/net/shibboleth/idp/attribute/reso...
noreply at shibboleth.net
noreply at shibboleth.net
Thu Feb 9 09:23:03 EST 2017
Author: rdw
Date: Thu Feb 9 09:23:03 2017
New Revision: 8615
URL: http://svn.shibboleth.net/view/java-identity-provider?rev=8615&view=rev
Log:
IDP-680 Integrate the two new Dependency types in PluginDependency
https://issues.shibboleth.net/jira/browse/IDP-680
Explicitly handle the reduced scope (and increase function) that the new dependencies allow.
Sadly the need to support old style Dependencies does not make for much clearer code
Modified:
trunk/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/PluginDependencySupport.java
trunk/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/ResolverDataConnectorDependency.java
trunk/idp-attribute-resolver-api/src/test/java/net/shibboleth/idp/attribute/resolver/PluginDependencySupportTest.java
Modified: trunk/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/PluginDependencySupport.java
URL: http://svn.shibboleth.net/view/java-identity-provider/trunk/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/PluginDependencySupport.java?rev=8615&r1=8614&r2=8615&view=diff
==============================================================================
--- trunk/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/PluginDependencySupport.java (original)
+++ trunk/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/PluginDependencySupport.java Thu Feb 9 09:23:03 2017
@@ -23,6 +23,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Map.Entry;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
@@ -103,39 +104,61 @@
final String pluginId = dependency.getDependencyPluginId();
- 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);
- }
-
+ if (dependency instanceof ResolverAttributeDefinitionDependency) {
+ final ResolvedAttributeDefinition attributeDefinition =
+ workContext.getResolvedIdPAttributeDefinitions().get(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());
+ } 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);
+ }
+ }
+ }
+ }
+ } else {
[... 420 lines stripped ...]
More information about the commits
mailing list