[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