[java-identity-provider COMMIT] in /trunk: idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/r...

noreply at shibboleth.net noreply at shibboleth.net
Tue Oct 21 16:16:29 EDT 2014


Author: scantor
Date: Tue Oct 21 16:16:29 2014
New Revision: 6763

URL: http://svn.shibboleth.net/view/java-identity-provider?rev=6763&view=rev
Log:
IDP-494 - Add dc:Column parsing to LDAP connector

Modified:
    trunk/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/LDAPDataConnectorParser.java
    trunk/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/LdapDataConnectorParserTest.java
    trunk/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/ldap-attribute-resolver-v2.xml
    trunk/idp-schema/src/main/resources/schema/shibboleth-attribute-resolver-dc.xsd

Modified: trunk/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/LDAPDataConnectorParser.java
URL: http://svn.shibboleth.net/view/java-identity-provider/trunk/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/LDAPDataConnectorParser.java?rev=6763&r1=6762&r2=6763&view=diff
==============================================================================
--- trunk/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/LDAPDataConnectorParser.java (original)
+++ trunk/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/LDAPDataConnectorParser.java Tue Oct 21 16:16:29 2014
@@ -25,6 +25,7 @@
 
 import net.shibboleth.ext.spring.util.SpringSupport;
 import net.shibboleth.idp.attribute.resolver.dc.ldap.impl.LDAPDataConnector;
+import net.shibboleth.idp.attribute.resolver.dc.ldap.impl.StringAttributeValueMappingStrategy;
 import net.shibboleth.idp.attribute.resolver.dc.ldap.impl.TemplatedExecutableSearchFilterBuilder;
 import net.shibboleth.idp.attribute.resolver.spring.dc.AbstractDataConnectorParser;
 import net.shibboleth.idp.attribute.resolver.spring.dc.CacheConfigParser;
@@ -122,6 +123,7 @@
         builder.setDestroyMethodName("destroy");
     }
 
+// CheckStyle: MethodLength OFF
     /**
      * Parses a version 2 configuration.
      * 
@@ -129,7 +131,6 @@
      * @param parserContext bean definition parsing context
      * @param builder to initialize
      */
-    // CheckStyle: MethodLength OFF
     protected void doParseV2(@Nonnull final Element config, @Nonnull final ParserContext parserContext,
             @Nonnull final BeanDefinitionBuilder builder) {
 
@@ -194,6 +195,11 @@
         final BeanDefinition searchExecutor = v2Parser.createSearchExecutor();
         builder.addPropertyValue("searchExecutor", searchExecutor);
 
+        final BeanDefinition def = v2Parser.createMappingStrategy();
+        if (def != null) {
+            builder.addPropertyValue("mappingStrategy", def);
+        }
+
         builder.addPropertyValue("resultsCache", v2Parser.createCache());
 
         final String noResultIsError = AttributeSupport.getAttributeValue(config, new QName("noResultIsError"));
@@ -203,9 +209,8 @@
         builder.setInitMethodName("initialize");
         builder.setDestroyMethodName("destroy");
     }
-
-    // CheckStyle: MethodLength ON
-
+// CheckStyle: MethodLength ON
+    
     /**
      * Utility class for parsing v2 schema configuration. 
      * TODO(rdw) Move defaults into the bean
@@ -545,7 +550,41 @@
             }
             return poolConfig.getBeanDefinition();
         }
-
+        
+        /**
+         * Create the result mapping strategy. See {@link MappingStrategy}.
+         * 
+         * @return mapping strategy
+         */
+        @Nullable public BeanDefinition createMappingStrategy() {
+            
+            final List<Element> columns = ElementSupport.getChildElementsByTagNameNS(configElement,
+                    DataConnectorNamespaceHandler.NAMESPACE, "Column");
+            if (columns.isEmpty()) {
+                return null;
+            }
+            
+            final ManagedMap renamingMap = new ManagedMap();
+            for (final Element column : columns) {
+                final String columnName = AttributeSupport.getAttributeValue(column, null, "columnName");
+                final String attributeId = AttributeSupport.getAttributeValue(column, null, "attributeID");
+                if (columnName != null && attributeId != null) {
+                    renamingMap.put(columnName, attributeId);
+                }
+                
+                if (AttributeSupport.hasAttribute(column, new QName("type"))) {
+                    LoggerFactory.getLogger(LDAPDataConnectorParser.class).warn(
+                            "dc:Column type attribute not supported for LDAP results");
+                }
+            }
+
+            final BeanDefinitionBuilder mapper =
+                    BeanDefinitionBuilder.genericBeanDefinition(StringAttributeValueMappingStrategy.class);
+            mapper.addPropertyValue("resultRenamingMap", renamingMap);
+            
+            return mapper.getBeanDefinition();
+        }
+        
         /**

[... 56 lines stripped ...]


More information about the commits mailing list