[java-shib-attribute] branch main updated: JSSH-5 ServiceableComponent should implement AutoClose
Rod Widdowson
rdw at steadingsoftware.com
Fri Nov 25 14:29:54 UTC 2022
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=54a35408bce5514759c048cdef47a3320175664d
The following commit(s) were added to refs/heads/main by this push:
new 54a35408b JSSH-5 ServiceableComponent should implement AutoClose
54a35408b is described below
commit 54a35408bce5514759c048cdef47a3320175664d
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Fri Nov 25 13:55:25 2022 +0000
JSSH-5 ServiceableComponent should implement AutoClose
https://shibboleth.atlassian.net/browse/JSSH-5
AttributeFilterImpl is no longer a ServiceableComponent
---
.../attribute/filter/impl/AttributeFilterImpl.java | 8 +-
.../impl/TargettedAttributeValueFilterTest.java | 159 ++++++------
.../impl/UntargettedAttributeValueFilterTest.java | 62 ++---
.../filter/impl/AttributeFilterImplTest.java | 271 ++++++++-------------
.../policyrule/saml/impl/BaseMetadataTests.java | 3 +-
.../impl/AttributeFilterServiceStrategy.java | 16 +-
.../filter/spring/AttributeFilterServiceTest.java | 15 +-
7 files changed, 225 insertions(+), 309 deletions(-)
diff --git a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/impl/AttributeFilterImpl.java b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/impl/AttributeFilterImpl.java
index 75fc9abcd..2fe7618c8 100644
--- a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/impl/AttributeFilterImpl.java
+++ b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/impl/AttributeFilterImpl.java
@@ -44,13 +44,14 @@ import net.shibboleth.idp.attribute.filter.context.AttributeFilterWorkContext;
import net.shibboleth.shared.annotation.constraint.NonnullElements;
import net.shibboleth.shared.annotation.constraint.NotEmpty;
import net.shibboleth.shared.annotation.constraint.Unmodifiable;
+import net.shibboleth.shared.component.AbstractIdentifiableInitializableComponent;
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.logic.Constraint;
import net.shibboleth.shared.spring.service.AbstractServiceableComponent;
/** Service that filters out attributes and values based upon loaded policies. */
@ThreadSafe
-public class AttributeFilterImpl extends AbstractServiceableComponent<AttributeFilter> implements AttributeFilter {
+public class AttributeFilterImpl extends AbstractIdentifiableInitializableComponent implements AttributeFilter {
/** Class logger. */
@Nonnull private final Logger log = LoggerFactory.getLogger(AttributeFilterImpl.class);
@@ -208,11 +209,6 @@ public class AttributeFilterImpl extends AbstractServiceableComponent<AttributeF
return result;
}
- /** {@inheritDoc} */
- @Override @Nonnull public AttributeFilter getComponent() {
- return this;
- }
-
/**
* Conditionally start a timer at the beginning of the filtering process.
*
diff --git a/shib-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/complex/impl/TargettedAttributeValueFilterTest.java b/shib-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/complex/impl/TargettedAttributeValueFilterTest.java
index 95898ca53..40b84441f 100644
--- a/shib-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/complex/impl/TargettedAttributeValueFilterTest.java
+++ b/shib-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/complex/impl/TargettedAttributeValueFilterTest.java
@@ -42,7 +42,6 @@ import net.shibboleth.idp.attribute.filter.matcher.logic.impl.NotMatcher;
import net.shibboleth.idp.attribute.filter.matcher.logic.impl.NotMatcherTest;
import net.shibboleth.idp.attribute.resolver.ResolutionException;
import net.shibboleth.shared.component.ComponentInitializationException;
-import net.shibboleth.shared.testing.MockApplicationContext;
/**
* Complex test for AttributeRuleFilters when the rule is targeted
@@ -98,36 +97,30 @@ public class TargettedAttributeValueFilterTest extends BaseComplexAttributeFilte
new AttributeFilterPolicy("targettedAtPermit", PolicyRequirementRule.MATCHES_ALL,
Collections.singleton(attributeValueFilterPolicy));
- try (final AttributeFilterImpl engine = new AttributeFilterImpl("engine", Collections.singleton(policy))) {
-
- // TODO: this seems off but is needed to allow try-with-resources while also unlocking.
- engine.pinComponent();
-
- engine.setApplicationContext(new MockApplicationContext());
-
- attributeValueFilterPolicy.initialize();
- policy.initialize();
- engine.initialize();
-
- AttributeFilterContext context = new AttributeFilterContext();
- context.setPrefilteredIdPAttributes(getIdPAttributes("epa-uidwithjsmith.xml").values());
- engine.filterAttributes(context);
- Map<String, IdPAttribute> attributes = context.getFilteredIdPAttributes();
- final IdPAttribute attribute = attributes.get("eduPersonAffiliation");
- assertEquals(attribute.getValues().size(), 3);
-
- context = new AttributeFilterContext();
- context.setPrefilteredIdPAttributes(getIdPAttributes("uid-epawithjsmith.xml").values());
- engine.filterAttributes(context);
- attributes = context.getFilteredIdPAttributes();
- assertNull(attributes.get("eduPersonAffiliation"));
-
- context = new AttributeFilterContext();
- context.setPrefilteredIdPAttributes(getIdPAttributes("epa-uid.xml").values());
- engine.filterAttributes(context);
- attributes = context.getFilteredIdPAttributes();
- assertNull(attributes.get("eduPersonAffiliation"));
- }
+ final AttributeFilterImpl engine = new AttributeFilterImpl("engine", Collections.singleton(policy));
+
+ attributeValueFilterPolicy.initialize();
+ policy.initialize();
+ engine.initialize();
+
+ AttributeFilterContext context = new AttributeFilterContext();
+ context.setPrefilteredIdPAttributes(getIdPAttributes("epa-uidwithjsmith.xml").values());
+ engine.filterAttributes(context);
+ Map<String, IdPAttribute> attributes = context.getFilteredIdPAttributes();
+ final IdPAttribute attribute = attributes.get("eduPersonAffiliation");
+ assertEquals(attribute.getValues().size(), 3);
+
+ context = new AttributeFilterContext();
+ context.setPrefilteredIdPAttributes(getIdPAttributes("uid-epawithjsmith.xml").values());
+ engine.filterAttributes(context);
+ attributes = context.getFilteredIdPAttributes();
+ assertNull(attributes.get("eduPersonAffiliation"));
+
+ context = new AttributeFilterContext();
+ context.setPrefilteredIdPAttributes(getIdPAttributes("epa-uid.xml").values());
+ engine.filterAttributes(context);
+ attributes = context.getFilteredIdPAttributes();
+ assertNull(attributes.get("eduPersonAffiliation"));
}
/**
@@ -171,36 +164,30 @@ public class TargettedAttributeValueFilterTest extends BaseComplexAttributeFilte
new AttributeFilterPolicy("targettedAtPermit", PolicyRequirementRule.MATCHES_ALL,
Collections.singleton(attributeValueFilterPolicy));
- try (final AttributeFilterImpl engine = new AttributeFilterImpl("engine", Collections.singleton(policy))) {
-
- // TODO: this seems off but is needed to allow try-with-resources while also unlocking.
- engine.pinComponent();
-
- engine.setApplicationContext(new MockApplicationContext());
+ final AttributeFilterImpl engine = new AttributeFilterImpl("engine", Collections.singleton(policy));
- attributeValueFilterPolicy.initialize();
- policy.initialize();
- engine.initialize();
+ attributeValueFilterPolicy.initialize();
+ policy.initialize();
+ engine.initialize();
- AttributeFilterContext context = new AttributeFilterContext();
- context.setPrefilteredIdPAttributes(getIdPAttributes("epa-uidwithjsmith.xml").values());
- engine.filterAttributes(context);
- Map<String, IdPAttribute> attributes = context.getFilteredIdPAttributes();
- final IdPAttribute attribute = attributes.get("eduPersonAffiliation");
- assertEquals(attribute.getValues().size(), 3);
-
- context = new AttributeFilterContext();
- context.setPrefilteredIdPAttributes(getIdPAttributes("uid-epawithjsmith.xml").values());
- engine.filterAttributes(context);
- attributes = context.getFilteredIdPAttributes();
- assertEquals(attribute.getValues().size(), 3);
-
- context = new AttributeFilterContext();
- context.setPrefilteredIdPAttributes(getIdPAttributes("epa-uid.xml").values());
- engine.filterAttributes(context);
- attributes = context.getFilteredIdPAttributes();
- assertEquals(attribute.getValues().size(), 3);
- }
+ AttributeFilterContext context = new AttributeFilterContext();
+ context.setPrefilteredIdPAttributes(getIdPAttributes("epa-uidwithjsmith.xml").values());
+ engine.filterAttributes(context);
+ Map<String, IdPAttribute> attributes = context.getFilteredIdPAttributes();
+ final IdPAttribute attribute = attributes.get("eduPersonAffiliation");
+ assertEquals(attribute.getValues().size(), 3);
+
+ context = new AttributeFilterContext();
+ context.setPrefilteredIdPAttributes(getIdPAttributes("uid-epawithjsmith.xml").values());
+ engine.filterAttributes(context);
+ attributes = context.getFilteredIdPAttributes();
+ assertEquals(attribute.getValues().size(), 3);
+
+ context = new AttributeFilterContext();
+ context.setPrefilteredIdPAttributes(getIdPAttributes("epa-uid.xml").values());
+ engine.filterAttributes(context);
+ attributes = context.getFilteredIdPAttributes();
+ assertEquals(attribute.getValues().size(), 3);
}
/**
@@ -235,36 +222,30 @@ public class TargettedAttributeValueFilterTest extends BaseComplexAttributeFilte
final AttributeFilterPolicy policy =
new AttributeFilterPolicy("targettedAtPermit", rule, Collections.singleton(attributeValueFilterPolicy));
- try (final AttributeFilterImpl engine = new AttributeFilterImpl("engine", Collections.singleton(policy))) {
-
- // TODO: this seems off but is needed to allow try-with-resources while also unlocking.
- engine.pinComponent();
-
- engine.setApplicationContext(new MockApplicationContext());
-
- attributeValueFilterPolicy.initialize();
- policy.initialize();
- engine.initialize();
-
- AttributeFilterContext context = new AttributeFilterContext();
- context.setPrefilteredIdPAttributes(getIdPAttributes("epa-uidwithjsmith.xml").values());
- engine.filterAttributes(context);
- Map<String, IdPAttribute> attributes = context.getFilteredIdPAttributes();
- final IdPAttribute attribute = attributes.get("eduPersonAffiliation");
- assertEquals(attribute.getValues().size(), 3);
-
- context = new AttributeFilterContext();
- context.setPrefilteredIdPAttributes(getIdPAttributes("uid-epawithjsmith.xml").values());
- engine.filterAttributes(context);
- attributes = context.getFilteredIdPAttributes();
- assertNull(attributes.get("eduPersonAffiliation"));
-
- context = new AttributeFilterContext();
- context.setPrefilteredIdPAttributes(getIdPAttributes("epa-uid.xml").values());
- engine.filterAttributes(context);
- attributes = context.getFilteredIdPAttributes();
- assertNull(attributes.get("eduPersonAffiliation"));
- }
+ final AttributeFilterImpl engine = new AttributeFilterImpl("engine", Collections.singleton(policy));
+
+ attributeValueFilterPolicy.initialize();
+ policy.initialize();
+ engine.initialize();
+
+ AttributeFilterContext context = new AttributeFilterContext();
+ context.setPrefilteredIdPAttributes(getIdPAttributes("epa-uidwithjsmith.xml").values());
+ engine.filterAttributes(context);
+ Map<String, IdPAttribute> attributes = context.getFilteredIdPAttributes();
+ final IdPAttribute attribute = attributes.get("eduPersonAffiliation");
+ assertEquals(attribute.getValues().size(), 3);
+
+ context = new AttributeFilterContext();
+ context.setPrefilteredIdPAttributes(getIdPAttributes("uid-epawithjsmith.xml").values());
+ engine.filterAttributes(context);
+ attributes = context.getFilteredIdPAttributes();
+ assertNull(attributes.get("eduPersonAffiliation"));
+
+ context = new AttributeFilterContext();
+ context.setPrefilteredIdPAttributes(getIdPAttributes("epa-uid.xml").values());
+ engine.filterAttributes(context);
+ attributes = context.getFilteredIdPAttributes();
+ assertNull(attributes.get("eduPersonAffiliation"));
}
}
diff --git a/shib-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/complex/impl/UntargettedAttributeValueFilterTest.java b/shib-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/complex/impl/UntargettedAttributeValueFilterTest.java
index a0cefc683..8f14e9859 100644
--- a/shib-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/complex/impl/UntargettedAttributeValueFilterTest.java
+++ b/shib-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/complex/impl/UntargettedAttributeValueFilterTest.java
@@ -39,7 +39,6 @@ import net.shibboleth.idp.attribute.filter.impl.AttributeFilterImpl;
import net.shibboleth.idp.attribute.filter.matcher.impl.AttributeValueStringMatcher;
import net.shibboleth.idp.attribute.resolver.ResolutionException;
import net.shibboleth.shared.component.ComponentInitializationException;
-import net.shibboleth.shared.testing.MockApplicationContext;
/**
* Complex test for AttributeRuleFilters when the rule is targeted
@@ -92,36 +91,29 @@ public class UntargettedAttributeValueFilterTest extends BaseComplexAttributeFil
new AttributeFilterPolicy("targettedAtPermit", PolicyRequirementRule.MATCHES_ALL,
Collections.singleton(attributeValueFilterPolicy));
- try (final AttributeFilterImpl engine = new AttributeFilterImpl("engine", Collections.singleton(policy))) {
-
- // TODO: this seems off but is needed to allow try-with-resources while also unlocking.
- engine.pinComponent();
-
- engine.setApplicationContext(new MockApplicationContext());
-
- attributeValueFilterPolicy.initialize();
- policy.initialize();
- engine.initialize();
-
- AttributeFilterContext context = new AttributeFilterContext();
- context.setPrefilteredIdPAttributes(getIdPAttributes("epa-uidwithjsmith.xml").values());
- engine.filterAttributes(context);
- Map<String, IdPAttribute> attributes = context.getFilteredIdPAttributes();
- assertNull(attributes.get("eduPersonAffiliation"));
-
- context = new AttributeFilterContext();
- context.setPrefilteredIdPAttributes(getIdPAttributes("uid-epawithjsmith.xml").values());
- engine.filterAttributes(context);
- attributes = context.getFilteredIdPAttributes();
- IdPAttribute attribute = attributes.get("eduPersonAffiliation");
- assertEquals(attribute.getValues().size(), 1);
-
- context = new AttributeFilterContext();
- context.setPrefilteredIdPAttributes(getIdPAttributes("epa-uid.xml").values());
- engine.filterAttributes(context);
- attributes = context.getFilteredIdPAttributes();
- assertNull(attributes.get("eduPersonAffiliation"));
- }
+ final AttributeFilterImpl engine = new AttributeFilterImpl("engine", Collections.singleton(policy));
+ attributeValueFilterPolicy.initialize();
+ policy.initialize();
+ engine.initialize();
+
+ AttributeFilterContext context = new AttributeFilterContext();
+ context.setPrefilteredIdPAttributes(getIdPAttributes("epa-uidwithjsmith.xml").values());
+ engine.filterAttributes(context);
+ Map<String, IdPAttribute> attributes = context.getFilteredIdPAttributes();
+ assertNull(attributes.get("eduPersonAffiliation"));
+
+ context = new AttributeFilterContext();
+ context.setPrefilteredIdPAttributes(getIdPAttributes("uid-epawithjsmith.xml").values());
+ engine.filterAttributes(context);
+ attributes = context.getFilteredIdPAttributes();
+ IdPAttribute attribute = attributes.get("eduPersonAffiliation");
+ assertEquals(attribute.getValues().size(), 1);
+
+ context = new AttributeFilterContext();
+ context.setPrefilteredIdPAttributes(getIdPAttributes("epa-uid.xml").values());
+ engine.filterAttributes(context);
+ attributes = context.getFilteredIdPAttributes();
+ assertNull(attributes.get("eduPersonAffiliation"));
}
/**
@@ -155,13 +147,8 @@ public class UntargettedAttributeValueFilterTest extends BaseComplexAttributeFil
final AttributeFilterPolicy policy =
new AttributeFilterPolicy("targettedAtPermit", rule, Collections.singleton(attributeValueFilterPolicy));
- try (final AttributeFilterImpl engine = new AttributeFilterImpl("engine", Collections.singleton(policy))) {
-
- // TODO: this seems off but is needed to allow try-with-resources while also unlocking.
- engine.pinComponent();
+ final AttributeFilterImpl engine = new AttributeFilterImpl("engine", Collections.singleton(policy));
- engine.setApplicationContext(new MockApplicationContext());
-
attributeValueFilterPolicy.initialize();
policy.initialize();
engine.initialize();
@@ -184,7 +171,6 @@ public class UntargettedAttributeValueFilterTest extends BaseComplexAttributeFil
engine.filterAttributes(context);
attributes = context.getFilteredIdPAttributes();
assertNull(attributes.get("eduPersonAffiliation"));
- }
}
}
\ No newline at end of file
diff --git a/shib-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/impl/AttributeFilterImplTest.java b/shib-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/impl/AttributeFilterImplTest.java
index 20016a5fc..215cac3f4 100644
--- a/shib-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/impl/AttributeFilterImplTest.java
+++ b/shib-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/impl/AttributeFilterImplTest.java
@@ -38,7 +38,6 @@ import net.shibboleth.idp.attribute.filter.testing.MockMatcher;
import net.shibboleth.idp.attribute.filter.testing.MockPolicyRequirementRule;
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.logic.ConstraintViolationException;
-import net.shibboleth.shared.testing.MockApplicationContext;
/** Unit test for {@link AttributeFilter}. */
@SuppressWarnings("javadoc")
@@ -50,23 +49,21 @@ public class AttributeFilterImplTest {
* @throws Exception if something goes wrong
*/
@Test public void testPostConstructionState() throws Exception {
- try (final AttributeFilterImpl filter = new AttributeFilterImpl("engine", Collections.emptyList())) {
+ final AttributeFilterImpl filter = new AttributeFilterImpl("engine", Collections.emptyList());
- // TODO: this seems off but is needed to allow try-with-resources while also unlocking.
- filter.pinComponent();
-
- Assert.assertNotNull(filter.getFilterPolicies());
- Assert.assertTrue(filter.getFilterPolicies().isEmpty());
- Assert.assertEquals(filter.getId(), "engine");
- }
+ Assert.assertNotNull(filter.getFilterPolicies());
+ Assert.assertTrue(filter.getFilterPolicies().isEmpty());
+ Assert.assertEquals(filter.getId(), "engine");
- try (final AttributeFilterImpl engine = new AttributeFilterImpl(" ", null)) {
+ try {
+ final AttributeFilterImpl engine = new AttributeFilterImpl(" ", null);
Assert.fail();
} catch (final ConstraintViolationException e) {
// expected
}
- try (final AttributeFilterImpl engine = new AttributeFilterImpl("", null)) {
+ try {
+ final AttributeFilterImpl engine = new AttributeFilterImpl("", null);
Assert.fail();
} catch (final ConstraintViolationException e) {
// expected
@@ -83,44 +80,34 @@ public class AttributeFilterImplTest {
AttributeFilterPolicy policy2 = new AttributeFilterPolicy("policy2", PolicyRequirementRule.MATCHES_NONE, null);
AttributeFilterPolicy policy3 = new AttributeFilterPolicy("policy3", PolicyRequirementRule.MATCHES_NONE, null);
- try (final AttributeFilterImpl filter = new AttributeFilterImpl("engine", Arrays.asList(policy1, policy1, policy2))) {
+ AttributeFilterImpl filter = new AttributeFilterImpl("engine", Arrays.asList(policy1, policy1, policy2));
- // TODO: this seems off but is needed to allow try-with-resources while also unlocking.
- filter.pinComponent();
-
- filter.setApplicationContext(new MockApplicationContext());
- policy1.initialize();
- policy2.initialize();
- filter.initialize();
-
- Assert.assertTrue(filter.isInitialized());
- Assert.assertEquals(filter.getFilterPolicies().size(), 3);
- Assert.assertTrue(filter.getFilterPolicies().contains(policy1));
- Assert.assertTrue(policy1.isInitialized());
- Assert.assertTrue(filter.getFilterPolicies().contains(policy2));
- Assert.assertTrue(policy2.isInitialized());
- Assert.assertFalse(filter.getFilterPolicies().contains(policy3));
- Assert.assertFalse(policy3.isInitialized());
- }
+ policy1.initialize();
+ policy2.initialize();
+ filter.initialize();
- try (final AttributeFilterImpl filter = new AttributeFilterImpl("engine", Arrays.asList(policy1, policy2))) {
- // TODO: this seems off but is needed to allow try-with-resources while also unlocking.
- filter.pinComponent();
+ Assert.assertTrue(filter.isInitialized());
+ Assert.assertEquals(filter.getFilterPolicies().size(), 3);
+ Assert.assertTrue(filter.getFilterPolicies().contains(policy1));
+ Assert.assertTrue(policy1.isInitialized());
+ Assert.assertTrue(filter.getFilterPolicies().contains(policy2));
+ Assert.assertTrue(policy2.isInitialized());
+ Assert.assertFalse(filter.getFilterPolicies().contains(policy3));
+ Assert.assertFalse(policy3.isInitialized());
- filter.setApplicationContext(new MockApplicationContext());
- filter.initialize();
-
- Assert.assertEquals(filter.getFilterPolicies().size(), 2);
- List<AttributeFilterPolicy> contents = filter.getFilterPolicies();
- Assert.assertEquals(contents.get(0).getId(), "policy1");
- Assert.assertEquals(contents.get(1).getId(), "policy2");
-
- try {
- filter.getFilterPolicies().add(policy1);
- Assert.fail();
- } catch (UnsupportedOperationException e) {
- // expected this
- }
+ filter = new AttributeFilterImpl("engine", Arrays.asList(policy1, policy2));
+ filter.initialize();
+
+ Assert.assertEquals(filter.getFilterPolicies().size(), 2);
+ List<AttributeFilterPolicy> contents = filter.getFilterPolicies();
+ Assert.assertEquals(contents.get(0).getId(), "policy1");
+ Assert.assertEquals(contents.get(1).getId(), "policy2");
+
+ try {
+ filter.getFilterPolicies().add(policy1);
+ Assert.fail();
+ } catch (UnsupportedOperationException e) {
+ // expected this
}
}
@@ -154,24 +141,19 @@ public class AttributeFilterImplTest {
attribute2.setValues(Arrays.asList(new StringAttributeValue("a"), new StringAttributeValue("b")));
filterContext.getPrefilteredIdPAttributes().put(attribute2.getId(), attribute2);
- try (final AttributeFilterImpl filter = new AttributeFilterImpl("engine", Collections.singletonList(policy))) {
-
- // TODO: this seems off but is needed to allow try-with-resources while also unlocking.
- filter.pinComponent();
+ final AttributeFilterImpl filter = new AttributeFilterImpl("engine", Collections.singletonList(policy));
- filter.setApplicationContext(new MockApplicationContext());
- attribute1Policy.initialize();
- policy.initialize();
- filter.initialize();
-
- filter.filterAttributes(filterContext);
- final Map<String, IdPAttribute> resultAttrs = filterContext.getFilteredIdPAttributes();
- Assert.assertEquals(resultAttrs.size(), 1);
- final List<IdPAttributeValue> result = resultAttrs.get("attribute1").getValues();
- Assert.assertEquals(result.size(), 2);
- Assert.assertTrue(result.contains(new StringAttributeValue("one")));
- Assert.assertTrue(result.contains(new StringAttributeValue("two")));
- }
+ attribute1Policy.initialize();
+ policy.initialize();
+ filter.initialize();
+
+ filter.filterAttributes(filterContext);
+ final Map<String, IdPAttribute> resultAttrs = filterContext.getFilteredIdPAttributes();
+ Assert.assertEquals(resultAttrs.size(), 1);
+ final List<IdPAttributeValue> result = resultAttrs.get("attribute1").getValues();
+ Assert.assertEquals(result.size(), 2);
+ Assert.assertTrue(result.contains(new StringAttributeValue("one")));
+ Assert.assertTrue(result.contains(new StringAttributeValue("two")));
}
@Test public void testAllMatcher() throws Exception {
@@ -195,20 +177,13 @@ public class AttributeFilterImplTest {
attribute1Policy.initialize();
policy.initialize();
- try (final AttributeFilterImpl filter = new AttributeFilterImpl("engine", Collections.singletonList(policy))) {
-
- // TODO: this seems off but is needed to allow try-with-resources while also unlocking.
- filter.pinComponent();
-
- filter.setApplicationContext(new MockApplicationContext());
- filter.initialize();
-
- filter.filterAttributes(filterContext);
- final List<IdPAttributeValue> result = filterContext.getFilteredIdPAttributes().get("attribute1").getValues();
- Assert.assertEquals(result.size(), 2);
- Assert.assertTrue(result.contains(new StringAttributeValue("one")));
- Assert.assertTrue(result.contains(new StringAttributeValue("two")));
- }
+ final AttributeFilterImpl filter = new AttributeFilterImpl("engine", Collections.singletonList(policy));
+ filter.initialize();
+ filter.filterAttributes(filterContext);
+ final List<IdPAttributeValue> result = filterContext.getFilteredIdPAttributes().get("attribute1").getValues();
+ Assert.assertEquals(result.size(), 2);
+ Assert.assertTrue(result.contains(new StringAttributeValue("one")));
+ Assert.assertTrue(result.contains(new StringAttributeValue("two")));
}
@Test public void testAllMatcherFails() throws Exception {
@@ -234,17 +209,11 @@ public class AttributeFilterImplTest {
attribute2Policy.initialize();
policy.initialize();
- try (final AttributeFilterImpl filter = new AttributeFilterImpl("engine", Collections.singletonList(policy))) {
-
- // TODO: this seems off but is needed to allow try-with-resources while also unlocking.
- filter.pinComponent();
+ final AttributeFilterImpl filter = new AttributeFilterImpl("engine", Collections.singletonList(policy));
+ filter.initialize();
- filter.setApplicationContext(new MockApplicationContext());
- filter.initialize();
-
- filter.filterAttributes(filterContext);
- Assert.assertTrue(filterContext.getFilteredIdPAttributes().isEmpty());
- }
+ filter.filterAttributes(filterContext);
+ Assert.assertTrue(filterContext.getFilteredIdPAttributes().isEmpty());
}
@@ -266,19 +235,14 @@ public class AttributeFilterImplTest {
attribute1.setValues(Arrays.asList(new StringAttributeValue("one"), new StringAttributeValue("two")));
filterContext.getPrefilteredIdPAttributes().put(attribute1.getId(), attribute1);
- try (final AttributeFilterImpl filter = new AttributeFilterImpl("engine", Collections.singletonList(policy))) {
+ final AttributeFilterImpl filter = new AttributeFilterImpl("engine", Collections.singletonList(policy));
- // TODO: this seems off but is needed to allow try-with-resources while also unlocking.
- filter.pinComponent();
+ attribute1Policy.initialize();
+ policy.initialize();
+ filter.initialize();
- filter.setApplicationContext(new MockApplicationContext());
- attribute1Policy.initialize();
- policy.initialize();
- filter.initialize();
-
- filter.filterAttributes(filterContext);
- Assert.assertTrue(filterContext.getFilteredIdPAttributes().isEmpty());
- }
+ filter.filterAttributes(filterContext);
+ Assert.assertTrue(filterContext.getFilteredIdPAttributes().isEmpty());
}
@Test public void testDenyFilterAttributes() throws Exception {
@@ -308,24 +272,19 @@ public class AttributeFilterImplTest {
attribute1.setValues(Arrays.asList(new StringAttributeValue("one"), new StringAttributeValue("two")));
filterContext.getPrefilteredIdPAttributes().put(attribute1.getId(), attribute1);
- try (final AttributeFilterImpl filter = new AttributeFilterImpl("engine", Collections.singletonList(policy))) {
+ final AttributeFilterImpl filter = new AttributeFilterImpl("engine", Collections.singletonList(policy));
- // TODO: this seems off but is needed to allow try-with-resources while also unlocking.
- filter.pinComponent();
-
- filter.setApplicationContext(new MockApplicationContext());
- denyPolicy.initialize();
- allowPolicy.initialize();
- policy.initialize();
- filter.initialize();
-
- filter.filterAttributes(filterContext);
- final Map<String, IdPAttribute> resultAttrs = filterContext.getFilteredIdPAttributes();
- Assert.assertEquals(resultAttrs.size(), 1);
- final List<IdPAttributeValue> result = resultAttrs.get("attribute1").getValues();
- Assert.assertEquals(result.size(), 1);
- Assert.assertTrue(result.contains(new StringAttributeValue("two")));
- }
+ denyPolicy.initialize();
+ allowPolicy.initialize();
+ policy.initialize();
+ filter.initialize();
+
+ filter.filterAttributes(filterContext);
+ final Map<String, IdPAttribute> resultAttrs = filterContext.getFilteredIdPAttributes();
+ Assert.assertEquals(resultAttrs.size(), 1);
+ final List<IdPAttributeValue> result = resultAttrs.get("attribute1").getValues();
+ Assert.assertEquals(result.size(), 1);
+ Assert.assertTrue(result.contains(new StringAttributeValue("two")));
}
@Test public void testNoPolicy() throws Exception {
@@ -345,18 +304,13 @@ public class AttributeFilterImplTest {
attribute1.setValues(Arrays.asList(new StringAttributeValue("one"), new StringAttributeValue("two")));
filterContext.getPrefilteredIdPAttributes().put(attribute1.getId(), attribute1);
- try (final AttributeFilterImpl filter = new AttributeFilterImpl("engine", Collections.singletonList(policy))) {
+ final AttributeFilterImpl filter = new AttributeFilterImpl("engine", Collections.singletonList(policy));
- // TODO: this seems off but is needed to allow try-with-resources while also unlocking.
- filter.pinComponent();
+ policy.initialize();
+ filter.initialize();
- filter.setApplicationContext(new MockApplicationContext());
- policy.initialize();
- filter.initialize();
-
- filter.filterAttributes(filterContext);
- Assert.assertTrue(filterContext.getFilteredIdPAttributes().isEmpty());
- }
+ filter.filterAttributes(filterContext);
+ Assert.assertTrue(filterContext.getFilteredIdPAttributes().isEmpty());
}
@Test public void testDenyAllFilterAttributes() throws Exception {
@@ -382,21 +336,16 @@ public class AttributeFilterImplTest {
attribute1.setValues(Arrays.asList(new StringAttributeValue("one"), new StringAttributeValue("two")));
filterContext.getPrefilteredIdPAttributes().put(attribute1.getId(), attribute1);
- try (final AttributeFilterImpl filter = new AttributeFilterImpl("engine", Collections.singletonList(policy))) {
-
- // TODO: this seems off but is needed to allow try-with-resources while also unlocking.
- filter.pinComponent();
+ final AttributeFilterImpl filter = new AttributeFilterImpl("engine", Collections.singletonList(policy));
- filter.setApplicationContext(new MockApplicationContext());
- allowPolicy.initialize();
- denyPolicy.initialize();
- policy.initialize();
- filter.initialize();
+ allowPolicy.initialize();
+ denyPolicy.initialize();
+ policy.initialize();
+ filter.initialize();
- filter.filterAttributes(filterContext);
- final Map<String, IdPAttribute> resultAttrs = filterContext.getFilteredIdPAttributes();
- Assert.assertTrue(resultAttrs.isEmpty());
- }
+ filter.filterAttributes(filterContext);
+ final Map<String, IdPAttribute> resultAttrs = filterContext.getFilteredIdPAttributes();
+ Assert.assertTrue(resultAttrs.isEmpty());
}
@Test public void testInitDestroy() throws ComponentInitializationException {
@@ -415,34 +364,28 @@ public class AttributeFilterImplTest {
Assert.assertFalse(matcher.isInitialized());
Assert.assertFalse(matcher.isDestroyed());
- try (final AttributeFilterImpl filter = new AttributeFilterImpl("engine", Collections.singletonList(policy))) {
+ final AttributeFilterImpl filter = new AttributeFilterImpl("engine", Collections.singletonList(policy));
- // TODO: this seems off but is needed to allow try-with-resources while also unlocking.
- filter.pinComponent();
+ policy.initialize();
+ matcher.initialize();
+ policyRule.initialize();
+ filter.initialize();
- filter.setApplicationContext(new MockApplicationContext());
-
- policy.initialize();
- matcher.initialize();
- policyRule.initialize();
- filter.initialize();
-
- Assert.assertTrue(policyRule.isInitialized());
- Assert.assertFalse(policyRule.isDestroyed());
- Assert.assertTrue(matcher.isInitialized());
- Assert.assertFalse(matcher.isDestroyed());
-
- // TODO: can't do this because pin above grabs read lock and this requires write lock
- //filter.destroy();
-
- policyRule.destroy();
- policy.destroy();
- matcher.destroy();
- Assert.assertTrue(policyRule.isInitialized());
- Assert.assertTrue(policyRule.isDestroyed());
- Assert.assertTrue(matcher.isInitialized());
- Assert.assertTrue(matcher.isDestroyed());
- }
+ Assert.assertTrue(policyRule.isInitialized());
+ Assert.assertFalse(policyRule.isDestroyed());
+ Assert.assertTrue(matcher.isInitialized());
+ Assert.assertFalse(matcher.isDestroyed());
+
+ // TODO: can't do this because pin above grabs read lock and this requires write lock
+ //filter.destroy();
+
+ policyRule.destroy();
+ policy.destroy();
+ matcher.destroy();
+ Assert.assertTrue(policyRule.isInitialized());
+ Assert.assertTrue(policyRule.isDestroyed());
+ Assert.assertTrue(matcher.isInitialized());
+ Assert.assertTrue(matcher.isDestroyed());
}
}
diff --git a/shib-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/policyrule/saml/impl/BaseMetadataTests.java b/shib-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/policyrule/saml/impl/BaseMetadataTests.java
index bcf44df09..3e9ad7f49 100644
--- a/shib-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/policyrule/saml/impl/BaseMetadataTests.java
+++ b/shib-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/policyrule/saml/impl/BaseMetadataTests.java
@@ -23,6 +23,7 @@ import java.util.Collections;
import javax.annotation.Nonnull;
import net.shibboleth.idp.attribute.filter.context.AttributeFilterContext;
+import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
import net.shibboleth.idp.attribute.transcoding.BasicNamingFunction;
import net.shibboleth.idp.attribute.transcoding.impl.AttributeTranscoderRegistryImpl;
import net.shibboleth.idp.saml.attribute.impl.AttributeMappingNodeProcessor;
@@ -77,7 +78,7 @@ public class BaseMetadataTests extends XMLObjectBaseTestCase {
final NodeProcessingMetadataFilter filter = new NodeProcessingMetadataFilter();
filter.setNodeProcessors(Arrays.asList(new EntitiesDescriptorNameProcessor(),
- new AttributeMappingNodeProcessor(new MockReloadableService<>(registry))));
+ new AttributeMappingNodeProcessor(new MockReloadableService<AttributeTranscoderRegistry>(registry))));
filter.initialize();
filter.filter(metadata, new MetadataFilterContext());
diff --git a/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/impl/AttributeFilterServiceStrategy.java b/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/impl/AttributeFilterServiceStrategy.java
index 39c1b4f87..baaafa226 100644
--- a/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/impl/AttributeFilterServiceStrategy.java
+++ b/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/impl/AttributeFilterServiceStrategy.java
@@ -32,7 +32,9 @@ import net.shibboleth.idp.attribute.filter.impl.AttributeFilterImpl;
import net.shibboleth.shared.component.AbstractIdentifiableInitializableComponent;
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.service.ServiceException;
-import net.shibboleth.shared.spring.service.AbstractServiceableComponent;
+import net.shibboleth.shared.service.ServiceableComponent;
+import net.shibboleth.shared.spring.service.impl.SpringServiceableComponent;
+
/**
* Strategy for summoning up an {@link AttributeFilterImpl} from a populated {@link ApplicationContext}. We do this by
@@ -40,14 +42,14 @@ import net.shibboleth.shared.spring.service.AbstractServiceableComponent;
* then initialize.
*/
public class AttributeFilterServiceStrategy extends AbstractIdentifiableInitializableComponent implements
- Function<ApplicationContext, AbstractServiceableComponent<AttributeFilter>> {
+ Function<ApplicationContext, ServiceableComponent<AttributeFilter>> {
/** log. */
private final Logger log = LoggerFactory.getLogger(AttributeFilterServiceStrategy.class);
/** {@inheritDoc} */
@Nullable
- public AbstractServiceableComponent<AttributeFilter> apply(@Nullable final ApplicationContext appContext) {
+ public ServiceableComponent<AttributeFilter> apply(@Nullable final ApplicationContext appContext) {
if (appContext == null) {
throw new ServiceException("ApplicationContext was null");
@@ -57,13 +59,15 @@ public class AttributeFilterServiceStrategy extends AbstractIdentifiableInitiali
log.debug("Creating Attribute Filter {} with {} Policies", getId(), afps.size());
final AttributeFilterImpl filter = new AttributeFilterImpl(getId(), afps);
- filter.setApplicationContext(appContext);
-
+
+ final SpringServiceableComponent<AttributeFilter> result;
try {
filter.initialize();
+ result = new SpringServiceableComponent<AttributeFilter>(filter);
+ result.setApplicationContext(appContext);
} catch (final ComponentInitializationException e) {
throw new ServiceException("Unable to initialize attribute filter for " + appContext.getDisplayName(), e);
}
- return filter;
+ return result;
}
}
\ No newline at end of file
diff --git a/shib-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/AttributeFilterServiceTest.java b/shib-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/AttributeFilterServiceTest.java
index 730de570f..671ceed69 100644
--- a/shib-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/AttributeFilterServiceTest.java
+++ b/shib-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/AttributeFilterServiceTest.java
@@ -22,6 +22,7 @@ import static org.testng.Assert.assertNull;
import static org.testng.Assert.assertTrue;
import java.util.Arrays;
+import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
@@ -37,8 +38,9 @@ import net.shibboleth.idp.attribute.IdPAttribute;
import net.shibboleth.idp.attribute.StringAttributeValue;
import net.shibboleth.idp.attribute.filter.AttributeFilter;
import net.shibboleth.idp.attribute.filter.AttributeFilterException;
+import net.shibboleth.idp.attribute.filter.AttributeFilterPolicy;
import net.shibboleth.idp.attribute.filter.context.AttributeFilterContext;
-import net.shibboleth.idp.attribute.filter.spring.impl.AttributeFilterServiceStrategy;
+import net.shibboleth.idp.attribute.filter.impl.AttributeFilterImpl;
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.service.ServiceException;
import net.shibboleth.shared.spring.config.IdentifiableBeanPostProcessor;
@@ -88,10 +90,13 @@ public class AttributeFilterServiceTest {
.build();
testContext = context;
- final AttributeFilterServiceStrategy strategy = new AttributeFilterServiceStrategy();
- strategy.setId("ID");
- strategy.initialize();
- return (AttributeFilter) strategy.apply(context);
+
+ final Collection<AttributeFilterPolicy> afps = context.getBeansOfType(AttributeFilterPolicy.class).values();
+
+ final AttributeFilterImpl filter = new AttributeFilterImpl("ID", afps);
+ filter.initialize();
+
+ return filter;
}
@BeforeClass protected void setUp() throws Exception {
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list