[java-oidc-common] branch main updated: Null cleanup, review NonnullElements.
Scott Cantor
cantor.2 at osu.edu
Tue Oct 3 16:43:13 UTC 2023
This is an automated email from the git hooks/post-receive script.
scantor pushed a commit to branch main
in repository java-oidc-common.
View the commit online:
http://git.shibboleth.net/view/?p=java-oidc-common.git;a=commit;h=63d08173a0066672009fb3db9ee67330c14571df
The following commit(s) were added to refs/heads/main by this push:
new 63d0817 Null cleanup, review NonnullElements.
63d0817 is described below
commit 63d08173a0066672009fb3db9ee67330c14571df
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Tue Oct 3 12:43:09 2023 -0400
Null cleanup, review NonnullElements.
---
.../spring/enc/impl/OIDCByteEncoderParser.java | 2 +-
.../enc/impl/OIDCScopedStringEncoderParser.java | 2 +-
.../spring/enc/impl/OIDCStringEncoderParser.java | 2 +-
.../resolver/spring/enc/impl/package-info.java | 5 +-
.../impl/OIDCByteAttributeTranscoder.java | 9 +--
.../impl/OIDCScopedStringAttributeTranscoder.java | 22 +++---
.../impl/OIDCStringAttributeTranscoder.java | 80 +++++++++++++---------
.../attribute/transcoding/impl/package-info.java | 5 +-
8 files changed, 76 insertions(+), 51 deletions(-)
diff --git a/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/resolver/spring/enc/impl/OIDCByteEncoderParser.java b/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/resolver/spring/enc/impl/OIDCByteEncoderParser.java
index 092edb6..6761f3b 100644
--- a/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/resolver/spring/enc/impl/OIDCByteEncoderParser.java
+++ b/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/resolver/spring/enc/impl/OIDCByteEncoderParser.java
@@ -33,7 +33,7 @@ public class OIDCByteEncoderParser extends BaseOIDCAttributeEncoderParser {
/** {@inheritDoc} */
@Override
- protected BeanReference buildTranscoder() {
+ @Nonnull protected BeanReference buildTranscoder() {
return new RuntimeBeanReference("OIDCByteTranscoder");
}
diff --git a/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/resolver/spring/enc/impl/OIDCScopedStringEncoderParser.java b/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/resolver/spring/enc/impl/OIDCScopedStringEncoderParser.java
index 21be30d..eef92ef 100644
--- a/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/resolver/spring/enc/impl/OIDCScopedStringEncoderParser.java
+++ b/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/resolver/spring/enc/impl/OIDCScopedStringEncoderParser.java
@@ -50,7 +50,7 @@ public class OIDCScopedStringEncoderParser extends BaseOIDCAttributeEncoderParse
/** {@inheritDoc} */
@Override
- protected BeanReference buildTranscoder() {
+ @Nonnull protected BeanReference buildTranscoder() {
return new RuntimeBeanReference("OIDCScopedStringTranscoder");
}
diff --git a/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/resolver/spring/enc/impl/OIDCStringEncoderParser.java b/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/resolver/spring/enc/impl/OIDCStringEncoderParser.java
index 6631d4c..0fb4da5 100644
--- a/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/resolver/spring/enc/impl/OIDCStringEncoderParser.java
+++ b/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/resolver/spring/enc/impl/OIDCStringEncoderParser.java
@@ -50,7 +50,7 @@ public class OIDCStringEncoderParser extends BaseOIDCAttributeEncoderParser {
/** {@inheritDoc} */
@Override
- protected BeanReference buildTranscoder() {
+ @Nonnull protected BeanReference buildTranscoder() {
return new RuntimeBeanReference("OIDCStringTranscoder");
}
diff --git a/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/resolver/spring/enc/impl/package-info.java b/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/resolver/spring/enc/impl/package-info.java
index d1043cb..1b76d18 100644
--- a/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/resolver/spring/enc/impl/package-info.java
+++ b/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/resolver/spring/enc/impl/package-info.java
@@ -13,4 +13,7 @@
*/
/** Attribute encoder namespace implementations.*/
-package net.shibboleth.oidc.attribute.resolver.spring.enc.impl;
\ No newline at end of file
+ at NonnullElements
+package net.shibboleth.oidc.attribute.resolver.spring.enc.impl;
+
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
diff --git a/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCByteAttributeTranscoder.java b/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCByteAttributeTranscoder.java
index 5010619..3703de8 100644
--- a/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCByteAttributeTranscoder.java
+++ b/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCByteAttributeTranscoder.java
@@ -14,7 +14,6 @@
package net.shibboleth.oidc.attribute.transcoding.impl;
-import java.util.Collections;
import java.util.List;
import javax.annotation.Nonnull;
@@ -30,9 +29,9 @@ import net.shibboleth.idp.attribute.IdPAttribute;
import net.shibboleth.idp.attribute.IdPAttributeValue;
import net.shibboleth.idp.attribute.transcoding.TranscodingRule;
import net.shibboleth.oidc.attribute.transcoding.AbstractOIDCAttributeTranscoder;
-import net.shibboleth.shared.annotation.constraint.NonnullElements;
import net.shibboleth.shared.codec.Base64Support;
import net.shibboleth.shared.codec.EncodingException;
+import net.shibboleth.shared.collection.CollectionSupport;
/**
* Class encoding byte attributes to base64 encoded string json object. Name of the attribute will be set as the key.
@@ -50,7 +49,9 @@ public class OIDCByteAttributeTranscoder extends AbstractOIDCAttributeTranscoder
throws AttributeEncodingException {
final Boolean asInteger = rule.getOrDefault(PROP_ASINTEGER, Boolean.class, false);
+ assert asInteger != null;
final Boolean asArray = rule.getOrDefault(PROP_ASARRAY, Boolean.class, false);
+ assert asArray != null;
final String delimiter = rule.getOrDefault(PROP_STRING_DELIMITER, String.class, " ");
String attributeString = "";
@@ -92,12 +93,12 @@ public class OIDCByteAttributeTranscoder extends AbstractOIDCAttributeTranscoder
/** {@inheritDoc} */
@Override
- @Nonnull @NonnullElements protected List<IdPAttributeValue> decodeValues(
+ @Nonnull protected List<IdPAttributeValue> decodeValues(
@Nullable final ProfileRequestContext profileRequestContext, @Nonnull final Object input,
@Nonnull final TranscodingRule rule) throws AttributeDecodingException {
// TODO: implement value decoding
- return Collections.emptyList();
+ return CollectionSupport.emptyList();
}
}
\ No newline at end of file
diff --git a/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCScopedStringAttributeTranscoder.java b/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCScopedStringAttributeTranscoder.java
index 084a97a..7265748 100644
--- a/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCScopedStringAttributeTranscoder.java
+++ b/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCScopedStringAttributeTranscoder.java
@@ -15,7 +15,6 @@
package net.shibboleth.oidc.attribute.transcoding.impl;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
@@ -24,7 +23,6 @@ import javax.annotation.Nullable;
import org.opensaml.profile.context.ProfileRequestContext;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import net.minidev.json.JSONArray;
import net.shibboleth.idp.attribute.AttributeDecodingException;
@@ -35,8 +33,9 @@ import net.shibboleth.idp.attribute.ScopedStringAttributeValue;
import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
import net.shibboleth.idp.attribute.transcoding.TranscodingRule;
import net.shibboleth.oidc.attribute.transcoding.AbstractOIDCAttributeTranscoder;
-import net.shibboleth.shared.annotation.constraint.NonnullElements;
import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.collection.CollectionSupport;
+import net.shibboleth.shared.primitive.LoggerFactory;
/**
* Class encoding scoped string attributes to string json object. Name of the attribute will be set as the key. The
@@ -75,7 +74,9 @@ public class OIDCScopedStringAttributeTranscoder extends AbstractOIDCAttributeTr
.collect(Collectors.toUnmodifiableList());
// Values of arbitrary mapped type placed into JSONArray.
- if (rule.getOrDefault(PROP_ASARRAY, Boolean.class, false)) {
+ final Boolean asArray = rule.getOrDefault(PROP_ASARRAY, Boolean.class, false);
+ assert asArray != null;
+ if (asArray) {
final JSONArray array = new JSONArray();
array.addAll(values);
return array;
@@ -101,7 +102,7 @@ public class OIDCScopedStringAttributeTranscoder extends AbstractOIDCAttributeTr
/** {@inheritDoc} */
@Override
- @Nonnull @NonnullElements protected List<IdPAttributeValue> decodeValues(
+ @Nonnull protected List<IdPAttributeValue> decodeValues(
@Nullable final ProfileRequestContext profileRequestContext, @Nonnull final Object input,
@Nonnull final TranscodingRule rule) throws AttributeDecodingException {
@@ -111,16 +112,16 @@ public class OIDCScopedStringAttributeTranscoder extends AbstractOIDCAttributeTr
final int offset = stringValue.indexOf(scopeDelimiter);
if (offset < 0) {
log.warn("Ignoring value with no scope delimiter ({})", scopeDelimiter);
- return Collections.emptyList();
+ return CollectionSupport.emptyList();
}
- return List.of(ScopedStringAttributeValue.valueOf(stringValue.substring(0, offset),
+ return CollectionSupport.listOf(ScopedStringAttributeValue.valueOf(stringValue.substring(0, offset),
stringValue.substring(offset + scopeDelimiter.length())));
- }
- else if (input instanceof JSONArray) {
+ } else if (input instanceof JSONArray) {
// Deal with array recursively
final JSONArray array = (JSONArray)input;
final List<IdPAttributeValue> arrayValuesDecoded = new ArrayList<>();
for (final Object element : array) {
+ assert element != null;
arrayValuesDecoded.addAll(decodeValues(profileRequestContext, element, rule));
}
return arrayValuesDecoded;
@@ -130,7 +131,8 @@ public class OIDCScopedStringAttributeTranscoder extends AbstractOIDCAttributeTr
+ "transcoding rule '{} -> {}'",
input.getClass().getName(), input, rule.getOrDefault(PROP_NAME, String.class, "unknown"),
rule.getOrDefault(AttributeTranscoderRegistry.PROP_ID, String.class, "unknown"));
- return Collections.emptyList();
+ return CollectionSupport.emptyList();
}
}
+
}
\ No newline at end of file
diff --git a/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCStringAttributeTranscoder.java b/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCStringAttributeTranscoder.java
index 0f93375..32c2460 100644
--- a/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCStringAttributeTranscoder.java
+++ b/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/transcoding/impl/OIDCStringAttributeTranscoder.java
@@ -15,7 +15,6 @@
package net.shibboleth.oidc.attribute.transcoding.impl;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@@ -26,7 +25,6 @@ import javax.annotation.Nullable;
import org.opensaml.core.xml.schema.XSBooleanValue;
import org.opensaml.profile.context.ProfileRequestContext;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import com.google.common.base.Predicates;
@@ -42,10 +40,11 @@ import net.shibboleth.idp.attribute.StringAttributeValue;
import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
import net.shibboleth.idp.attribute.transcoding.TranscodingRule;
import net.shibboleth.oidc.attribute.transcoding.AbstractOIDCAttributeTranscoder;
-import net.shibboleth.shared.annotation.constraint.NonnullElements;
import net.shibboleth.shared.annotation.constraint.NotEmpty;
import net.shibboleth.shared.annotation.constraint.NotLive;
import net.shibboleth.shared.annotation.constraint.Unmodifiable;
+import net.shibboleth.shared.collection.CollectionSupport;
+import net.shibboleth.shared.primitive.LoggerFactory;
/**
* Class encoding string attributes to string json object. Name of the attribute will be set as the key. The string
@@ -101,7 +100,9 @@ public class OIDCStringAttributeTranscoder extends AbstractOIDCAttributeTranscod
.map(StringAttributeValue::getValue));
// Handle String values parsed into JSON.
- if (rule.getOrDefault(PROP_ASOBJECT, Boolean.class, false)) {
+ final Boolean asObject = rule.getOrDefault(PROP_ASOBJECT, Boolean.class, false);
+ assert asObject != null;
+ if (asObject) {
if (values.size() == 1) {
final Object value = values.get(0);
if (!(value instanceof String)) {
@@ -128,7 +129,9 @@ public class OIDCStringAttributeTranscoder extends AbstractOIDCAttributeTranscod
}
// Values of arbitrary mapped type placed into JSONArray.
- if (rule.getOrDefault(PROP_ASARRAY, Boolean.class, false)) {
+ final Boolean asArray = rule.getOrDefault(PROP_ASARRAY, Boolean.class, false);
+ assert asArray != null;
+ if (asArray) {
final JSONArray array = new JSONArray();
array.addAll(values);
return array;
@@ -162,44 +165,52 @@ public class OIDCStringAttributeTranscoder extends AbstractOIDCAttributeTranscod
/** {@inheritDoc} */
@Override
- @Nonnull @NonnullElements protected List<IdPAttributeValue> decodeValues(
+ @Nonnull protected List<IdPAttributeValue> decodeValues(
@Nullable final ProfileRequestContext profileRequestContext, @Nonnull final Object input,
@Nonnull final TranscodingRule rule) throws AttributeDecodingException {
// Input could be any JSON data type e.g. String, Number, JSONObject, Array, Boolean.
if (input instanceof String) {
- return List.of(StringAttributeValue.valueOf((String)input));
-
- } else if (input instanceof Integer &&
- rule.getOrDefault(PROP_NUMBER_AS_STRING, Boolean.class, false)) {
- return List.of(StringAttributeValue.valueOf(Integer.toString((Integer)input)));
-
- } else if (input instanceof Double &&
- rule.getOrDefault(PROP_NUMBER_AS_STRING, Boolean.class, false)) {
- return List.of(StringAttributeValue.valueOf(Double.toString((Double)input)));
-
- } else if (input instanceof Boolean &&
- rule.getOrDefault(PROP_BOOLEAN_AS_STRING, Boolean.class, false)) {
- return List.of(StringAttributeValue.valueOf(Boolean.toString((Boolean)input)));
+ return CollectionSupport.listOf(StringAttributeValue.valueOf((String)input));
+ }
+
+ final Boolean numAsString = rule.getOrDefault(PROP_NUMBER_AS_STRING, Boolean.class, false);
+ assert numAsString != null;
+
+ final Boolean boolAsString = rule.getOrDefault(PROP_BOOLEAN_AS_STRING, Boolean.class, false);
+ assert boolAsString != null;
+
+ final Boolean asObject = rule.getOrDefault(PROP_ASOBJECT, Boolean.class, false);
+ assert asObject != null;
+
+ if (input instanceof Integer && numAsString) {
+ return CollectionSupport.listOf(StringAttributeValue.valueOf(Integer.toString((Integer)input)));
+ } else if (input instanceof Double && numAsString) {
+ return CollectionSupport.listOf(StringAttributeValue.valueOf(Double.toString((Double)input)));
+ } else if (input instanceof Boolean && boolAsString) {
+ return CollectionSupport.listOf(StringAttributeValue.valueOf(Boolean.toString((Boolean)input)));
} else if (input instanceof JSONArray) {
- if (rule.getOrDefault(PROP_ARRAY_AS_STRING, Boolean.class, false)) {
+ final Boolean arrayAsString = rule.getOrDefault(PROP_ARRAY_AS_STRING, Boolean.class, false);
+ assert arrayAsString != null;
+ if (arrayAsString) {
// Serialize JSON Array to JSON string
- return List.of(StringAttributeValue.valueOf(((JSONArray)input).toJSONString()));
+ return CollectionSupport.listOf(StringAttributeValue.valueOf(((JSONArray)input).toJSONString()));
} else {
// Deal with array recursively
- final JSONArray array = (JSONArray)input;
+ final JSONArray array = (JSONArray) input;
final List<IdPAttributeValue> arrayValuesDecoded = new ArrayList<>();
for (final Object element : array) {
+ assert element != null;
arrayValuesDecoded.addAll(decodeValues(profileRequestContext, element, rule));
}
return arrayValuesDecoded;
}
- } else if (input instanceof JSONObject && rule.getOrDefault(PROP_ASOBJECT, Boolean.class, false)) {
+ } else if (input instanceof JSONObject && asObject) {
// Serialize JSONObject to a JSON string.
- return List.of(StringAttributeValue.valueOf(((JSONObject)input).toJSONString()));
+ return CollectionSupport.listOf(StringAttributeValue.valueOf(((JSONObject)input).toJSONString()));
} else {
log.trace("Could not convert values of type {} for the claim '{}' to a string attribute using "
@@ -207,7 +218,7 @@ public class OIDCStringAttributeTranscoder extends AbstractOIDCAttributeTranscod
input.getClass().getName(), input, rule.getOrDefault(PROP_NAME, String.class, "unknown"),
rule.getOrDefault(AttributeTranscoderRegistry.PROP_ID, String.class, "unknown"));
- return Collections.emptyList();
+ return CollectionSupport.emptyList();
}
}
@@ -239,10 +250,13 @@ public class OIDCStringAttributeTranscoder extends AbstractOIDCAttributeTranscod
*
* @return list of String, Boolean or Integer objects
*/
- @Nonnull @NonnullElements @NotLive @Unmodifiable private List<?> transformValues(
- @Nonnull final TranscodingRule rule, @Nonnull @NonnullElements final Stream<String> attributeValues) {
+ @Nonnull @NotLive @Unmodifiable private List<?> transformValues(
+ @Nonnull final TranscodingRule rule, @Nonnull final Stream<String> attributeValues) {
+
+ final Boolean asInt = rule.getOrDefault(PROP_ASINTEGER, Boolean.class, false);
+ assert asInt != null;
- if (rule.getOrDefault(PROP_ASINTEGER, Boolean.class, false)) {
+ if (asInt) {
log.debug("String values interpreted as integer by rule");
return attributeValues
.map(v -> {
@@ -254,17 +268,19 @@ public class OIDCStringAttributeTranscoder extends AbstractOIDCAttributeTranscod
}
})
.filter(Predicates.notNull())
- .collect(Collectors.toUnmodifiableList());
+ .collect(CollectionSupport.nonnullCollector(Collectors.toUnmodifiableList())).get();
}
- if (rule.getOrDefault(PROP_ASBOOLEAN, Boolean.class, false)) {
+ final Boolean asBool = rule.getOrDefault(PROP_ASBOOLEAN, Boolean.class, false);
+ assert asBool != null;
+ if (asBool) {
log.debug("String values interpreted as Boolean by rule");
return attributeValues
.map(v -> XSBooleanValue.valueOf(v).getValue())
- .collect(Collectors.toUnmodifiableList());
+ .collect(CollectionSupport.nonnullCollector(Collectors.toUnmodifiableList())).get();
}
- return attributeValues.collect(Collectors.toUnmodifiableList());
+ return attributeValues.collect(CollectionSupport.nonnullCollector(Collectors.toUnmodifiableList())).get();
}
}
\ No newline at end of file
diff --git a/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/transcoding/impl/package-info.java b/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/transcoding/impl/package-info.java
index 8a13b2d..6fd87ac 100644
--- a/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/transcoding/impl/package-info.java
+++ b/oidc-common-attribute-impl/src/main/java/net/shibboleth/oidc/attribute/transcoding/impl/package-info.java
@@ -13,4 +13,7 @@
*/
/** Attribute encoder implementations. */
-package net.shibboleth.oidc.attribute.transcoding.impl;
\ No newline at end of file
+ at NonnullElements
+package net.shibboleth.oidc.attribute.transcoding.impl;
+
+import net.shibboleth.shared.annotation.constraint.NonnullElements;
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list