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

noreply at shibboleth.net noreply at shibboleth.net
Thu Mar 17 07:27:37 EDT 2016


Author: rdw
Date: Thu Mar 17 07:27:37 2016
New Revision: 8164

URL: http://svn.shibboleth.net/view/java-identity-provider?rev=8164&view=rev
Log:
IDP-954 Add infrastructure to allow warns or fails on Dependencies

https://issues.shibboleth.net/jira/browse/IDP-954

Tests pending

Modified:
    trunk/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/BaseResolverPluginParser.java
    trunk/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/BaseAttributeDefinitionParser.java
    trunk/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/AbstractDataConnectorParser.java

Modified: trunk/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/BaseResolverPluginParser.java
URL: http://svn.shibboleth.net/view/java-identity-provider/trunk/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/BaseResolverPluginParser.java?rev=8164&r1=8163&r2=8164&view=diff
==============================================================================
--- trunk/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/BaseResolverPluginParser.java	(original)
+++ trunk/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/BaseResolverPluginParser.java	Thu Mar 17 07:27:37 2016
@@ -28,6 +28,7 @@
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.BeanCreationException;
 import org.springframework.beans.factory.support.BeanDefinitionBuilder;
 import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser;
 import org.springframework.beans.factory.xml.ParserContext;
@@ -55,7 +56,7 @@
     @Override protected void doParse(@Nonnull final Element config, @Nonnull final ParserContext parserContext,
             @Nonnull final BeanDefinitionBuilder builder) {
         super.doParse(config, parserContext, builder);
-        String id = StringSupport.trimOrNull(config.getAttributeNS(null, "id"));
+        final String id = StringSupport.trimOrNull(config.getAttributeNS(null, "id"));
         log.info("Parsing configuration for {} plugin with id: {}", config.getLocalName(), id);
         builder.addPropertyValue("id", id);
         if (null != id) {
@@ -76,6 +77,48 @@
 
         final List<Element> dependencyElements =
                 ElementSupport.getChildElements(config, ResolverPluginDependencyParser.ELEMENT_NAME);
+        if (null != dependencyElements && !dependencyElements.isEmpty()) {
+            if (failOnDependencies()) {
+                log.error("{} Dependencies are not allowed.", getLogPrefix());
+                throw new BeanCreationException(getLogPrefix() + " has meaningless Dependencies statements");
+            }
+            if (warnOnDependencies()) {
+                log.warn("{} Dependencies are not allowed.", getLogPrefix());
+            }
+        }
         builder.addPropertyValue("dependencies", SpringSupport.parseCustomElements(dependencyElements, parserContext));
     }
+    
+    /** Controls parsing of Dependencies. 
+     * 
+     * If it is considered an invalid configuration for this resolver to have Dependency statements, return true. 
+     * The surrounding logic will fail the parse.
+     * @return false - by default.
+     */
+    protected boolean failOnDependencies() {
+        return false;
+    }
+
+    /** Controls parsing of Dependencies. 
+     * 
+     * If it is considered an invalid configuration for this resolver to have Dependency statements, return true. 
+     * The surrounding logic will issue warning.
+     * @return false - by default.
+     */
+    protected boolean warnOnDependencies() {
+        return false;
+    }
+
+    /**
+     * Return a string which is to be prepended to all log messages.
+     * 
+     * This is always overridden by upper parsers, but to leave this abstract would break compatibility
+     * 
+     * @return a basic prefix.
+     */
+    @Nonnull @NotEmpty protected String getLogPrefix() {
+        final StringBuilder builder = new StringBuilder("Unknown Plugin '").append(getDefinitionId()).append("':");
+        return builder.toString();
+    }
+
 }

Modified: trunk/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/BaseAttributeDefinitionParser.java
URL: http://svn.shibboleth.net/view/java-identity-provider/trunk/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/BaseAttributeDefinitionParser.java?rev=8164&r1=8163&r2=8164&view=diff
==============================================================================
--- trunk/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/BaseAttributeDefinitionParser.java	(original)
+++ trunk/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/BaseAttributeDefinitionParser.java	Thu Mar 17 07:27:37 2016
@@ -83,7 +83,7 @@
         }
 

[... 74 lines stripped ...]


More information about the commits mailing list