[java-shib-attribute] 05/05: WIP resolver Spring

Rod Widdowson rdw at steadingsoftware.com
Wed May 3 13:53:32 UTC 2023


This is an automated email from the git hooks/post-receive script.

rdw pushed a commit to branch main
in repository java-shib-attribute.

View the commit online:
http://git.shibboleth.net/view/?p=java-shib-attribute.git;a=commit;h=48af6e74732ec8fd03f3e0bad1ca09d60e67fa1d

commit 48af6e74732ec8fd03f3e0bad1ca09d60e67fa1d
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Mon May 1 17:37:12 2023 +0100

    WIP resolver Spring
---
 .../resolver/spring/BaseResolverPluginParser.java  | 31 +++++++++++++---------
 .../spring/ad/BaseAttributeDefinitionParser.java   |  4 ++-
 .../spring/dc/AbstractDataConnectorParser.java     | 11 +++++---
 .../dc/http/impl/HTTPDataConnectorParser.java      | 14 +++++-----
 .../resolver/spring/dc/impl/CacheConfigParser.java |  5 ++--
 .../dc/impl/StoredIdDataConnectorParser.java       |  6 +++--
 6 files changed, 43 insertions(+), 28 deletions(-)

diff --git a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/BaseResolverPluginParser.java b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/BaseResolverPluginParser.java
index 5f6b1f35d..33eb6fef1 100644
--- a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/BaseResolverPluginParser.java
+++ b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/BaseResolverPluginParser.java
@@ -27,6 +27,7 @@ import org.slf4j.Logger;
 import org.springframework.beans.factory.BeanCreationException;
 import org.springframework.beans.factory.support.BeanDefinitionBuilder;
 import org.springframework.beans.factory.xml.ParserContext;
+import org.w3c.dom.Attr;
 import org.w3c.dom.Element;
 
 import net.shibboleth.idp.attribute.resolver.logic.ResolutionLabelPredicate;
@@ -146,20 +147,22 @@ public abstract class BaseResolverPluginParser extends AbstractCustomBeanDefinit
         BeanDefinitionBuilder rpBuilder = null;
         BeanDefinitionBuilder phasesBuilder = null;
         
-        if (config.hasAttributeNS(null, "relyingParties")) {
+        final Attr relyingPartiesAttr = config.getAttributeNodeNS(null, "relyingParties");
+        final Attr excludeRelyingPartiesAttr = config.getAttributeNodeNS(null, "excludeRelyingParties");
+        if (relyingPartiesAttr!=null) {
             if (relyingPartyPredicateClass == null) {
                 log.warn("Ignoring relyingParties setting due to class instantiation failure at startup");
                 return null;
             }
-            if (config.hasAttributeNS(null, "excludeRelyingParties")) {
+            if (excludeRelyingPartiesAttr!=null) {
                 log.warn("excludeRelyingParties ignored, using relyingParties");
             }
             assert relyingPartyPredicateClass != null;
             rpBuilder = BeanDefinitionBuilder.genericBeanDefinition(relyingPartyPredicateClass);
             rpBuilder.setFactoryMethod(RELYING_PARTIES_PREDICATE_METHOD);
             rpBuilder.addConstructorArgValue(
-                    SpringSupport.getAttributeValueAsList(config.getAttributeNodeNS(null, "relyingParties")));
-        } else if (config.hasAttributeNS(null, "excludeRelyingParties")) {
+                    SpringSupport.getAttributeValueAsList(relyingPartiesAttr));
+        } else if (excludeRelyingPartiesAttr != null) {
             if (relyingPartyPredicateClass == null) {
                 log.warn("Ignoring excludeRelyingParties setting due to class instantiation failure at startup");
                 return null;
@@ -169,27 +172,27 @@ public abstract class BaseResolverPluginParser extends AbstractCustomBeanDefinit
                     BeanDefinitionBuilder.genericBeanDefinition(relyingPartyPredicateClass);
             unnegated.setFactoryMethod(RELYING_PARTIES_PREDICATE_METHOD);
             unnegated.addConstructorArgValue(
-                    SpringSupport.getAttributeValueAsList(
-                            config.getAttributeNodeNS(null, "excludeRelyingParties")));
+                    SpringSupport.getAttributeValueAsList(excludeRelyingPartiesAttr));
             rpBuilder = BeanDefinitionBuilder.genericBeanDefinition(PredicateSupport.class);
             rpBuilder.setFactoryMethod("not");
             rpBuilder.addConstructorArgValue(unnegated.getBeanDefinition());
         }
         
-        if (config.hasAttributeNS(null, "resolutionPhases")) {
-            if (config.hasAttributeNS(null, "excludeResolutionPhases")) {
+        final Attr resolutionPhasesAttr = config.getAttributeNodeNS(null, "resolutionPhases");
+        final Attr excludeResolutionPhasesAttr = config.getAttributeNodeNS(null, "excludeResolutionPhases");
+        if (resolutionPhasesAttr!=null) {
+            if (excludeResolutionPhasesAttr!=null) {
                 log.warn("excludeResolutionPhases ignored, using resolutionPhases");
             }
             phasesBuilder = BeanDefinitionBuilder.genericBeanDefinition(ResolutionLabelPredicate.class);
             phasesBuilder.addConstructorArgValue(
-                    SpringSupport.getAttributeValueAsList(config.getAttributeNodeNS(null, "resolutionPhases")));
-        } else if (config.hasAttributeNS(null, "excludeResolutionPhases")) {
+                    SpringSupport.getAttributeValueAsList(resolutionPhasesAttr));
+        } else if (excludeResolutionPhasesAttr!=null) {
             final BeanDefinitionBuilder unnegated =
                     BeanDefinitionBuilder.genericBeanDefinition(ResolutionLabelPredicate.class);
             unnegated.setFactoryMethod("byList");
             unnegated.addConstructorArgValue(
-                    SpringSupport.getAttributeValueAsList(
-                            config.getAttributeNodeNS(null, "excludeResolutionPhases")));
+                    SpringSupport.getAttributeValueAsList(excludeResolutionPhasesAttr));
             phasesBuilder = BeanDefinitionBuilder.genericBeanDefinition(PredicateSupport.class);
             phasesBuilder.setFactoryMethod("not");
             phasesBuilder.addConstructorArgValue(unnegated.getBeanDefinition());
@@ -241,7 +244,9 @@ public abstract class BaseResolverPluginParser extends AbstractCustomBeanDefinit
      */
     @Nonnull @NotEmpty protected String getLogPrefix() {
         final StringBuilder builder = new StringBuilder("Unknown Plugin '").append(getDefinitionId()).append("':");
-        return builder.toString();
+        final String result = builder.toString();
+        assert result != null;
+        return result;
     }
 
 }
\ No newline at end of file
diff --git a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/BaseAttributeDefinitionParser.java b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/BaseAttributeDefinitionParser.java
index 627ce3fd1..0259b1cab 100644
--- a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/BaseAttributeDefinitionParser.java
+++ b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/BaseAttributeDefinitionParser.java
@@ -75,7 +75,9 @@ public abstract class BaseAttributeDefinitionParser extends BaseResolverPluginPa
     @Override @Nonnull @NotEmpty protected String getLogPrefix() {
         final StringBuilder builder = new StringBuilder("Attribute Definition '").append(getDefinitionId())
                 .append("':");
-        return builder.toString();
+        final String result = builder.toString();
+        assert result != null;
+        return result;
     }
     
 }
\ No newline at end of file
diff --git a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/AbstractDataConnectorParser.java b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/AbstractDataConnectorParser.java
index 5891126cc..398f7426b 100644
--- a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/AbstractDataConnectorParser.java
+++ b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/AbstractDataConnectorParser.java
@@ -25,6 +25,7 @@ import javax.xml.namespace.QName;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.support.BeanDefinitionBuilder;
 import org.springframework.beans.factory.xml.ParserContext;
+import org.w3c.dom.Attr;
 import org.w3c.dom.Element;
 
 import net.shibboleth.idp.attribute.resolver.spring.BaseResolverPluginParser;
@@ -91,9 +92,9 @@ public abstract class AbstractDataConnectorParser extends BaseResolverPluginPars
                     StringSupport.trimOrNull(config.getAttributeNS(null, ATTR_NORETRYDELAY)));
         }
 
-        if (config.hasAttributeNS(null, ATTR_EXPORT_NAMES)) {
-            builder.addPropertyValue("exportAttributes",
-                    SpringSupport.getAttributeValueAsList(config.getAttributeNodeNS(null, ATTR_EXPORT_NAMES)));
+        final Attr export = config.getAttributeNodeNS(null, ATTR_EXPORT_NAMES);
+        if (export!=null) {
+            builder.addPropertyValue("exportAttributes", SpringSupport.getAttributeValueAsList(export));
         }
 
     }
@@ -105,6 +106,8 @@ public abstract class AbstractDataConnectorParser extends BaseResolverPluginPars
      */
     @Override @Nonnull @NotEmpty protected String getLogPrefix() {
         final StringBuilder builder = new StringBuilder("Data Connector '").append(getDefinitionId()).append("':");
-        return builder.toString();
+        final String result = builder.toString();
+        assert result != null;
+        return result;
     }
 }
\ No newline at end of file
diff --git a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/http/impl/HTTPDataConnectorParser.java b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/http/impl/HTTPDataConnectorParser.java
index 539587336..13a44fb6a 100644
--- a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/http/impl/HTTPDataConnectorParser.java
+++ b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/http/impl/HTTPDataConnectorParser.java
@@ -31,6 +31,7 @@ import org.slf4j.Logger;
 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;
 
 import net.shibboleth.idp.attribute.resolver.dc.http.impl.HTTPDataConnector;
@@ -378,16 +379,17 @@ public class HTTPDataConnectorParser extends AbstractDataConnectorParser {
                 mapper.addPropertyValue("maxLength", maxLength);
             }
             
-            if (configElement.hasAttributeNS(null, "acceptStatuses")) {
+            final Attr acceptStatusesAttr = configElement.getAttributeNodeNS(null, "acceptStatuses");
+            if (acceptStatusesAttr!=null) {
                 mapper.addPropertyValue("acceptStatuses",
-                        SpringSupport.getAttributeValueAsList(
-                                configElement.getAttributeNodeNS(null, "acceptStatuses")));
+                        SpringSupport.getAttributeValueAsList(acceptStatusesAttr));
             }
 
-            if (configElement.hasAttributeNS(null, "acceptTypes")) {
+            final Attr acceptTypesAttr = configElement.getAttributeNodeNS(null, "acceptTypes");
+            
+            if (acceptTypesAttr!=null) {
                 mapper.addPropertyValue("acceptTypes",
-                        SpringSupport.getAttributeValueAsList(
-                                configElement.getAttributeNodeNS(null, "acceptTypes")));
+                        SpringSupport.getAttributeValueAsList(acceptTypesAttr));
             }
 
             return mapper.getBeanDefinition();
diff --git a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/CacheConfigParser.java b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/CacheConfigParser.java
index 831e255ea..3cc3cf387 100644
--- a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/CacheConfigParser.java
+++ b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/CacheConfigParser.java
@@ -212,8 +212,9 @@ public class CacheConfigParser {
             LoggerFactory.getLogger(ManagedConnectionParser.class).
             warn("<ResultCacheBean> is incompatible with <ResultCache>. The <ResultCacheBean> has been used");
         }
-        
-        return StringSupport.trimOrNull(ElementSupport.getElementContentAsString(beanResultCache.get(0)));
+        final Element elem = beanResultCache.get(0);
+        assert elem != null;
+        return StringSupport.trimOrNull(ElementSupport.getElementContentAsString(elem));
     }
 
 }
\ No newline at end of file
diff --git a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/StoredIdDataConnectorParser.java b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/StoredIdDataConnectorParser.java
index a3978b9d6..9e6d37c19 100644
--- a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/StoredIdDataConnectorParser.java
+++ b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/StoredIdDataConnectorParser.java
@@ -24,6 +24,7 @@ import org.slf4j.Logger;
 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;
 
 import net.shibboleth.idp.attribute.impl.JDBCPairwiseIdStore;
@@ -93,9 +94,10 @@ public class StoredIdDataConnectorParser extends ComputedIdDataConnectorParser {
                     StringSupport.trimOrNull(config.getAttributeNS(null, "failFastInitialize")));
         }
 
-        if (config.hasAttributeNS(null, "retryableErrors")) {
+        final Attr retryableErrorsAttr = config.getAttributeNodeNS(null, "retryableErrors");
+        if (retryableErrorsAttr!=null) {
             builder.addPropertyValue("retryableErrors",
-                    SpringSupport.getAttributeValueAsList(config.getAttributeNodeNS(null, "retryableErrors")));
+                    SpringSupport.getAttributeValueAsList(retryableErrorsAttr));
         }
 
         if (config.hasAttributeNS(null, "salt") || config.hasAttributeNS(null, "encodedSalt") ||

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the commits mailing list