[java-identity-provider] 03/06: IDP-1516 Reduce guava dependencies attribute-filter-api
Rod Widdowson
rdw at steadingsoftware.com
Sat Nov 2 12:31:44 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=93e68ddc38dd6467e56768abcd9a35abc8f8047f
commit 93e68ddc38dd6467e56768abcd9a35abc8f8047f
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Fri Nov 1 15:03:19 2019 +0000
IDP-1516 Reduce guava dependencies attribute-filter-api
https://issues.shibboleth.net/jira/browse/IDP-1516
Also made a couple of live colelction getters non-live
---
.../attribute/filter/AttributeFilterPolicy.java | 14 ++----
.../shibboleth/idp/attribute/filter/Matcher.java | 4 +-
.../idp/attribute/filter/MatcherFromPolicy.java | 4 +-
.../filter/context/AttributeFilterContext.java | 51 ++++++++++------------
.../filter/context/AttributeFilterWorkContext.java | 43 +++++++++---------
.../idp/attribute/filter/MockMatcher.java | 4 +-
.../filter/context/AttributeFilterContextTest.java | 49 ---------------------
7 files changed, 50 insertions(+), 119 deletions(-)
diff --git a/idp-attribute-filter-api/src/main/java/net/shibboleth/idp/attribute/filter/AttributeFilterPolicy.java b/idp-attribute-filter-api/src/main/java/net/shibboleth/idp/attribute/filter/AttributeFilterPolicy.java
index 039cbba..4f378d2 100644
--- a/idp-attribute-filter-api/src/main/java/net/shibboleth/idp/attribute/filter/AttributeFilterPolicy.java
+++ b/idp-attribute-filter-api/src/main/java/net/shibboleth/idp/attribute/filter/AttributeFilterPolicy.java
@@ -17,7 +17,6 @@
package net.shibboleth.idp.attribute.filter;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
@@ -30,18 +29,13 @@ import javax.annotation.concurrent.ThreadSafe;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.google.common.base.Predicates;
-import com.google.common.collect.Collections2;
-
import net.shibboleth.idp.attribute.IdPAttribute;
import net.shibboleth.idp.attribute.filter.PolicyRequirementRule.Tristate;
import net.shibboleth.idp.attribute.filter.context.AttributeFilterContext;
import net.shibboleth.utilities.java.support.annotation.ParameterName;
import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.annotation.constraint.NullableElements;
import net.shibboleth.utilities.java.support.annotation.constraint.Unmodifiable;
-import net.shibboleth.utilities.java.support.collection.CollectionSupport;
import net.shibboleth.utilities.java.support.component.AbstractIdentifiedInitializableComponent;
import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
import net.shibboleth.utilities.java.support.component.ComponentSupport;
@@ -56,7 +50,7 @@ import net.shibboleth.utilities.java.support.logic.Constraint;
* policies run this collection will contain the final result.
*/
@ThreadSafe
-public class AttributeFilterPolicy extends AbstractIdentifiedInitializableComponent implements
+public final class AttributeFilterPolicy extends AbstractIdentifiedInitializableComponent implements
UnmodifiableComponent {
/** Class logger. */
@@ -80,16 +74,14 @@ public class AttributeFilterPolicy extends AbstractIdentifiedInitializableCompon
*/
public AttributeFilterPolicy(@Nonnull @NotEmpty @ParameterName(name="policyId") final String policyId,
@Nonnull final @ParameterName(name="requirementRule") PolicyRequirementRule requirementRule,
- @Nullable @NullableElements final @ParameterName(name="attributeRules")
+ @Nullable @NonnullElements final @ParameterName(name="attributeRules")
Collection<AttributeRule> attributeRules) {
setId(policyId);
rule = Constraint.isNotNull(requirementRule, "Attribute filter policy activiation criterion can not be null");
- final ArrayList<AttributeRule> checkedPolicies = new ArrayList<>();
- CollectionSupport.addIf(checkedPolicies, attributeRules, Predicates.notNull());
if (null != attributeRules) {
- valuePolicies = List.copyOf(Collections2.filter(attributeRules, Predicates.notNull()));
+ valuePolicies = List.copyOf(attributeRules);
} else {
valuePolicies = Collections.emptyList();
}
diff --git a/idp-attribute-filter-api/src/main/java/net/shibboleth/idp/attribute/filter/Matcher.java b/idp-attribute-filter-api/src/main/java/net/shibboleth/idp/attribute/filter/Matcher.java
index 34d61fe..e7087ef 100644
--- a/idp-attribute-filter-api/src/main/java/net/shibboleth/idp/attribute/filter/Matcher.java
+++ b/idp-attribute-filter-api/src/main/java/net/shibboleth/idp/attribute/filter/Matcher.java
@@ -24,8 +24,6 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.annotation.concurrent.ThreadSafe;
-import com.google.common.collect.ImmutableSet;
-
import net.shibboleth.idp.attribute.IdPAttribute;
import net.shibboleth.idp.attribute.IdPAttributeValue;
import net.shibboleth.idp.attribute.filter.context.AttributeFilterContext;
@@ -43,7 +41,7 @@ public interface Matcher extends IdentifiedComponent {
/** {@inheritDoc} */
@Override public Set<IdPAttributeValue> getMatchingValues(@Nonnull final IdPAttribute attribute,
@Nonnull final AttributeFilterContext filterContext) {
- return ImmutableSet.copyOf(attribute.getValues());
+ return Set.copyOf(attribute.getValues());
}
@Override @Nullable public String getId() {
diff --git a/idp-attribute-filter-api/src/main/java/net/shibboleth/idp/attribute/filter/MatcherFromPolicy.java b/idp-attribute-filter-api/src/main/java/net/shibboleth/idp/attribute/filter/MatcherFromPolicy.java
index 3db73f6..8bdce34 100644
--- a/idp-attribute-filter-api/src/main/java/net/shibboleth/idp/attribute/filter/MatcherFromPolicy.java
+++ b/idp-attribute-filter-api/src/main/java/net/shibboleth/idp/attribute/filter/MatcherFromPolicy.java
@@ -26,8 +26,6 @@ import javax.annotation.Nullable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.google.common.collect.ImmutableSet;
-
import net.shibboleth.idp.attribute.IdPAttribute;
import net.shibboleth.idp.attribute.IdPAttributeValue;
import net.shibboleth.idp.attribute.filter.PolicyRequirementRule.Tristate;
@@ -84,7 +82,7 @@ public class MatcherFromPolicy extends BaseBridgingClass implements Matcher, Ide
return Collections.emptySet();
} else {
log.debug("{} The rule returned TRUE, all values returned", getLogPrefix());
- return ImmutableSet.copyOf(attribute.getValues());
+ return Set.copyOf(attribute.getValues());
}
}
diff --git a/idp-attribute-filter-api/src/main/java/net/shibboleth/idp/attribute/filter/context/AttributeFilterContext.java b/idp-attribute-filter-api/src/main/java/net/shibboleth/idp/attribute/filter/context/AttributeFilterContext.java
index 66f7e7b..35a0214 100644
--- a/idp-attribute-filter-api/src/main/java/net/shibboleth/idp/attribute/filter/context/AttributeFilterContext.java
+++ b/idp-attribute-filter-api/src/main/java/net/shibboleth/idp/attribute/filter/context/AttributeFilterContext.java
@@ -18,30 +18,33 @@
package net.shibboleth.idp.attribute.filter.context;
import java.util.Collection;
+import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.function.Function;
+import java.util.stream.Collectors;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.annotation.concurrent.NotThreadSafe;
+import org.opensaml.messaging.context.BaseContext;
+import org.opensaml.profile.context.ProxiedRequesterContext;
+import org.opensaml.saml.common.messaging.context.SAMLMetadataContext;
+import org.opensaml.saml.metadata.resolver.MetadataResolver;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import net.shibboleth.idp.attribute.IdPAttribute;
import net.shibboleth.idp.attribute.filter.AttributeFilter;
import net.shibboleth.idp.attribute.filter.AttributeFilterException;
import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
-import net.shibboleth.utilities.java.support.annotation.constraint.NullableElements;
+import net.shibboleth.utilities.java.support.annotation.constraint.NotLive;
+import net.shibboleth.utilities.java.support.annotation.constraint.Unmodifiable;
import net.shibboleth.utilities.java.support.logic.Constraint;
import net.shibboleth.utilities.java.support.service.ReloadableService;
import net.shibboleth.utilities.java.support.service.ServiceableComponent;
-import org.opensaml.messaging.context.BaseContext;
-import org.opensaml.profile.context.ProxiedRequesterContext;
-import org.opensaml.saml.common.messaging.context.SAMLMetadataContext;
-import org.opensaml.saml.metadata.resolver.MetadataResolver;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
/** A context supplying input to the {@link net.shibboleth.idp.attribute.filter.AttributeFilter} interface. */
@NotThreadSafe
public final class AttributeFilterContext extends BaseContext {
@@ -143,7 +146,7 @@ public final class AttributeFilterContext extends BaseContext {
*
* @return attributes to be filtered
*/
- @Nonnull @NonnullElements public Map<String,IdPAttribute> getPrefilteredIdPAttributes() {
+ @Nonnull @NonnullElements @NotLive @Unmodifiable public Map<String,IdPAttribute> getPrefilteredIdPAttributes() {
return prefilteredAttributes;
}
@@ -155,17 +158,14 @@ public final class AttributeFilterContext extends BaseContext {
* @return this context;
*/
@Nonnull public AttributeFilterContext setPrefilteredIdPAttributes(
- @Nullable @NullableElements final Collection<IdPAttribute> attributes) {
+ @Nullable @NonnullElements final Collection<IdPAttribute> attributes) {
if (attributes != null) {
- prefilteredAttributes = new HashMap<>(attributes.size());
- for (final IdPAttribute attribute : attributes) {
- if (attribute != null) {
- prefilteredAttributes.put(attribute.getId(), attribute);
- }
- }
+ prefilteredAttributes = attributes.
+ stream().
+ collect(Collectors.toUnmodifiableMap(IdPAttribute::getId, e -> e));
} else {
- prefilteredAttributes = new HashMap<>();
+ prefilteredAttributes = Collections.emptyMap();
}
return this;
@@ -176,7 +176,7 @@ public final class AttributeFilterContext extends BaseContext {
*
* @return attributes left after the filtering process has run
*/
- @Nonnull @NonnullElements public Map<String, IdPAttribute> getFilteredIdPAttributes() {
+ @Nonnull @NonnullElements @Unmodifiable @NotLive public Map<String, IdPAttribute> getFilteredIdPAttributes() {
return filteredAttributes;
}
@@ -188,17 +188,14 @@ public final class AttributeFilterContext extends BaseContext {
* @return this context
*/
@Nonnull public AttributeFilterContext setFilteredIdPAttributes(
- @Nullable @NullableElements final Collection<IdPAttribute> attributes) {
-
+ @Nullable @NonnullElements final Collection<IdPAttribute> attributes) {
+
if (attributes != null) {
- filteredAttributes = new HashMap<>(attributes.size());
- for (final IdPAttribute attribute : attributes) {
- if (attribute != null) {
- filteredAttributes.put(attribute.getId(), attribute);
- }
- }
+ filteredAttributes = attributes.
+ stream().
+ collect(Collectors.toUnmodifiableMap(IdPAttribute::getId, e -> e));
} else {
- filteredAttributes = new HashMap<>();
+ filteredAttributes = Collections.emptyMap();
}
return this;
diff --git a/idp-attribute-filter-api/src/main/java/net/shibboleth/idp/attribute/filter/context/AttributeFilterWorkContext.java b/idp-attribute-filter-api/src/main/java/net/shibboleth/idp/attribute/filter/context/AttributeFilterWorkContext.java
index 6676f1e..59f68e3 100644
--- a/idp-attribute-filter-api/src/main/java/net/shibboleth/idp/attribute/filter/context/AttributeFilterWorkContext.java
+++ b/idp-attribute-filter-api/src/main/java/net/shibboleth/idp/attribute/filter/context/AttributeFilterWorkContext.java
@@ -28,17 +28,16 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.annotation.concurrent.NotThreadSafe;
+import org.opensaml.messaging.context.BaseContext;
+
import net.shibboleth.idp.attribute.IdPAttribute;
import net.shibboleth.idp.attribute.IdPAttributeValue;
import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.annotation.constraint.NullableElements;
import net.shibboleth.utilities.java.support.annotation.constraint.Unmodifiable;
import net.shibboleth.utilities.java.support.logic.Constraint;
import net.shibboleth.utilities.java.support.primitive.StringSupport;
-import org.opensaml.messaging.context.BaseContext;
-
/**
* A context which carries and collects information through the attribute filtering process, and coordinates data
* between the filter implementation and the various resolver MatchFunctor implementations.
@@ -82,7 +81,7 @@ public final class AttributeFilterWorkContext extends BaseContext {
* @param attributeValues values for the attribute that are permitted to be released
*/
public void addPermittedIdPAttributeValues(@Nonnull @NotEmpty final String attributeId,
- @Nullable @NullableElements final Collection<IdPAttributeValue> attributeValues) {
+ @Nullable @NonnullElements final Collection<IdPAttributeValue> attributeValues) {
final AttributeFilterContext parent = (AttributeFilterContext) getParent();
final Map<String, IdPAttribute> prefilteredAttributes = parent.getPrefilteredIdPAttributes();
final String trimmedAttributeId =
@@ -101,15 +100,14 @@ public final class AttributeFilterWorkContext extends BaseContext {
}
for (final IdPAttributeValue value : attributeValues) {
- if (value != null) {
- if (!prefilteredAttributes.get(trimmedAttributeId).getValues().contains(value)) {
- throw new IllegalArgumentException("permitted value is not a current value of attribute "
- + trimmedAttributeId);
- }
-
- if (!permittedAttributeValues.contains(value)) {
- permittedAttributeValues.add(value);
- }
+ Constraint.isNotNull(value, "non null value cannot be added to permitted list");
+ if (!prefilteredAttributes.get(trimmedAttributeId).getValues().contains(value)) {
+ throw new IllegalArgumentException("permitted value is not a current value of attribute "
+ + trimmedAttributeId);
+ }
+
+ if (!permittedAttributeValues.contains(value)) {
+ permittedAttributeValues.add(value);
}
}
}
@@ -133,7 +131,7 @@ public final class AttributeFilterWorkContext extends BaseContext {
* @param attributeValues values for the attribute that are not permitted to be released
*/
public void addDeniedIdPAttributeValues(@Nonnull @NotEmpty final String attributeId,
- @Nullable @NullableElements final Collection<IdPAttributeValue> attributeValues) {
+ @Nullable @NonnullElements final Collection<IdPAttributeValue> attributeValues) {
final AttributeFilterContext parent = (AttributeFilterContext) getParent();
final Map<String, IdPAttribute> prefilteredAttributes = parent.getPrefilteredIdPAttributes();
final String trimmedAttributeId =
@@ -152,15 +150,14 @@ public final class AttributeFilterWorkContext extends BaseContext {
}
for (final IdPAttributeValue value : attributeValues) {
- if (value != null) {
- if (!prefilteredAttributes.get(trimmedAttributeId).getValues().contains(value)) {
- throw new IllegalArgumentException("denied value is not a current value of attribute "
- + trimmedAttributeId);
- }
-
- if (!deniedAttributeValues.contains(value)) {
- deniedAttributeValues.add(value);
- }
+ Constraint.isNotNull(value, "non null value cannot be added to denied list");
+ if (!prefilteredAttributes.get(trimmedAttributeId).getValues().contains(value)) {
+ throw new IllegalArgumentException("denied value is not a current value of attribute "
+ + trimmedAttributeId);
+ }
+
+ if (!deniedAttributeValues.contains(value)) {
+ deniedAttributeValues.add(value);
}
}
}
diff --git a/idp-attribute-filter-api/src/test/java/net/shibboleth/idp/attribute/filter/MockMatcher.java b/idp-attribute-filter-api/src/test/java/net/shibboleth/idp/attribute/filter/MockMatcher.java
index 89e444d..69fe85e 100644
--- a/idp-attribute-filter-api/src/test/java/net/shibboleth/idp/attribute/filter/MockMatcher.java
+++ b/idp-attribute-filter-api/src/test/java/net/shibboleth/idp/attribute/filter/MockMatcher.java
@@ -23,8 +23,6 @@ import java.util.LinkedHashSet;
import java.util.Objects;
import java.util.Set;
-import com.google.common.collect.ImmutableSet;
-
import net.shibboleth.idp.attribute.IdPAttribute;
import net.shibboleth.idp.attribute.IdPAttributeValue;
import net.shibboleth.idp.attribute.filter.context.AttributeFilterContext;
@@ -88,7 +86,7 @@ public class MockMatcher extends AbstractIdentifiedInitializableComponent implem
}
if (matchingValues == null) {
- return ImmutableSet.copyOf(attribute.getValues());
+ return Set.copyOf(attribute.getValues());
}
LinkedHashSet<IdPAttributeValue> values = new LinkedHashSet<>();
diff --git a/idp-attribute-filter-api/src/test/java/net/shibboleth/idp/attribute/filter/context/AttributeFilterContextTest.java b/idp-attribute-filter-api/src/test/java/net/shibboleth/idp/attribute/filter/context/AttributeFilterContextTest.java
index 93ccfc4..0954c3a 100644
--- a/idp-attribute-filter-api/src/test/java/net/shibboleth/idp/attribute/filter/context/AttributeFilterContextTest.java
+++ b/idp-attribute-filter-api/src/test/java/net/shibboleth/idp/attribute/filter/context/AttributeFilterContextTest.java
@@ -66,31 +66,6 @@ public class AttributeFilterContextTest {
Assert.assertTrue(context.getPrefilteredIdPAttributes().containsKey("attribute3"));
Assert.assertEquals(context.getPrefilteredIdPAttributes().get("attribute3"), attribute3);
- context.getPrefilteredIdPAttributes().put(attribute1.getId(), attribute1);
- Assert.assertEquals(context.getPrefilteredIdPAttributes().size(), 3);
- Assert.assertTrue(context.getPrefilteredIdPAttributes().containsKey("attribute1"));
- Assert.assertEquals(context.getPrefilteredIdPAttributes().get("attribute1"), attribute1);
- Assert.assertTrue(context.getPrefilteredIdPAttributes().containsKey("attribute2"));
- Assert.assertEquals(context.getPrefilteredIdPAttributes().get("attribute2"), attribute2);
- Assert.assertTrue(context.getPrefilteredIdPAttributes().containsKey("attribute3"));
- Assert.assertEquals(context.getPrefilteredIdPAttributes().get("attribute3"), attribute3);
-
- context.getPrefilteredIdPAttributes().remove("attribute2");
- Assert.assertEquals(context.getPrefilteredIdPAttributes().size(), 2);
- Assert.assertTrue(context.getPrefilteredIdPAttributes().containsKey("attribute1"));
- Assert.assertEquals(context.getPrefilteredIdPAttributes().get("attribute1"), attribute1);
- Assert.assertFalse(context.getPrefilteredIdPAttributes().containsKey("attribute2"));
- Assert.assertTrue(context.getPrefilteredIdPAttributes().containsKey("attribute3"));
- Assert.assertEquals(context.getPrefilteredIdPAttributes().get("attribute3"), attribute3);
-
-
- context.getPrefilteredIdPAttributes().remove(null);
- Assert.assertEquals(context.getPrefilteredIdPAttributes().size(), 2);
- Assert.assertTrue(context.getPrefilteredIdPAttributes().containsKey("attribute1"));
- Assert.assertEquals(context.getPrefilteredIdPAttributes().get("attribute1"), attribute1);
- Assert.assertTrue(context.getPrefilteredIdPAttributes().containsKey("attribute3"));
- Assert.assertEquals(context.getPrefilteredIdPAttributes().get("attribute3"), attribute3);
-
context.setPrefilteredIdPAttributes(null);
Assert.assertNotNull(context.getPrefilteredIdPAttributes());
Assert.assertTrue(context.getPrefilteredIdPAttributes().isEmpty());
@@ -117,30 +92,6 @@ public class AttributeFilterContextTest {
Assert.assertTrue(context.getFilteredIdPAttributes().containsKey("attribute3"));
Assert.assertEquals(context.getFilteredIdPAttributes().get("attribute3"), attribute3);
- context.getFilteredIdPAttributes().put(attribute1.getId(), attribute1);
- Assert.assertEquals(context.getFilteredIdPAttributes().size(), 3);
- Assert.assertTrue(context.getFilteredIdPAttributes().containsKey("attribute1"));
- Assert.assertEquals(context.getFilteredIdPAttributes().get("attribute1"), attribute1);
- Assert.assertTrue(context.getFilteredIdPAttributes().containsKey("attribute2"));
- Assert.assertEquals(context.getFilteredIdPAttributes().get("attribute2"), attribute2);
- Assert.assertTrue(context.getFilteredIdPAttributes().containsKey("attribute3"));
- Assert.assertEquals(context.getFilteredIdPAttributes().get("attribute3"), attribute3);
-
- context.getFilteredIdPAttributes().remove("attribute2");
- Assert.assertEquals(context.getFilteredIdPAttributes().size(), 2);
- Assert.assertTrue(context.getFilteredIdPAttributes().containsKey("attribute1"));
- Assert.assertEquals(context.getFilteredIdPAttributes().get("attribute1"), attribute1);
- Assert.assertFalse(context.getFilteredIdPAttributes().containsKey("attribute2"));
- Assert.assertTrue(context.getFilteredIdPAttributes().containsKey("attribute3"));
- Assert.assertEquals(context.getFilteredIdPAttributes().get("attribute3"), attribute3);
-
- context.getFilteredIdPAttributes().remove(null);
- Assert.assertEquals(context.getFilteredIdPAttributes().size(), 2);
- Assert.assertTrue(context.getFilteredIdPAttributes().containsKey("attribute1"));
- Assert.assertEquals(context.getFilteredIdPAttributes().get("attribute1"), attribute1);
- Assert.assertTrue(context.getFilteredIdPAttributes().containsKey("attribute3"));
- Assert.assertEquals(context.getFilteredIdPAttributes().get("attribute3"), attribute3);
-
context.setFilteredIdPAttributes(null);
Assert.assertNotNull(context.getFilteredIdPAttributes());
Assert.assertTrue(context.getFilteredIdPAttributes().isEmpty());
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list