[java-identity-provider COMMIT] /trunk/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingpart...

noreply at shibboleth.net noreply at shibboleth.net
Fri Feb 27 05:19:59 EST 2015


Author: rdw
Date: Fri Feb 27 05:19:59 2015
New Revision: 7385

URL: http://svn.shibboleth.net/view/java-identity-provider?rev=7385&view=rev
Log:
IDP-628 Bounce the decision on trustedNameCheckEnabled into a factory bean.  This allows property replacement

Modified:
    trunk/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/security/trustengine/AbstractStaticPKIXParser.java

Modified: trunk/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/security/trustengine/AbstractStaticPKIXParser.java
URL: http://svn.shibboleth.net/view/java-identity-provider/trunk/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/security/trustengine/AbstractStaticPKIXParser.java?rev=7385&r1=7384&r2=7385&view=diff
==============================================================================
--- trunk/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/security/trustengine/AbstractStaticPKIXParser.java (original)
+++ trunk/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/security/trustengine/AbstractStaticPKIXParser.java Fri Feb 27 05:19:59 2015
@@ -24,16 +24,17 @@
 
 import net.shibboleth.ext.spring.util.SpringSupport;
 import net.shibboleth.idp.profile.spring.relyingparty.security.SecurityNamespaceHandler;
-import net.shibboleth.utilities.java.support.xml.AttributeSupport;
+import net.shibboleth.utilities.java.support.primitive.StringSupport;
 import net.shibboleth.utilities.java.support.xml.ElementSupport;
 
 import org.opensaml.security.x509.impl.BasicX509CredentialNameEvaluator;
 import org.opensaml.security.x509.impl.CertPathPKIXTrustEvaluator;
 import org.opensaml.security.x509.impl.StaticPKIXValidationInformationResolver;
+import org.opensaml.security.x509.impl.X509CredentialNameEvaluator;
+import org.springframework.beans.factory.config.AbstractFactoryBean;
 import org.springframework.beans.factory.config.BeanDefinition;
 import org.springframework.beans.factory.support.BeanDefinitionBuilder;
 import org.springframework.beans.factory.xml.ParserContext;
-import org.w3c.dom.Attr;
 import org.w3c.dom.Element;
 
 /**
@@ -77,7 +78,7 @@
      * @param parserContext the context to parse inside
      * @return the definition
      */
-    protected BeanDefinition getPKIXTrustEvaluator(@Nonnull final Element element, 
+    protected BeanDefinition getPKIXTrustEvaluator(@Nonnull final Element element,
             @Nonnull final ParserContext parserContext) {
 
         BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(CertPathPKIXTrustEvaluator.class);
@@ -90,33 +91,56 @@
         }
         return builder.getBeanDefinition();
     }
-    
+
     /**
-     * Get the effective X509CredentialNameEvaluator to use.  Currently we return a literal
-     * value, but in the future a BeanDefinition could be returned if necessary if we support
-     * toggling the name evaluator settings, hence the Object return type.
+     * Get the effective X509CredentialNameEvaluator to use. Currently we return a literal value, but in the future a
+     * BeanDefinition could be returned if necessary if we support toggling the name evaluator settings, hence the
+     * Object return type.
      * 
      * @param element what to parse
      * @param parserContext the context to parse inside
      * @return an X509CredentialNameEvaluator instance or a BeanDefinition. May be null.
      */
-    protected Object getX509CredentialNameEvaluator(@Nonnull final Element element, 
+    protected Object getX509CredentialNameEvaluator(@Nonnull final Element element,
             @Nonnull final ParserContext parserContext) {
-        
-        boolean trustedNameCheckEnabled = true;
-        Attr attrValue = element.getAttributeNodeNS(null, "trustedNameCheckEnabled");
+
+        final BeanDefinitionBuilder builder =
+                BeanDefinitionBuilder.genericBeanDefinition(X509CredentialNameEvaluatorFactoryBean.class);
+        String attrValue = StringSupport.trimOrNull(element.getAttributeNS(null, "trustedNameCheckEnabled"));
         if (attrValue != null) {
-            Boolean value = AttributeSupport.getAttributeValueAsBoolean(attrValue);
-            if (value != null) {
-                trustedNameCheckEnabled = value;
+            builder.addPropertyValue("trustedNameCheckEnabled", attrValue);
+        }
+        return builder.getBeanDefinition();
+    }
+
+    /**
+     * FactoryBean to do a deferred decision on whether to create a {@link X509CredentialNameEvaluator}. This is in a
+     * factory bean to allow for property replacement. The default (no value setting) is true.
+     */
+    protected static class X509CredentialNameEvaluatorFactoryBean extends
+            AbstractFactoryBean<X509CredentialNameEvaluator> {
+
+        /** Do we emit a {@link X509CredentialNameEvaluator} or not. */
+        private boolean trustedNameCheckEnabled = true;
+
+        /** Setter for {@link #trustedNameCheckEnabled}.
+         * @param enabled whether we emit a the  {@link X509CredentialNameEvaluator} .*/

[... 27 lines stripped ...]


More information about the commits mailing list