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

noreply at shibboleth.net noreply at shibboleth.net
Tue Oct 21 11:46:58 EDT 2014


Author: scantor
Date: Tue Oct 21 11:46:58 2014
New Revision: 6757

URL: http://svn.shibboleth.net/view/java-identity-provider?rev=6757&view=rev
Log:
IDP-494 - parse dc:Column elements into a StringResultMappingStrategy

Modified:
    trunk/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/RDBMSDataConnectorParser.java

Modified: trunk/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/RDBMSDataConnectorParser.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/rdbms/RDBMSDataConnectorParser.java?rev=6757&r1=6756&r2=6757&view=diff
==============================================================================
--- trunk/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/RDBMSDataConnectorParser.java (original)
+++ trunk/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/RDBMSDataConnectorParser.java Tue Oct 21 11:46:58 2014
@@ -17,11 +17,14 @@
 
 package net.shibboleth.idp.attribute.resolver.spring.dc.rdbms;
 
+import java.util.List;
+
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.xml.namespace.QName;
 
 import net.shibboleth.idp.attribute.resolver.dc.rdbms.impl.RDBMSDataConnector;
+import net.shibboleth.idp.attribute.resolver.dc.rdbms.impl.StringResultMappingStrategy;
 import net.shibboleth.idp.attribute.resolver.dc.rdbms.impl.TemplatedExecutableStatementBuilder;
 import net.shibboleth.idp.attribute.resolver.spring.dc.AbstractDataConnectorParser;
 import net.shibboleth.idp.attribute.resolver.spring.dc.CacheConfigParser;
@@ -38,6 +41,7 @@
 import org.springframework.beans.factory.BeanFactory;
 import org.springframework.beans.factory.config.BeanDefinition;
 import org.springframework.beans.factory.support.BeanDefinitionBuilder;
+import org.springframework.beans.factory.support.ManagedMap;
 import org.springframework.beans.factory.xml.ParserContext;
 import org.w3c.dom.Element;
 
@@ -110,6 +114,8 @@
 
         builder.addPropertyValue("executableSearchBuilder", v2Parser.createTemplateBuilder());
 
+        builder.addPropertyValue("mappingStrategy", v2Parser.createMappingStrategy());
+        
         builder.addPropertyValue("resultsCache", v2Parser.createCache());
 
         final String noResultIsError = AttributeSupport.getAttributeValue(config, new QName("noResultIsError"));
@@ -187,6 +193,35 @@
             templateBuilder.setDestroyMethodName("destroy");
             return templateBuilder.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);
+                }
+            }
+
+            final BeanDefinitionBuilder mapper =
+                    BeanDefinitionBuilder.genericBeanDefinition(StringResultMappingStrategy.class);
+            mapper.addPropertyValue("resultRenamingMap", renamingMap);
+            
+            return mapper.getBeanDefinition();
+        }
 
         /**
          * Create the results cache. See {@link CacheConfigParser}.



More information about the commits mailing list