[java-identity-provider] 08/10: IDP-1429 Deprecate ignoreCase for StringPolicy Parser

Rod Widdowson rdw at steadingsoftware.com
Thu Apr 11 09:00:00 EDT 2019


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

rdw pushed a commit to branch master
in repository java-identity-provider.

View the commit online:
http://git.shibboleth.net/view/?p=java-identity-provider.git;a=commit;h=192076f2919c0d91ea192cfe8aeb089ae8401173

commit 192076f2919c0d91ea192cfe8aeb089ae8401173
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Wed Apr 10 15:27:15 2019 +0100

    IDP-1429 Deprecate ignoreCase for StringPolicy Parser
    
    https://issues.shibboleth.net/jira/browse/IDP-1429
    
    replacement is caseSensitive
---
 .../impl/AbstractStringPolicyRuleParser.java       | 32 ++++++++++++++---
 .../policy/AttributeIssuerRuleParserTest.java      |  5 ++-
 .../policy/AttributeRequesterRuleParserTest.java   | 41 ++++++++++++++++++++++
 .../policy/ProxiedRequesterRuleParserTest.java     |  3 +-
 .../filter/policyrule/attributeIssuer.xml          |  3 +-
 .../filter/policyrule/attributeRequester.xml       |  2 +-
 ...uteRequester.xml => attributeRequesterBoth.xml} |  2 +-
 ...Requester.xml => attributeRequesterDefault.xml} |  2 +-
 ...uester.xml => attributeRequesterDeprecated.xml} |  0
 .../filter/policyrule/proxiedRequester.xml         |  2 +-
 10 files changed, 76 insertions(+), 16 deletions(-)

diff --git a/idp-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/policyrule/impl/AbstractStringPolicyRuleParser.java b/idp-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/policyrule/impl/AbstractStringPolicyRuleParser.java
index 27ec5bd..ff51560 100644
--- a/idp-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/policyrule/impl/AbstractStringPolicyRuleParser.java
+++ b/idp-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/policyrule/impl/AbstractStringPolicyRuleParser.java
@@ -19,18 +19,25 @@ package net.shibboleth.idp.attribute.filter.spring.policyrule.impl;
 
 import javax.annotation.Nonnull;
 
-import net.shibboleth.idp.attribute.filter.spring.policyrule.BasePolicyRuleParser;
-import net.shibboleth.utilities.java.support.primitive.StringSupport;
-
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.support.BeanDefinitionBuilder;
 import org.springframework.beans.factory.xml.ParserContext;
 import org.w3c.dom.Element;
 
+import net.shibboleth.idp.attribute.filter.spring.policyrule.BasePolicyRuleParser;
+import net.shibboleth.utilities.java.support.primitive.DeprecationSupport;
+import net.shibboleth.utilities.java.support.primitive.DeprecationSupport.ObjectType;
+import net.shibboleth.utilities.java.support.primitive.StringSupport;
+
 /**
  * Base class for string matching functors of natural type PolicyRule.
  */
 public abstract class AbstractStringPolicyRuleParser extends BasePolicyRuleParser {
 
+    /** Logger. */
+    private final Logger log = LoggerFactory.getLogger(AbstractStringPolicyRuleParser.class);
+
     /** {@inheritDoc} */
     @Override protected void doNativeParse(@Nonnull final Element element, @Nonnull final ParserContext parserContext,
             @Nonnull final BeanDefinitionBuilder builder) {
@@ -38,8 +45,23 @@ public abstract class AbstractStringPolicyRuleParser extends BasePolicyRuleParse
 
         builder.addPropertyValue("matchString", StringSupport.trimOrNull(element.getAttributeNS(null, "value")));
 
-        if (element.hasAttributeNS(null, "ignoreCase")) {
-            builder.addPropertyValue("ignoreCase", element.getAttributeNS(null, "ignoreCase"));
+        if (element.hasAttributeNS(null, "caseSensitive")) {
+            if (element.hasAttributeNS(null, "ignoreCase")) {
+                log.warn("{} \"caseSensitive\" and \"ignoreCase\" specified, \"caseSensitive\" used ",
+                        parserContext.getReaderContext().getResource().getDescription());
+            }
+
+            builder.addPropertyValue("caseSensitive", 
+                    StringSupport.trimOrNull(element.getAttributeNS(null, "caseSensitive")));
+        
+        } else if (element.hasAttributeNS(null, "ignoreCase")) {
+            DeprecationSupport.warnOnce(ObjectType.ELEMENT,
+                    "ignoreCase",
+                    parserContext.getReaderContext().getResource().getDescription(),
+                    "caseSensitive");
+                    
+            builder.addPropertyValue("ignoreCase", 
+                    StringSupport.trimOrNull(element.getAttributeNS(null, "ignoreCase")));
         }
     }
 }
\ No newline at end of file
diff --git a/idp-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/policy/AttributeIssuerRuleParserTest.java b/idp-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/policy/AttributeIssuerRuleParserTest.java
index 86d3aa3..ef6cf3c 100644
--- a/idp-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/policy/AttributeIssuerRuleParserTest.java
+++ b/idp-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/policy/AttributeIssuerRuleParserTest.java
@@ -18,7 +18,7 @@
 package net.shibboleth.idp.attribute.filter.spring.policy;
 
 import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertTrue;
+import static org.testng.Assert.assertFalse;
 
 import org.testng.annotations.Test;
 
@@ -43,7 +43,6 @@ public class AttributeIssuerRuleParserTest extends BaseAttributeFilterParserTest
 
         final AttributeIssuerPolicyRule arRule = (AttributeIssuerPolicyRule) rule;
         assertEquals(arRule.getMatchString(), "urn:example:org:idp:foo");
-        assertTrue(arRule.isIgnoreCase());
+        assertFalse(arRule.isCaseSensitive());
     }
-
 }
diff --git a/idp-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/policy/AttributeRequesterRuleParserTest.java b/idp-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/policy/AttributeRequesterRuleParserTest.java
index 596a7a2..5a77fa5 100644
--- a/idp-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/policy/AttributeRequesterRuleParserTest.java
+++ b/idp-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/policy/AttributeRequesterRuleParserTest.java
@@ -68,8 +68,49 @@ public class AttributeRequesterRuleParserTest extends BaseAttributeFilterParserT
 
         final AttributeRequesterPolicyRule arRule = (AttributeRequesterPolicyRule) rule;
         assertEquals(arRule.getMatchString(), "https://service.example.edu/shibboleth-sp");
+        assertTrue(arRule.isCaseSensitive());
+    }
+    
+    @Test public void both() throws ComponentInitializationException {
+        final PolicyRequirementRule rule = getPolicyRule("attributeRequesterBoth.xml");
+
+        AttributeFilterContext filterContext = DataSources.populatedFilterContext("principal", "issuer", "http://example.org");
+        assertEquals(rule.matches(filterContext), Tristate.FALSE);
+        filterContext = DataSources.populatedFilterContext("principal", "issuer", "https://service.example.edu/shibboleth-sp");
+        assertEquals(rule.matches(filterContext), Tristate.TRUE);
+
+        final AttributeRequesterPolicyRule arRule = (AttributeRequesterPolicyRule) rule;
+        assertEquals(arRule.getMatchString(), "https://service.example.edu/shibboleth-sp");
+        assertFalse(arRule.isCaseSensitive());
+    }
+    
+    @SuppressWarnings("deprecation")
+    @Test public void deprecated() throws ComponentInitializationException {
+        final PolicyRequirementRule rule = getPolicyRule("attributeRequesterDeprecated.xml");
+
+        AttributeFilterContext filterContext = DataSources.populatedFilterContext("principal", "issuer", "http://example.org");
+        assertEquals(rule.matches(filterContext), Tristate.FALSE);
+        filterContext = DataSources.populatedFilterContext("principal", "issuer", "https://service.example.edu/shibboleth-sp");
+        assertEquals(rule.matches(filterContext), Tristate.TRUE);
+
+        final AttributeRequesterPolicyRule arRule = (AttributeRequesterPolicyRule) rule;
+        assertEquals(arRule.getMatchString(), "https://service.example.edu/shibboleth-sp");
         assertFalse(arRule.isIgnoreCase());
     }
+
+    @Test public void testDefault() throws ComponentInitializationException {
+        final PolicyRequirementRule rule = getPolicyRule("attributeRequesterDefault.xml");
+
+        AttributeFilterContext filterContext = DataSources.populatedFilterContext("principal", "issuer", "http://example.org");
+        assertEquals(rule.matches(filterContext), Tristate.FALSE);
+        filterContext = DataSources.populatedFilterContext("principal", "issuer", "https://service.example.edu/shibboleth-sp");
+        assertEquals(rule.matches(filterContext), Tristate.TRUE);
+
+        final AttributeRequesterPolicyRule arRule = (AttributeRequesterPolicyRule) rule;
+        assertEquals(arRule.getMatchString(), "https://service.example.edu/shibboleth-sp");
+        assertTrue(arRule.isCaseSensitive());
+    }
+
  
     @Test public void matcher() throws ComponentInitializationException {
         final Matcher matcher = getMatcher("attributeRequester.xml");
diff --git a/idp-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/policy/ProxiedRequesterRuleParserTest.java b/idp-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/policy/ProxiedRequesterRuleParserTest.java
index e5ff867..1b14d99 100644
--- a/idp-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/policy/ProxiedRequesterRuleParserTest.java
+++ b/idp-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/policy/ProxiedRequesterRuleParserTest.java
@@ -18,7 +18,6 @@
 package net.shibboleth.idp.attribute.filter.spring.policy;
 
 import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
 import static org.testng.Assert.assertTrue;
 
 import java.util.Arrays;
@@ -66,7 +65,7 @@ public class ProxiedRequesterRuleParserTest extends BaseAttributeFilterParserTes
 
         final ProxiedRequesterPolicyRule arRule = (ProxiedRequesterPolicyRule) rule;
         assertEquals(arRule.getMatchString(), "https://service.example.edu/shibboleth-sp");
-        assertFalse(arRule.isIgnoreCase());
+        assertTrue(arRule.isCaseSensitive());
     }
  
     @Test public void matcher() throws ComponentInitializationException {
diff --git a/idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/attributeIssuer.xml b/idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/attributeIssuer.xml
index f9240fb..641ae03 100644
--- a/idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/attributeIssuer.xml
+++ b/idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/attributeIssuer.xml
@@ -1,5 +1,4 @@
 <AttributeFilterPolicy id="MostBasicExample" xmlns="urn:mace:shibboleth:2.0:afp" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="urn:mace:shibboleth:2.0:afp http://shibboleth.net/schema/idp/shibboleth-afp.xsd">
-    <PolicyRequirementRule xsi:type="Issuer" value="urn:example:org:idp:foo"
-        ignoreCase="true" />
+    <PolicyRequirementRule xsi:type="Issuer" value="urn:example:org:idp:foo" caseSensitive="false" />
 </AttributeFilterPolicy>
diff --git a/idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/attributeRequester.xml b/idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/attributeRequester.xml
index 4531c4d..a853559 100644
--- a/idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/attributeRequester.xml
+++ b/idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/attributeRequester.xml
@@ -1,4 +1,4 @@
 <AttributeFilterPolicy id="MostBasicExample" xmlns="urn:mace:shibboleth:2.0:afp" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="urn:mace:shibboleth:2.0:afp http://shibboleth.net/schema/idp/shibboleth-afp.xsd" >
-	<PolicyRequirementRule xsi:type="Requester" value="https://service.example.edu/shibboleth-sp" ignoreCase="false" />
+	<PolicyRequirementRule xsi:type="Requester" value="https://service.example.edu/shibboleth-sp" caseSensitive="true" />
 </AttributeFilterPolicy>
diff --git a/idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/attributeRequester.xml b/idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/attributeRequesterBoth.xml
similarity index 81%
copy from idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/attributeRequester.xml
copy to idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/attributeRequesterBoth.xml
index 4531c4d..feec6dc 100644
--- a/idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/attributeRequester.xml
+++ b/idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/attributeRequesterBoth.xml
@@ -1,4 +1,4 @@
 <AttributeFilterPolicy id="MostBasicExample" xmlns="urn:mace:shibboleth:2.0:afp" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="urn:mace:shibboleth:2.0:afp http://shibboleth.net/schema/idp/shibboleth-afp.xsd" >
-	<PolicyRequirementRule xsi:type="Requester" value="https://service.example.edu/shibboleth-sp" ignoreCase="false" />
+	<PolicyRequirementRule xsi:type="Requester" value="https://service.example.edu/shibboleth-sp" ignoreCase="false" caseSensitive="false"/>
 </AttributeFilterPolicy>
diff --git a/idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/attributeRequester.xml b/idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/attributeRequesterDefault.xml
similarity index 86%
copy from idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/attributeRequester.xml
copy to idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/attributeRequesterDefault.xml
index 4531c4d..4e34d85 100644
--- a/idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/attributeRequester.xml
+++ b/idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/attributeRequesterDefault.xml
@@ -1,4 +1,4 @@
 <AttributeFilterPolicy id="MostBasicExample" xmlns="urn:mace:shibboleth:2.0:afp" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="urn:mace:shibboleth:2.0:afp http://shibboleth.net/schema/idp/shibboleth-afp.xsd" >
-	<PolicyRequirementRule xsi:type="Requester" value="https://service.example.edu/shibboleth-sp" ignoreCase="false" />
+	<PolicyRequirementRule xsi:type="Requester" value="https://service.example.edu/shibboleth-sp" />
 </AttributeFilterPolicy>
diff --git a/idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/attributeRequester.xml b/idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/attributeRequesterDeprecated.xml
similarity index 100%
copy from idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/attributeRequester.xml
copy to idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/attributeRequesterDeprecated.xml
diff --git a/idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/proxiedRequester.xml b/idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/proxiedRequester.xml
index 03b4392..fc0c377 100644
--- a/idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/proxiedRequester.xml
+++ b/idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/proxiedRequester.xml
@@ -1,4 +1,4 @@
 <AttributeFilterPolicy id="MostBasicExample" xmlns="urn:mace:shibboleth:2.0:afp" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="urn:mace:shibboleth:2.0:afp http://shibboleth.net/schema/idp/shibboleth-afp.xsd" >
-	<PolicyRequirementRule xsi:type="ProxiedRequester" value="https://service.example.edu/shibboleth-sp" ignoreCase="false" />
+	<PolicyRequirementRule xsi:type="ProxiedRequester" value="https://service.example.edu/shibboleth-sp" caseSensitive="true" />
 </AttributeFilterPolicy>

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


More information about the commits mailing list