[java-oidc-common] branch main updated: Null cleanup in metadata layer.
Scott Cantor
cantor.2 at osu.edu
Tue Nov 7 21:11:32 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=258007b7a3ee93aa10aa76c091f61269930b514d
The following commit(s) were added to refs/heads/main by this push:
new 258007b Null cleanup in metadata layer.
258007b is described below
commit 258007b7a3ee93aa10aa76c091f61269930b514d
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Tue Nov 7 16:11:29 2023 -0500
Null cleanup in metadata layer.
---
.../oidc/metadata/DynamicBackingStore.java | 6 ++--
.../ProviderMetadataProviderContainer.java | 28 ++++++++-------
.../RelyingPartyClientInformationProvider.java | 16 +++++----
.../metadata/cache/impl/AbstractMetadataCache.java | 15 ++++----
.../cache/impl/BaseMetadataCacheBuilderSpec.java | 12 +++----
.../metadata/cache/impl/BatchMetadataCache.java | 12 +++----
.../cache/impl/BatchMetadataCacheBuilderSpec.java | 5 ++-
.../cache/impl/DefaultFileLoadingStrategy.java | 25 ++++++++------
.../cache/impl/DefaultJSONMapParsingStrategy.java | 2 +-
...oviderMetadataCriteriaToIdentifierStrategy.java | 7 ++--
...OIDCProviderMetadataExpirationTimeStrategy.java | 11 +++---
...oviderMetadataIdentifierExtractionStrategy.java | 6 ++--
...DefaultOIDCProviderMetadataParsingStrategy.java | 17 ++++-----
...efaultSourceMetadataExpirationTimeStrategy.java | 6 ++--
.../metadata/cache/impl/DynamicMetadataCache.java | 7 ++--
.../impl/DynamicMetadataCacheBuilderSpec.java | 4 +--
.../cache/impl/FetchThroughMetadataCache.java | 20 ++++++-----
.../impl/FetchThroughMetadataCacheBuilderSpec.java | 1 -
.../metadata/cache/impl/MetadataCacheBuilder.java | 2 +-
.../impl/MetadataPolicyLookupStrategyFactory.java | 5 ++-
.../impl/AbstractDynamicHTTPFetchingStrategy.java | 18 +++++-----
.../impl/AbstractFileOIDCEntityResolver.java | 21 ++++--------
.../metadata/impl/AbstractOIDCEntityResolver.java | 18 +++++-----
.../impl/AbstractOIDCMetadataResolver.java | 21 ++++++------
.../impl/AbstractReloadingOIDCEntityResolver.java | 15 ++++----
.../impl/ChainingClientInformationResolver.java | 31 +++++++----------
.../impl/ChainingProviderMetadataResolver.java | 31 +++++++----------
.../impl/ClientInformationNodeProcessor.java | 32 +++++++++--------
.../metadata/impl/DefaultDynamicBackingStore.java | 30 ++++++++--------
.../impl/FilesystemClientInformationResolver.java | 19 +++++-----
.../impl/FilesystemProviderMetadataResolver.java | 40 ++++------------------
.../HTTPProviderConfigurationFetchingStrategy.java | 15 +++++---
.../impl/PropertiesClientSecretValueResolver.java | 25 ++++++++------
.../impl/ReloadingProviderMetadataProvider.java | 19 +++++-----
...adingRelyingPartyClientInformationProvider.java | 14 ++++----
.../ResolverServiceClientSecretValueResolver.java | 33 ++++++++++--------
.../StorageServiceClientInformationManager.java | 4 +--
.../StorageServiceClientInformationResolver.java | 21 ++++--------
.../ext/impl/provider/ClientSecretProvider.java | 7 ++--
.../provider/ClientSecretReferenceProvider.java | 9 +++--
.../ext/impl/provider/InlineJwksProvider.java | 4 +--
.../policy/impl/DefaultMetadataPolicyEnforcer.java | 5 +--
.../impl/DefaultMetadataPolicyResponseHandler.java | 2 +-
.../impl/DefaultMetadataPolicyValidator.java | 2 +-
.../MetadataPolicyViaLocationFetchingStrategy.java | 12 +++----
.../filter/impl/ClientInformationParser.java | 21 +++++++-----
.../ClientInformationResolverServiceStrategy.java | 11 +++---
.../ProviderMetadataResolverServiceStrategy.java | 7 ++--
48 files changed, 340 insertions(+), 354 deletions(-)
diff --git a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/DynamicBackingStore.java b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/DynamicBackingStore.java
index 8d5db97..a35f504 100644
--- a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/DynamicBackingStore.java
+++ b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/DynamicBackingStore.java
@@ -45,7 +45,7 @@ public interface DynamicBackingStore<I, T> extends BackingStore<I, T> {
*
* @return a new or previously cache metadata management data.
*/
- @Nonnull public MetadataManagementData<I> computeManagementDataIfAbsent(@Nonnull final I identifier,
+ @Nonnull MetadataManagementData<I> computeManagementDataIfAbsent(@Nonnull final I identifier,
@Nonnull final Function<I, MetadataManagementData<I>> mappingFunction);
/**
@@ -56,7 +56,7 @@ public interface DynamicBackingStore<I, T> extends BackingStore<I, T> {
*
* @return the corresponding management data, or {@literal null} if not found.
*/
- @Nullable public MetadataManagementData<I> getManagementData(@Nonnull final I identifier);
+ @Nullable MetadataManagementData<I> getManagementData(@Nonnull final I identifier);
/**
* Remove the management data for the specified entityID.
@@ -73,4 +73,4 @@ public interface DynamicBackingStore<I, T> extends BackingStore<I, T> {
@Nonnull @NonnullElements @Unmodifiable @NotLive
Set<I> getManagementDataIdentifiers();
-}
+}
\ No newline at end of file
diff --git a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/ProviderMetadataProviderContainer.java b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/ProviderMetadataProviderContainer.java
index d798afc..168147a 100644
--- a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/ProviderMetadataProviderContainer.java
+++ b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/ProviderMetadataProviderContainer.java
@@ -17,13 +17,13 @@ package net.shibboleth.oidc.metadata;
import javax.annotation.Nonnull;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import com.google.common.base.Objects;
import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.LoggerFactory;
import net.shibboleth.shared.spring.service.AbstractServiceableComponent;
/**
@@ -37,15 +37,13 @@ public class ProviderMetadataProviderContainer extends AbstractServiceableCompon
private static int sortKeyValue;
/** Class logger. */
- private final Logger log = LoggerFactory.getLogger(ProviderMetadataProviderContainer.class);
+ @Nonnull private final Logger log = LoggerFactory.getLogger(ProviderMetadataProviderContainer.class);
/** The embedded resolver. */
- @NonnullAfterInit
- private ProviderMetadataResolver resolver;
+ @NonnullAfterInit private ProviderMetadataResolver resolver;
/** The key by which we sort the provider. */
- @NonnullAfterInit
- private Integer sortKey;
+ @NonnullAfterInit private Integer sortKey;
/**
* Set the sort key.
@@ -72,15 +70,19 @@ public class ProviderMetadataProviderContainer extends AbstractServiceableCompon
*
* @return the parameter we got as a constructor
*/
- @Nonnull
- public ProviderMetadataResolver getEmbeddedResolver() {
+ @Nonnull public ProviderMetadataResolver getEmbeddedResolver() {
return resolver;
}
+ /** {@inheritDoc} */
@Override
protected void doInitialize() throws ComponentInitializationException {
- setId(resolver.getId());
+ final String embeddedId = resolver.getId();
+ if (embeddedId == null) {
+ throw new ComponentInitializationException("Embedded resolver ID cannot be null");
+ }
+ setId(embeddedId);
super.doInitialize();
if (null == resolver) {
throw new ComponentInitializationException("ProviderMetadataResolver cannot be null");
@@ -96,13 +98,13 @@ public class ProviderMetadataProviderContainer extends AbstractServiceableCompon
}
}
-
+ /** {@inheritDoc} */
@Override
- @Nonnull
- public ProviderMetadataResolver getComponent() {
+ @Nonnull public ProviderMetadataResolver getComponent() {
return getEmbeddedResolver();
}
+ /** {@inheritDoc} */
@Override
public int compareTo(final ProviderMetadataProviderContainer other) {
ifNotInitializedThrowUninitializedComponentException();
@@ -133,8 +135,10 @@ public class ProviderMetadataProviderContainer extends AbstractServiceableCompon
return Objects.equal(otherRp.sortKey, sortKey) && Objects.equal(getId(), otherRp.getId());
}
+ /** {@inheritDoc} */
@Override
public int hashCode() {
return Objects.hashCode(sortKey, getId());
}
+
}
\ No newline at end of file
diff --git a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/RelyingPartyClientInformationProvider.java b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/RelyingPartyClientInformationProvider.java
index bb8b4bf..56afb32 100644
--- a/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/RelyingPartyClientInformationProvider.java
+++ b/oidc-common-metadata-api/src/main/java/net/shibboleth/oidc/metadata/RelyingPartyClientInformationProvider.java
@@ -20,7 +20,6 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import com.google.common.base.Objects;
import com.nimbusds.openid.connect.sdk.rp.OIDCClientInformation;
@@ -28,6 +27,7 @@ import com.nimbusds.openid.connect.sdk.rp.OIDCClientInformation;
import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.LoggerFactory;
import net.shibboleth.shared.resolver.CriteriaSet;
import net.shibboleth.shared.resolver.ResolverException;
import net.shibboleth.shared.spring.service.AbstractServiceableComponent;
@@ -44,15 +44,13 @@ public class RelyingPartyClientInformationProvider extends AbstractServiceableCo
private static int sortKeyValue;
/** Class logger. */
- private final Logger log = LoggerFactory.getLogger(RelyingPartyClientInformationProvider.class);
+ @Nonnull private final Logger log = LoggerFactory.getLogger(RelyingPartyClientInformationProvider.class);
/** The embedded resolver. */
- @NonnullAfterInit
- private ClientInformationResolver resolver;
+ @NonnullAfterInit private ClientInformationResolver resolver;
/** The key by which we sort the provider. */
- @NonnullAfterInit
- private Integer sortKey;
+ @NonnullAfterInit private Integer sortKey;
/** Constructor. */
public RelyingPartyClientInformationProvider() {
@@ -107,7 +105,11 @@ public class RelyingPartyClientInformationProvider extends AbstractServiceableCo
/** {@inheritDoc} */
@Override
protected void doInitialize() throws ComponentInitializationException {
- setId(resolver.getId());
+ final String embeddedId = resolver.getId();
+ if (embeddedId == null) {
+ throw new ComponentInitializationException("Embedded resolver ID cannot be null");
+ }
+ setId(embeddedId);
super.doInitialize();
if (null == resolver) {
throw new ComponentInitializationException("ClientInformationResolver cannot be null");
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/AbstractMetadataCache.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/AbstractMetadataCache.java
index f353f4b..79e07e9 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/AbstractMetadataCache.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/AbstractMetadataCache.java
@@ -16,7 +16,6 @@ package net.shibboleth.oidc.metadata.cache.impl;
import java.time.Instant;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -31,7 +30,6 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
@@ -45,10 +43,12 @@ import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
import net.shibboleth.shared.annotation.constraint.NonnullElements;
import net.shibboleth.shared.annotation.constraint.NotEmpty;
import net.shibboleth.shared.annotation.constraint.Positive;
+import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.component.AbstractIdentifiableInitializableComponent;
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.logic.Constraint;
import net.shibboleth.shared.logic.ConstraintViolationException;
+import net.shibboleth.shared.primitive.LoggerFactory;
import net.shibboleth.shared.primitive.TimerSupport;
import net.shibboleth.shared.resolver.CriteriaSet;
@@ -68,7 +68,7 @@ public abstract class AbstractMetadataCache<IdentifierType, MetadataType>
extends AbstractIdentifiableInitializableComponent implements MetadataCache<MetadataType> {
/** Class logger. */
- private final Logger log = LoggerFactory.getLogger(AbstractMetadataCache.class);
+ @Nonnull private final Logger log = LoggerFactory.getLogger(AbstractMetadataCache.class);
/** Cached log prefix. */
@Nullable private String logPrefix;
@@ -143,13 +143,13 @@ public abstract class AbstractMetadataCache<IdentifierType, MetadataType>
if (logPrefix == null) {
logPrefix = "Metadata Cache " + (getId() != null ? getId() : "(unknown)") + ":";
}
+ assert logPrefix != null;
return logPrefix;
}
@Override
protected void doInitialize() throws ComponentInitializationException {
- super.doInitialize();
-
+ super.doInitialize();
if (identifierExtractionStrategy == null) {
throw new ComponentInitializationException("Identifier extraction strategy can not be null");
@@ -376,7 +376,7 @@ public abstract class AbstractMetadataCache<IdentifierType, MetadataType>
if (metadata != null) {
return new ArrayList<>(metadata);
}
- return Collections.emptyList();
+ return CollectionSupport.emptyList();
}
/**
@@ -528,5 +528,4 @@ public abstract class AbstractMetadataCache<IdentifierType, MetadataType>
}
-}
-
+}
\ No newline at end of file
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/BaseMetadataCacheBuilderSpec.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/BaseMetadataCacheBuilderSpec.java
index 894236c..67207de 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/BaseMetadataCacheBuilderSpec.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/BaseMetadataCacheBuilderSpec.java
@@ -24,13 +24,12 @@ import java.util.function.Predicate;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
-import com.google.common.base.Predicates;
-
import net.shibboleth.oidc.metadata.filter.MetadataFilterContext;
import net.shibboleth.shared.annotation.constraint.NotEmpty;
import net.shibboleth.shared.annotation.constraint.Positive;
import net.shibboleth.shared.logic.Constraint;
import net.shibboleth.shared.logic.ConstraintViolationException;
+import net.shibboleth.shared.logic.PredicateSupport;
import net.shibboleth.shared.resolver.CriteriaSet;
/**
@@ -42,12 +41,11 @@ import net.shibboleth.shared.resolver.CriteriaSet;
public abstract class BaseMetadataCacheBuilderSpec<IdentifierType, MetadataType> {
/** Factor used to compute when the next refresh interval will occur. Default value: 0.75 */
- @Positive private Float refreshDelayFactor;
+ @Positive @Nonnull private Float refreshDelayFactor;
/** Strategy used to extract an identifier from the given metadata.*/
@Nullable private Function<MetadataType, IdentifierType> identifierExtractionStrategy;
-
/** Map criteria to identifiers to use as keys to the backing store.*/
@Nullable private Function<CriteriaSet, IdentifierType> criteriaToIdentifierStrategy;
@@ -74,7 +72,7 @@ public abstract class BaseMetadataCacheBuilderSpec<IdentifierType, MetadataType>
// create a default direct in/out filter
metadataFilterStrategy = (metadata, context) -> metadata;
// create default TRUE is metadata valid predicate
- metadataValidPredicate = Predicates.alwaysTrue();
+ metadataValidPredicate = PredicateSupport.alwaysTrue();
}
@@ -216,7 +214,7 @@ public abstract class BaseMetadataCacheBuilderSpec<IdentifierType, MetadataType>
*
* @param factor delay factor used to compute the next refresh time
*/
- public void setRefreshDelayFactor(@Nonnull final Float factor) {
+ public void setRefreshDelayFactor(@Nonnull @Positive final Float factor) {
if (factor <= 0 || factor >= 1) {
throw new
@@ -226,4 +224,4 @@ public abstract class BaseMetadataCacheBuilderSpec<IdentifierType, MetadataType>
refreshDelayFactor = factor;
}
-}
+}
\ No newline at end of file
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/BatchMetadataCache.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/BatchMetadataCache.java
index f1be922..2b16f83 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/BatchMetadataCache.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/BatchMetadataCache.java
@@ -17,7 +17,6 @@ package net.shibboleth.oidc.metadata.cache.impl;
import java.time.Duration;
import java.time.Instant;
import java.time.ZoneId;
-import java.util.Collections;
import java.util.List;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
@@ -31,7 +30,6 @@ import javax.annotation.Nullable;
import javax.annotation.concurrent.ThreadSafe;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import net.shibboleth.oidc.metadata.BatchBackingStore;
import net.shibboleth.oidc.metadata.cache.CacheLoadingContext;
@@ -41,8 +39,10 @@ import net.shibboleth.oidc.metadata.cache.MetadataCacheException;
import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
import net.shibboleth.shared.annotation.constraint.NonnullElements;
import net.shibboleth.shared.annotation.constraint.Positive;
+import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.LoggerFactory;
import net.shibboleth.shared.resolver.CriteriaSet;
/**
@@ -79,7 +79,7 @@ public class BatchMetadataCache<IdentifierType, MetadataType>
extends AbstractMetadataCache<IdentifierType, MetadataType> {
/** Class logger. */
- private final Logger log = LoggerFactory.getLogger(BatchMetadataCache.class);
+ @Nonnull private final Logger log = LoggerFactory.getLogger(BatchMetadataCache.class);
/**
* Refresh interval used when metadata does not contain any validUntil or cacheDuration information.
@@ -347,7 +347,7 @@ public class BatchMetadataCache<IdentifierType, MetadataType>
if (allMetadata.isEmpty()) {
log.debug("{} No metadata candidates for '{}' found, returning empty result",
getLogPrefix(), identifier);
- return Collections.emptyList();
+ return CollectionSupport.emptyList();
} else {
log.debug("{} There are {} metadata candidates for '{}' found in cache",
getLogPrefix(), allMetadata.size(), identifier);
@@ -356,10 +356,10 @@ public class BatchMetadataCache<IdentifierType, MetadataType>
} else if (!matchOnIdentifierRequired) {
log.debug("{} No identifier found to lookup, identifier match is not required, returning all known "
+ "metadata",getLogPrefix());
- return Collections.unmodifiableList(getBackingStore().getOrderedValues());
+ return CollectionSupport.copyToList(getBackingStore().getOrderedValues());
} else {
log.debug("{} No identifier found to lookup, returning empty result", getLogPrefix());
- return Collections.emptyList();
+ return CollectionSupport.emptyList();
}
} finally {
readWriteLock.readLock().unlock();
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/BatchMetadataCacheBuilderSpec.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/BatchMetadataCacheBuilderSpec.java
index a935dd0..649cea8 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/BatchMetadataCacheBuilderSpec.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/BatchMetadataCacheBuilderSpec.java
@@ -24,11 +24,10 @@ import java.util.function.Predicate;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
-import com.google.common.base.Predicates;
-
import net.shibboleth.oidc.metadata.cache.LoadingStrategy;
import net.shibboleth.shared.annotation.constraint.Positive;
import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.logic.PredicateSupport;
/**
* A specification for building a batch read-ahead metadata cache.
@@ -76,7 +75,7 @@ public class BatchMetadataCacheBuilderSpec<IdentifierType, MetadataType>
maxRefreshDelay = Duration.ofHours(4);
minRefreshDelay = Duration.ofMinutes(5);
matchOnIdentifierRequired = false;
- sourceMetadataValidPredicate = Predicates.alwaysTrue();
+ sourceMetadataValidPredicate = PredicateSupport.alwaysTrue();
}
/**
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DefaultFileLoadingStrategy.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DefaultFileLoadingStrategy.java
index 83fa404..4771fac 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DefaultFileLoadingStrategy.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DefaultFileLoadingStrategy.java
@@ -25,7 +25,6 @@ import javax.annotation.Nullable;
import javax.annotation.concurrent.ThreadSafe;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.springframework.core.io.Resource;
import net.shibboleth.oidc.metadata.cache.CacheLoadingContext;
@@ -33,6 +32,7 @@ import net.shibboleth.oidc.metadata.cache.CacheLoadingException;
import net.shibboleth.oidc.metadata.cache.LoadingStrategy;
import net.shibboleth.oidc.metadata.impl.ResolverHelper;
import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.primitive.LoggerFactory;
/** Default strategy for loading information from a file.*/
@ThreadSafe
@@ -70,21 +70,24 @@ public class DefaultFileLoadingStrategy implements LoadingStrategy {
* Get the time for the last update/modification of the metadata file.
* @return The last update time.
*/
- private Instant getMetadataUpdateTime() {
- return Instant.ofEpochMilli(metadataFile.lastModified());
+ @Nullable private Instant getMetadataUpdateTime() {
+ return metadataFile != null ? Instant.ofEpochMilli(metadataFile.lastModified()) : null;
}
- @Override
+ /** {@inheritDoc} */
@Nullable public byte[] load(@Nonnull final CacheLoadingContext context) throws CacheLoadingException {
- if (metadataFile == null) {
+
+ final File mfile = metadataFile;
+ if (mfile == null) {
return null;
}
+
try {
- ResolverHelper.validateMetadataFile(metadataFile);
+ ResolverHelper.validateMetadataFile(mfile);
final Instant metadataUpdateTime = getMetadataUpdateTime();
- if (context.getLastRefresh() == null || context.getLastUpdate() == null ||
+ if (context.getLastRefresh() == null || context.getLastUpdate() == null || metadataUpdateTime == null ||
metadataUpdateTime.isAfter(context.getLastRefresh())) {
- log.debug("Returning the contents of {} as byte array", metadataFile.toPath());
+ log.debug("Returning the contents of {} as byte array", mfile.toPath());
try (FileInputStream fileInput = new FileInputStream(metadataFile)){
return ResolverHelper.inputstreamToByteArray(fileInput);
} catch (final Exception e) {
@@ -93,15 +96,15 @@ public class DefaultFileLoadingStrategy implements LoadingStrategy {
}
return null;
} catch (final Exception e) {
- final String errMsg = "Unable to read metadata file " + metadataFile.getAbsolutePath();
+ final String errMsg = "Unable to read metadata file " + mfile.getAbsolutePath();
log.error(errMsg, e.getMessage());
throw new CacheLoadingException(errMsg, e);
}
}
- @Override
+ /** {@inheritDoc} */
@Nonnull public String getSourceIdentifier() {
return metadataFileFriendlyName;
}
-}
+}
\ No newline at end of file
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DefaultJSONMapParsingStrategy.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DefaultJSONMapParsingStrategy.java
index 546b22c..db6e0a4 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DefaultJSONMapParsingStrategy.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DefaultJSONMapParsingStrategy.java
@@ -24,13 +24,13 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.type.MapType;
import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.LoggerFactory;
/**
* Deserializes a UTF-8 JSON string into a Map.
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DefaultOIDCProviderMetadataCriteriaToIdentifierStrategy.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DefaultOIDCProviderMetadataCriteriaToIdentifierStrategy.java
index 2c0464f..1b8439d 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DefaultOIDCProviderMetadataCriteriaToIdentifierStrategy.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DefaultOIDCProviderMetadataCriteriaToIdentifierStrategy.java
@@ -26,9 +26,8 @@ import net.shibboleth.shared.resolver.CriteriaSet;
/** Strategy for extracting the {@link IssuerIDCriterion} from a {@link CriteriaSet}. */
public class DefaultOIDCProviderMetadataCriteriaToIdentifierStrategy implements Function<CriteriaSet, Issuer> {
- @Override
- @Nullable
- public Issuer apply(@Nullable final CriteriaSet criteria) {
+ /** {@inheritDoc} */
+ @Nullable public Issuer apply(@Nullable final CriteriaSet criteria) {
if (criteria == null) {
return null;
}
@@ -39,4 +38,4 @@ public class DefaultOIDCProviderMetadataCriteriaToIdentifierStrategy implements
return null;
}
-}
+}
\ No newline at end of file
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DefaultOIDCProviderMetadataExpirationTimeStrategy.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DefaultOIDCProviderMetadataExpirationTimeStrategy.java
index cb1c3bb..fb17261 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DefaultOIDCProviderMetadataExpirationTimeStrategy.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DefaultOIDCProviderMetadataExpirationTimeStrategy.java
@@ -17,7 +17,7 @@ package net.shibboleth.oidc.metadata.cache.impl;
import java.time.Instant;
import java.util.function.Function;
-import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
import com.nimbusds.openid.connect.sdk.op.OIDCProviderMetadata;
@@ -31,9 +31,12 @@ public class DefaultOIDCProviderMetadataExpirationTimeStrategy
implements Function<ExpirationTimeContext<OIDCProviderMetadata>, Instant> {
- @Override
- public Instant apply(@Nonnull final ExpirationTimeContext<OIDCProviderMetadata> context) {
+ /** {@inheritDoc} */
+ @Nullable public Instant apply(@Nullable final ExpirationTimeContext<OIDCProviderMetadata> context) {
+ if (context == null) {
+ return null;
+ }
return context.getNow().plus(context.getMaxCacheDuration());
}
-}
+}
\ No newline at end of file
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DefaultOIDCProviderMetadataIdentifierExtractionStrategy.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DefaultOIDCProviderMetadataIdentifierExtractionStrategy.java
index 5ef1935..2a69646 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DefaultOIDCProviderMetadataIdentifierExtractionStrategy.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DefaultOIDCProviderMetadataIdentifierExtractionStrategy.java
@@ -24,12 +24,12 @@ import com.nimbusds.openid.connect.sdk.op.OIDCProviderMetadata;
/** Strategy for finding the Issuer of the given OIDCProviderMetadata.*/
public class DefaultOIDCProviderMetadataIdentifierExtractionStrategy implements Function<OIDCProviderMetadata, Issuer>{
- @Override
- public Issuer apply(@Nullable final OIDCProviderMetadata metadata) {
+ /** {@inheritDoc} */
+ @Nullable public Issuer apply(@Nullable final OIDCProviderMetadata metadata) {
if (metadata == null) {
return null;
}
return metadata.getIssuer();
}
-}
+}
\ No newline at end of file
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DefaultOIDCProviderMetadataParsingStrategy.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DefaultOIDCProviderMetadataParsingStrategy.java
index c1a490e..6244846 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DefaultOIDCProviderMetadataParsingStrategy.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DefaultOIDCProviderMetadataParsingStrategy.java
@@ -15,7 +15,6 @@
package net.shibboleth.oidc.metadata.cache.impl;
import java.nio.charset.StandardCharsets;
-import java.util.Collections;
import java.util.List;
import java.util.function.Function;
@@ -23,22 +22,24 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import com.nimbusds.oauth2.sdk.ParseException;
import com.nimbusds.openid.connect.sdk.op.OIDCProviderMetadata;
+import net.shibboleth.shared.collection.CollectionSupport;
+import net.shibboleth.shared.primitive.LoggerFactory;
+
/** Parse a raw byte array into a *single* OIDCProviderMetadata object.*/
public class DefaultOIDCProviderMetadataParsingStrategy implements Function<byte[], List<OIDCProviderMetadata>> {
/** Class logger. */
@Nonnull private final Logger log = LoggerFactory.getLogger(DefaultOIDCProviderMetadataParsingStrategy.class);
- @Override
- @Nonnull public List<OIDCProviderMetadata> apply(@Nullable final byte[] rawMetdata) {
+ /** {@inheritDoc} */
+ @Nullable public List<OIDCProviderMetadata> apply(@Nullable final byte[] rawMetdata) {
if (rawMetdata == null) {
log.warn("Raw metadata is null, unable to parse OIDC Provider Metadata");
- return Collections.emptyList();
+ return CollectionSupport.emptyList();
}
try {
final OIDCProviderMetadata metadata =
@@ -46,11 +47,11 @@ public class DefaultOIDCProviderMetadataParsingStrategy implements Function<byte
if (metadata != null) {
return List.of(metadata);
}
- return Collections.emptyList();
+ return CollectionSupport.emptyList();
} catch (final ParseException e) {
log.error("Error parsing bytes to metadata", e);
- return Collections.emptyList();
+ return CollectionSupport.emptyList();
}
}
-}
+}
\ No newline at end of file
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DefaultSourceMetadataExpirationTimeStrategy.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DefaultSourceMetadataExpirationTimeStrategy.java
index 02a3a72..b289cdf 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DefaultSourceMetadataExpirationTimeStrategy.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DefaultSourceMetadataExpirationTimeStrategy.java
@@ -42,9 +42,9 @@ public class DefaultSourceMetadataExpirationTimeStrategy
expiryDuration = Constraint.isNotNull(duration, "Expiry duration can not be null");
}
- @Override
- public Instant apply(@Nullable final byte[] sourceMetadata) {
+ /** {@inheritDoc} */
+ @Nullable public Instant apply(@Nullable final byte[] sourceMetadata) {
return Instant.now().plus(expiryDuration);
}
-}
+}
\ No newline at end of file
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DynamicMetadataCache.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DynamicMetadataCache.java
index 5dcb77b..88d7612 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DynamicMetadataCache.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DynamicMetadataCache.java
@@ -32,7 +32,6 @@ import javax.annotation.Nullable;
import org.opensaml.core.metrics.MetricsSupport;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import com.codahale.metrics.Gauge;
import com.codahale.metrics.MetricRegistry;
@@ -49,6 +48,7 @@ import net.shibboleth.shared.annotation.constraint.NonnullElements;
import net.shibboleth.shared.annotation.constraint.NotEmpty;
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.LoggerFactory;
import net.shibboleth.shared.primitive.StringSupport;
import net.shibboleth.shared.resolver.CriteriaSet;
@@ -85,7 +85,7 @@ public class DynamicMetadataCache<IdentifierType, MetadataType>
public static final String METRIC_RATIOGAUGE_FETCH_TO_GET = "ratioGauge.fetchToGet";
/** Class logger. */
- private final Logger log = LoggerFactory.getLogger(DynamicMetadataCache.class);
+ @Nonnull private final Logger log = LoggerFactory.getLogger(DynamicMetadataCache.class);
/** The interval at which the cleanup task should run. */
@NonnullAfterInit private Duration cleanupTaskInterval;
@@ -708,5 +708,4 @@ public class DynamicMetadataCache<IdentifierType, MetadataType>
}
-
-}
+}
\ No newline at end of file
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DynamicMetadataCacheBuilderSpec.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DynamicMetadataCacheBuilderSpec.java
index 000c796..4fcbce7 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DynamicMetadataCacheBuilderSpec.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/DynamicMetadataCacheBuilderSpec.java
@@ -47,7 +47,7 @@ public class DynamicMetadataCacheBuilderSpec <IdentifierType, MetadataType>
@Nonnull private Duration minCacheDuration;
/** The maximum idle time for which the cache will keep data for before it is removed. */
- @Nullable private Duration maxIdleEntityData;
+ @Nonnull private Duration maxIdleEntityData;
/** The interval at which the cleanup task should run. */
@Nonnull private Duration cleanupTaskInterval;
@@ -61,10 +61,8 @@ public class DynamicMetadataCacheBuilderSpec <IdentifierType, MetadataType>
/** Strategy used to compute an expiration time. */
@Nullable private Function<ExpirationTimeContext<MetadataType>, Instant> metadataExpirationTimeStrategy;
-
/** Constructor. */
protected DynamicMetadataCacheBuilderSpec() {
- super();
maxCacheDuration = Duration.ofHours(8);
minCacheDuration = Duration.ofMinutes(10);
maxIdleEntityData = Duration.ofHours(8);
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/FetchThroughMetadataCache.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/FetchThroughMetadataCache.java
index c6e0f2e..7133c59 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/FetchThroughMetadataCache.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/FetchThroughMetadataCache.java
@@ -15,7 +15,6 @@
package net.shibboleth.oidc.metadata.cache.impl;
-import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.function.Function;
@@ -24,7 +23,6 @@ import javax.annotation.Nonnull;
import javax.annotation.concurrent.ThreadSafe;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import net.shibboleth.oidc.metadata.cache.MetadataCache;
import net.shibboleth.oidc.metadata.cache.MetadataCacheException;
@@ -32,8 +30,10 @@ import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
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.collection.CollectionSupport;
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.LoggerFactory;
import net.shibboleth.shared.resolver.CriteriaSet;
/**
@@ -51,7 +51,7 @@ public class FetchThroughMetadataCache <IdentifierType, MetadataType>
extends AbstractMetadataCache<IdentifierType, MetadataType> {
/** Class logger. */
- private final Logger log = LoggerFactory.getLogger(FetchThroughMetadataCache.class);
+ @Nonnull private final Logger log = LoggerFactory.getLogger(FetchThroughMetadataCache.class);
/** The function to use to fetch/load metadata entries.*/
@NonnullAfterInit private Function<CriteriaSet, MetadataType> fetchStrategy;
@@ -62,6 +62,7 @@ public class FetchThroughMetadataCache <IdentifierType, MetadataType>
super(null);
}
+ /** {@inheritDoc} */
@Override
protected void doInitialize() throws ComponentInitializationException {
super.doInitialize();
@@ -84,6 +85,7 @@ public class FetchThroughMetadataCache <IdentifierType, MetadataType>
fetchStrategy = Constraint.isNotNull(strategy, "Dynamic Metadata fetch strategy can not be null");
}
+ /** {@inheritDoc} */
@Override
@Nonnull @NonnullElements @NotLive public List<MetadataType> get(
@Nonnull @NotEmpty final CriteriaSet criteria) throws MetadataCacheException {
@@ -105,7 +107,7 @@ public class FetchThroughMetadataCache <IdentifierType, MetadataType>
if (filteredMetadata == null) {
log.warn("{} Filtered metadata is null, no further processing performed", getLogPrefix());
- return Collections.emptyList();
+ return CollectionSupport.emptyList();
}
final IdentifierType extractedIdentifier = getIdentifierExtractionStrategy().apply(filteredMetadata);
@@ -113,27 +115,27 @@ public class FetchThroughMetadataCache <IdentifierType, MetadataType>
if (extractedIdentifier == null) {
log.warn("{} Metadata identifier could not be extracted, no further processing performed",
getLogPrefix());
- return Collections.emptyList();
+ return CollectionSupport.emptyList();
}
// equality method of the identifier is required to be implemented correctly.
if (!Objects.equals(identifier, extractedIdentifier)) {
log.warn("{} New metadata's identifer '{}' does not match expected identifier '{}', "
+ "will not process", getLogPrefix(), extractedIdentifier, identifier);
- return Collections.emptyList();
+ return CollectionSupport.emptyList();
}
log.debug("{} Resolved metadata with identifier '{}'",getLogPrefix(), extractedIdentifier);
- return List.of(filteredMetadata);
+ return CollectionSupport.singletonList(filteredMetadata);
} else {
log.trace("{} Metadata for '{}' could not be resolved or is not valid",getLogPrefix(), identifier);
}
} else {
log.debug("Identifier not resolvable from criteria, can not fetch metadata");
}
- return Collections.emptyList();
+ return CollectionSupport.emptyList();
}
-}
+}
\ No newline at end of file
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/FetchThroughMetadataCacheBuilderSpec.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/FetchThroughMetadataCacheBuilderSpec.java
index 3434bd0..2689d7e 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/FetchThroughMetadataCacheBuilderSpec.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/FetchThroughMetadataCacheBuilderSpec.java
@@ -36,7 +36,6 @@ public class FetchThroughMetadataCacheBuilderSpec <IdentifierType, MetadataType>
/** The function to use to fetch metadata if either none exists, or the existing is stale.*/
@Nullable private Function<CriteriaSet, MetadataType> fetchStrategy;
-
/** Constructor. */
protected FetchThroughMetadataCacheBuilderSpec() {
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/MetadataCacheBuilder.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/MetadataCacheBuilder.java
index 7917207..007544b 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/MetadataCacheBuilder.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/MetadataCacheBuilder.java
@@ -17,12 +17,12 @@ package net.shibboleth.oidc.metadata.cache.impl;
import javax.annotation.Nonnull;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import net.shibboleth.oidc.metadata.cache.MetadataCache;
import net.shibboleth.oidc.metadata.impl.DefaultBatchBackingStore;
import net.shibboleth.oidc.metadata.impl.DefaultDynamicBackingStore;
import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.primitive.LoggerFactory;
/**
* A builder that creates, initializes, and safely publishes the correct {@link MetadataCache metadata cache}
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/MetadataPolicyLookupStrategyFactory.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/MetadataPolicyLookupStrategyFactory.java
index 8ba42d6..49a7909 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/MetadataPolicyLookupStrategyFactory.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/cache/impl/MetadataPolicyLookupStrategyFactory.java
@@ -61,7 +61,7 @@ public class MetadataPolicyLookupStrategyFactory {
* @throws ComponentInitializationException on error.
* @throws IOException on error.
*/
- public Function<ProfileRequestContext,Map<String,MetadataPolicy>> buildFileLoadingMetadataPolicyResolver(
+ @Nonnull public Function<ProfileRequestContext,Map<String,MetadataPolicy>> buildFileLoadingMetadataPolicyResolver(
@ParameterName(name="resource") @Nullable final String resource,
@ParameterName(name="cacheSpec") @Nonnull
final BatchMetadataCacheBuilderSpec<String, Map<String, MetadataPolicy>> cacheSpec,
@@ -97,5 +97,4 @@ public class MetadataPolicyLookupStrategyFactory {
}
-
-}
+}
\ No newline at end of file
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/AbstractDynamicHTTPFetchingStrategy.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/AbstractDynamicHTTPFetchingStrategy.java
index b5062e3..d869f09 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/AbstractDynamicHTTPFetchingStrategy.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/AbstractDynamicHTTPFetchingStrategy.java
@@ -34,7 +34,6 @@ import org.apache.hc.core5.http.io.HttpClientResponseHandler;
import org.opensaml.security.httpclient.HttpClientSecurityParameters;
import org.opensaml.security.httpclient.HttpClientSecuritySupport;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.slf4j.MDC;
import com.google.common.base.Strings;
@@ -47,6 +46,7 @@ import net.shibboleth.shared.collection.LazySet;
import net.shibboleth.shared.component.AbstractIdentifiableInitializableComponent;
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.LoggerFactory;
import net.shibboleth.shared.primitive.StringSupport;
import net.shibboleth.shared.resolver.CriteriaSet;
import net.shibboleth.shared.resolver.ResolverException;
@@ -174,8 +174,7 @@ public abstract class AbstractDynamicHTTPFetchingStrategy<MetadataType>
*
* @return the supported content types
*/
- @NonnullAfterInit @NotLive @Unmodifiable
- public List<String> getSupportedContentTypes() {
+ @NonnullAfterInit @NotLive @Unmodifiable public List<String> getSupportedContentTypes() {
return supportedContentTypes;
}
@@ -199,8 +198,8 @@ public abstract class AbstractDynamicHTTPFetchingStrategy<MetadataType>
}
}
- @Override
- @Nullable public MetadataType apply(@Nonnull final CriteriaSet criteria) {
+ /** {@inheritDoc} */
+ @Nullable public MetadataType apply(@Nullable final CriteriaSet criteria) {
log.debug("{} fetching metadata based on criteria: {}", getId(), criteria);
final ClassicHttpRequest request = buildHttpRequest(criteria);
if (request == null) {
@@ -230,8 +229,9 @@ public abstract class AbstractDynamicHTTPFetchingStrategy<MetadataType>
*
* @return a new instance of {@link HttpClientContext}
*/
- private HttpClientContext buildHttpClientContext(@Nonnull final ClassicHttpRequest request) {
+ @Nonnull private HttpClientContext buildHttpClientContext(@Nonnull final ClassicHttpRequest request) {
final HttpClientContext context = HttpClientContext.create();
+ assert context != null;
HttpClientSecuritySupport.marshalSecurityParameters(context, httpClientSecurityParameters, true);
HttpClientSecuritySupport.addDefaultTLSTrustEngineCriteria(context, request);
@@ -245,7 +245,7 @@ public abstract class AbstractDynamicHTTPFetchingStrategy<MetadataType>
* @param criteria the input criteria set
* @return the newly constructed request, or null if it can not be built from the supplied criteria
*/
- @Nullable private ClassicHttpRequest buildHttpRequest(@Nonnull final CriteriaSet criteria) {
+ @Nullable private ClassicHttpRequest buildHttpRequest(@Nullable final CriteriaSet criteria) {
final String url = buildRequestURL(criteria);
log.debug("Built request URL of: {}", url);
@@ -269,6 +269,6 @@ public abstract class AbstractDynamicHTTPFetchingStrategy<MetadataType>
* @param criteria the input criteria set
* @return the request URL, or null if it can not be built based on the supplied criteria
*/
- @Nullable protected abstract String buildRequestURL(@Nonnull final CriteriaSet criteria);
+ @Nullable protected abstract String buildRequestURL(@Nullable final CriteriaSet criteria);
-}
+}
\ No newline at end of file
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/AbstractFileOIDCEntityResolver.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/AbstractFileOIDCEntityResolver.java
index 33cfc58..9c52851 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/AbstractFileOIDCEntityResolver.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/AbstractFileOIDCEntityResolver.java
@@ -24,12 +24,12 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.springframework.core.io.Resource;
import com.nimbusds.oauth2.sdk.id.Identifier;
import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.LoggerFactory;
import net.shibboleth.shared.resolver.ResolverException;
@@ -56,7 +56,7 @@ public abstract class AbstractFileOIDCEntityResolver<Key extends Identifier, Val
* @throws IOException If the metedata cannot be loaded.
*/
protected AbstractFileOIDCEntityResolver(@Nonnull final Resource metadata) throws IOException {
- setMetadataFile(metadata.getFile());
+ metadataFile = Constraint.isNotNull(metadata.getFile(), "Metadata file cannot be null");
}
/**
@@ -67,10 +67,10 @@ public abstract class AbstractFileOIDCEntityResolver<Key extends Identifier, Val
*
* @throws IOException If the metedata cannot be loaded.
*/
- protected AbstractFileOIDCEntityResolver(@Nullable final Timer backgroundTaskTimer, @Nonnull final Resource metadata)
- throws IOException {
+ protected AbstractFileOIDCEntityResolver(@Nullable final Timer backgroundTaskTimer,
+ @Nonnull final Resource metadata) throws IOException {
super(backgroundTaskTimer);
- setMetadataFile(metadata.getFile());
+ metadataFile = Constraint.isNotNull(metadata.getFile(), "Metadata file cannot be null");
}
/**
@@ -84,14 +84,6 @@ public abstract class AbstractFileOIDCEntityResolver<Key extends Identifier, Val
metadataFile = Constraint.isNotNull(file, "Metadata file cannot be null");
}
-
- /** {@inheritDoc} */
- @Override
- protected void doDestroy() {
- metadataFile = null;
-
- super.doDestroy();
- }
/** {@inheritDoc} */
@Override
@@ -126,4 +118,5 @@ public abstract class AbstractFileOIDCEntityResolver<Key extends Identifier, Val
throw new ResolverException(errMsg, e);
}
}
-}
+
+}
\ No newline at end of file
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/AbstractOIDCEntityResolver.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/AbstractOIDCEntityResolver.java
index 165f695..6707cfa 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/AbstractOIDCEntityResolver.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/AbstractOIDCEntityResolver.java
@@ -15,7 +15,6 @@
package net.shibboleth.oidc.metadata.impl;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@@ -23,16 +22,17 @@ import java.util.concurrent.ConcurrentHashMap;
import javax.annotation.Nonnull;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import com.google.common.base.Strings;
import com.nimbusds.oauth2.sdk.id.Identifier;
import net.shibboleth.shared.annotation.constraint.NonnullElements;
import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.component.AbstractIdentifiableInitializableComponent;
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.LoggerFactory;
import net.shibboleth.shared.resolver.Resolver;
import net.shibboleth.shared.resolver.ResolverException;
@@ -46,7 +46,7 @@ public abstract class AbstractOIDCEntityResolver<Key extends Identifier, Value>
extends AbstractIdentifiableInitializableComponent {
/** Class logger. */
- private final Logger log = LoggerFactory.getLogger(AbstractOIDCEntityResolver.class);
+ @Nonnull private final Logger log = LoggerFactory.getLogger(AbstractOIDCEntityResolver.class);
/** Backing store for runtime JSON data. */
private JsonBackingStore jsonBackingStore;
@@ -76,6 +76,7 @@ public abstract class AbstractOIDCEntityResolver<Key extends Identifier, Value>
if (logPrefix == null) {
logPrefix = String.format("Metadata Resolver %s %s:", getClass().getSimpleName(), getId());
}
+ assert logPrefix != null;
return logPrefix;
}
@@ -142,7 +143,7 @@ public abstract class AbstractOIDCEntityResolver<Key extends Identifier, Value>
if (identifier == null || Strings.isNullOrEmpty(identifier.getValue())) {
log.debug("Identifier was null or empty, skipping search for it");
- return Collections.emptyList();
+ return CollectionSupport.emptyList();
}
final List<Value> allInformation = lookupIndexedIdentifier(identifier);
@@ -167,7 +168,7 @@ public abstract class AbstractOIDCEntityResolver<Key extends Identifier, Value>
if (allInformation != null) {
return new ArrayList<>(allInformation);
} else {
- return Collections.emptyList();
+ return CollectionSupport.emptyList();
}
}
@@ -258,10 +259,10 @@ public abstract class AbstractOIDCEntityResolver<Key extends Identifier, Value>
protected class JsonBackingStore {
/** Index of identifiers to their entity information. */
- private final Map<Key, List<Value>> indexedEntities;
+ @Nonnull private final Map<Key, List<Value>> indexedEntities;
/** Ordered list of entity information. */
- private final List<Value> orderedEntitiess;
+ @Nonnull private final List<Value> orderedEntitiess;
/** Constructor. */
protected JsonBackingStore() {
@@ -288,4 +289,5 @@ public abstract class AbstractOIDCEntityResolver<Key extends Identifier, Value>
}
}
-}
+
+}
\ No newline at end of file
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/AbstractOIDCMetadataResolver.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/AbstractOIDCMetadataResolver.java
index 472ea34..56fe456 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/AbstractOIDCMetadataResolver.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/AbstractOIDCMetadataResolver.java
@@ -25,7 +25,6 @@ import javax.annotation.Nullable;
import org.opensaml.core.criterion.SatisfyAnyCriterion;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import com.google.common.collect.Iterables;
@@ -39,6 +38,7 @@ import net.shibboleth.shared.component.AbstractIdentifiableInitializableComponen
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.component.DestructableComponent;
import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.LoggerFactory;
import net.shibboleth.shared.resolver.CriteriaSet;
import net.shibboleth.shared.resolver.CriterionPredicateRegistry;
import net.shibboleth.shared.resolver.ResolverException;
@@ -54,12 +54,11 @@ import net.shibboleth.shared.resolver.ResolverSupport;
public abstract class AbstractOIDCMetadataResolver<MetadataIdentifier, MetadataType>
extends AbstractIdentifiableInitializableComponent implements OIDCMetadataResolver<MetadataType> {
-
/** Class logger. */
- private final Logger log = LoggerFactory.getLogger(AbstractOIDCMetadataResolver.class);
+ @Nonnull private final Logger log = LoggerFactory.getLogger(AbstractOIDCMetadataResolver.class);
/** Logging prefix. */
- private String logPrefix;
+ @Nullable private String logPrefix;
/** The metadata cache.*/
@Nonnull private final MetadataCache<MetadataType> cache;
@@ -98,11 +97,13 @@ public abstract class AbstractOIDCMetadataResolver<MetadataIdentifier, MetadataT
if (logPrefix == null) {
logPrefix = String.format("Metadata Resolver %s %s:", getClass().getSimpleName(), getId());
}
+ assert logPrefix != null;
return logPrefix;
}
/** {@inheritDoc} */
- @Override @Nullable public MetadataType resolveSingle(final CriteriaSet criteria) throws ResolverException {
+ @Override
+ @Nullable public MetadataType resolveSingle(@Nullable final CriteriaSet criteria) throws ResolverException {
ifNotInitializedThrowUninitializedComponentException();
ifDestroyedThrowDestroyedComponentException();
@@ -118,7 +119,7 @@ public abstract class AbstractOIDCMetadataResolver<MetadataIdentifier, MetadataT
/** {@inheritDoc} */
@Override
- @Nonnull public Iterable<MetadataType> resolve(@Nonnull final CriteriaSet criteria) throws ResolverException {
+ @Nonnull public Iterable<MetadataType> resolve(@Nullable final CriteriaSet criteria) throws ResolverException {
ifNotInitializedThrowUninitializedComponentException();
ifDestroyedThrowDestroyedComponentException();
@@ -145,7 +146,7 @@ public abstract class AbstractOIDCMetadataResolver<MetadataIdentifier, MetadataT
* @throws ResolverException if there is a fatal error during resolution
*/
protected Iterable<MetadataType> predicateFilterCandidates(@Nonnull final Iterable<MetadataType> candidates,
- @Nonnull final CriteriaSet criteria, final boolean onEmptyPredicatesReturnEmpty)
+ @Nullable final CriteriaSet criteria, final boolean onEmptyPredicatesReturnEmpty)
throws ResolverException {
if (!candidates.iterator().hasNext()) {
@@ -291,7 +292,5 @@ public abstract class AbstractOIDCMetadataResolver<MetadataIdentifier, MetadataT
* @throws ComponentInitializationException if initialization fails.
*/
protected abstract void initMetadataResolver() throws ComponentInitializationException;
-
-
-
-}
+
+}
\ No newline at end of file
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/AbstractReloadingOIDCEntityResolver.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/AbstractReloadingOIDCEntityResolver.java
index 1747868..f372571 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/AbstractReloadingOIDCEntityResolver.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/AbstractReloadingOIDCEntityResolver.java
@@ -26,7 +26,6 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import com.nimbusds.oauth2.sdk.ParseException;
import com.nimbusds.oauth2.sdk.id.Identifier;
@@ -34,6 +33,7 @@ import com.nimbusds.oauth2.sdk.id.Identifier;
import net.shibboleth.shared.annotation.constraint.Positive;
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.LoggerFactory;
import net.shibboleth.shared.resolver.ResolverException;
/**
@@ -47,16 +47,16 @@ public abstract class AbstractReloadingOIDCEntityResolver<Key extends Identifier
extends AbstractOIDCEntityResolver<Key, Value> {
/** Class logger. */
- private final Logger log = LoggerFactory.getLogger(AbstractReloadingOIDCEntityResolver.class);
+ @Nonnull private final Logger log = LoggerFactory.getLogger(AbstractReloadingOIDCEntityResolver.class);
/** Timer used to schedule background metadata update tasks. */
- private final Timer taskTimer;
+ @Nonnull private final Timer taskTimer;
/** Whether we created our own task timer during object construction. */
private final boolean createdOwnTaskTimer;
/** Current task to refresh metadata. */
- private RefreshMetadataTask refreshMetadataTask;
+ @Nullable private RefreshMetadataTask refreshMetadataTask;
/**
* Refresh interval used when metadata does not contain any validUntil or cacheDuration information. Default value:
@@ -172,6 +172,7 @@ public abstract class AbstractReloadingOIDCEntityResolver<Key extends Identifier
final List<Value> resolvedInformation = parse(mdBytes);
final JsonBackingStore newBackingStore = new JsonBackingStore();
for (final Value information : resolvedInformation) {
+ assert information != null;
final Key id = getKey(information);
log.info("Parsed entity information for {}", id);
newBackingStore.getIndexedInformation().put(id, Arrays.asList(information));
@@ -221,7 +222,7 @@ public abstract class AbstractReloadingOIDCEntityResolver<Key extends Identifier
*
* @throws ParseException if parse fails
*/
- protected abstract List<Value> parse(final byte[] bytes) throws ParseException;
+ @Nonnull protected abstract List<Value> parse(@Nonnull final byte[] bytes) throws ParseException;
/**
* Gets the identifier for the given entity.
@@ -229,14 +230,14 @@ public abstract class AbstractReloadingOIDCEntityResolver<Key extends Identifier
* @param value The entity whose identifier will be returned.
* @return The identifier for the given entity.
*/
- protected abstract Key getKey(final Value value);
+ @Nonnull protected abstract Key getKey(@Nonnull final Value value);
/**
* Gets an identifier which may be used to distinguish this metadata in logging statements.
*
* @return identifier which may be used to distinguish this metadata in logging statements
*/
- protected abstract String getMetadataIdentifier();
+ @Nonnull protected abstract String getMetadataIdentifier();
/**
* Fetches metadata from a source.
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ChainingClientInformationResolver.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ChainingClientInformationResolver.java
index 6ddb5ce..4f88a27 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ChainingClientInformationResolver.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ChainingClientInformationResolver.java
@@ -16,7 +16,6 @@ package net.shibboleth.oidc.metadata.impl;
import java.time.Instant;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.Iterator;
import java.util.List;
@@ -24,7 +23,6 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import com.nimbusds.openid.connect.sdk.rp.OIDCClientInformation;
@@ -33,8 +31,10 @@ import net.shibboleth.oidc.metadata.RefreshableClientInformationResolver;
import net.shibboleth.shared.annotation.constraint.NonnullElements;
import net.shibboleth.shared.annotation.constraint.NotLive;
import net.shibboleth.shared.annotation.constraint.Unmodifiable;
+import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.component.AbstractIdentifiableInitializableComponent;
import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.primitive.LoggerFactory;
import net.shibboleth.shared.resolver.CriteriaSet;
import net.shibboleth.shared.resolver.ResolverException;
@@ -55,7 +55,7 @@ public class ChainingClientInformationResolver extends AbstractIdentifiableIniti
/** Constructor. */
public ChainingClientInformationResolver() {
- resolvers = Collections.emptyList();
+ resolvers = CollectionSupport.emptyList();
}
/**
@@ -80,9 +80,9 @@ public class ChainingClientInformationResolver extends AbstractIdentifiableIniti
ifDestroyedThrowDestroyedComponentException();
if (newResolvers == null || newResolvers.isEmpty()) {
- resolvers = Collections.emptyList();
+ resolvers = CollectionSupport.emptyList();
} else {
- resolvers = List.copyOf(newResolvers);
+ resolvers = CollectionSupport.copyToList(newResolvers);
}
}
@@ -121,7 +121,7 @@ public class ChainingClientInformationResolver extends AbstractIdentifiableIniti
}
}
- return Collections.emptyList();
+ return CollectionSupport.emptyList();
}
/** {@inheritDoc} */
@@ -168,24 +168,19 @@ public class ChainingClientInformationResolver extends AbstractIdentifiableIniti
/** {@inheritDoc} */
@Override protected void doInitialize() throws ComponentInitializationException {
super.doInitialize();
- if (resolvers == null) {
- log.warn("ChainingClientInformationResolver was not configured with any member " +
- "ClientInformationResolvers");
- resolvers = Collections.emptyList();
- } else {
- final List<String> resolverDetails = new ArrayList<>();
- for (final ClientInformationResolver resolver : resolvers) {
- resolverDetails.add(resolver.getId() + ": " + countClients(resolver) + " clients");
- }
- log.info("ChainingClientInformationResolver was configured with the following resolvers: {}",
- resolverDetails);
+
+ final List<String> resolverDetails = new ArrayList<>();
+ for (final ClientInformationResolver resolver : resolvers) {
+ resolverDetails.add(resolver.getId() + ": " + countClients(resolver) + " clients");
}
+ log.info("ChainingClientInformationResolver was configured with the following resolvers: {}",
+ resolverDetails);
}
/** {@inheritDoc} */
@Override protected void doDestroy() {
super.doDestroy();
- resolvers = Collections.emptyList();
+ resolvers = CollectionSupport.emptyList();
}
/**
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ChainingProviderMetadataResolver.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ChainingProviderMetadataResolver.java
index 43c9642..19614e8 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ChainingProviderMetadataResolver.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ChainingProviderMetadataResolver.java
@@ -16,7 +16,6 @@ package net.shibboleth.oidc.metadata.impl;
import java.time.Instant;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.Iterator;
import java.util.List;
@@ -24,7 +23,6 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import com.nimbusds.openid.connect.sdk.op.OIDCProviderMetadata;
@@ -33,8 +31,10 @@ import net.shibboleth.oidc.metadata.RefreshableProviderMetadataResolver;
import net.shibboleth.shared.annotation.constraint.NonnullElements;
import net.shibboleth.shared.annotation.constraint.NotLive;
import net.shibboleth.shared.annotation.constraint.Unmodifiable;
+import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.component.AbstractIdentifiableInitializableComponent;
import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.primitive.LoggerFactory;
import net.shibboleth.shared.resolver.CriteriaSet;
import net.shibboleth.shared.resolver.ResolverException;
@@ -55,7 +55,7 @@ public class ChainingProviderMetadataResolver extends AbstractIdentifiableInitia
/** Constructor. */
public ChainingProviderMetadataResolver() {
- resolvers = Collections.emptyList();
+ resolvers = CollectionSupport.emptyList();
}
/**
@@ -80,9 +80,9 @@ public class ChainingProviderMetadataResolver extends AbstractIdentifiableInitia
ifDestroyedThrowDestroyedComponentException();
if (newResolvers == null || newResolvers.isEmpty()) {
- resolvers = Collections.emptyList();
+ resolvers = CollectionSupport.emptyList();
} else {
- resolvers = List.copyOf(newResolvers);
+ resolvers = CollectionSupport.copyToList(newResolvers);
}
}
@@ -121,7 +121,7 @@ public class ChainingProviderMetadataResolver extends AbstractIdentifiableInitia
}
}
- return Collections.emptyList();
+ return CollectionSupport.emptyList();
}
/** {@inheritDoc} */
@@ -168,24 +168,19 @@ public class ChainingProviderMetadataResolver extends AbstractIdentifiableInitia
/** {@inheritDoc} */
@Override protected void doInitialize() throws ComponentInitializationException {
super.doInitialize();
- if (resolvers == null) {
- log.warn("ProviderMetadataResolver was not configured with any member " +
- "ProviderMetadataResolvers");
- resolvers = Collections.emptyList();
- } else {
- final List<String> resolverDetails = new ArrayList<>();
- for (final ProviderMetadataResolver resolver : resolvers) {
- resolverDetails.add(resolver.getId() + ": " + countClients(resolver) + " clients");
- }
- log.info("ChainingProviderMetadataResolver was configured with the following resolvers: {}",
- resolverDetails);
+
+ final List<String> resolverDetails = new ArrayList<>();
+ for (final ProviderMetadataResolver resolver : resolvers) {
+ resolverDetails.add(resolver.getId() + ": " + countClients(resolver) + " clients");
}
+ log.info("ChainingProviderMetadataResolver was configured with the following resolvers: {}",
+ resolverDetails);
}
/** {@inheritDoc} */
@Override protected void doDestroy() {
super.doDestroy();
- resolvers = Collections.emptyList();
+ resolvers = CollectionSupport.emptyList();
}
/**
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ClientInformationNodeProcessor.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ClientInformationNodeProcessor.java
index 528eaaa..f381543 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ClientInformationNodeProcessor.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ClientInformationNodeProcessor.java
@@ -17,9 +17,7 @@ package net.shibboleth.oidc.metadata.impl;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Collection;
-import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -46,7 +44,6 @@ import org.opensaml.xmlsec.keyinfo.KeyInfoCredentialResolver;
import org.opensaml.xmlsec.keyinfo.impl.BasicProviderKeyInfoCredentialResolver;
import org.opensaml.xmlsec.keyinfo.impl.KeyInfoProvider;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import com.nimbusds.jose.EncryptionMethod;
import com.nimbusds.jose.JWEAlgorithm;
@@ -75,7 +72,9 @@ import net.shibboleth.oidc.security.CredentialConversionUtil;
import net.shibboleth.oidc.security.credential.JWKReferenceCredential;
import net.shibboleth.oidc.security.credential.NimbusSecretCredential;
import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.primitive.LoggerFactory;
import net.shibboleth.shared.primitive.StringSupport;
import net.shibboleth.shared.resolver.CriteriaSet;
import net.shibboleth.shared.resolver.ResolverException;
@@ -88,21 +87,21 @@ import net.shibboleth.shared.resolver.ResolverException;
public class ClientInformationNodeProcessor implements MetadataNodeProcessor {
/** The ACS binding identifier matching to the redirect_uri. */
- public static final String BINDING_ID_REDIRECT_URI = "https://tools.ietf.org/html/rfc6749#section-3.1.2";
+ @Nonnull public static final String BINDING_ID_REDIRECT_URI = "https://tools.ietf.org/html/rfc6749#section-3.1.2";
/** The SLO binding identifier matching to the front-channel uri. */
- public static final String BINDING_ID_FRONT_SLO_URI =
+ @Nonnull public static final String BINDING_ID_FRONT_SLO_URI =
"https://openid.net/specs/openid-connect-frontchannel-1_0.html";
/** The SLO binding identifier matching to the back-channel uri. */
- public static final String BINDING_ID_BACK_SLO_URI =
+ @Nonnull public static final String BINDING_ID_BACK_SLO_URI =
"https://openid.net/specs/openid-connect-backchannel-1_0.html";
/** Class logger. */
- private final Logger log = LoggerFactory.getLogger(ClientInformationNodeProcessor.class);
+ @Nonnull private final Logger log = LoggerFactory.getLogger(ClientInformationNodeProcessor.class);
/** The {@link KeyInfoCredentialResolver} to be used for the resolution. */
- private final @Nonnull KeyInfoCredentialResolver keyInfoCredentialResolver;
+ @Nonnull private final KeyInfoCredentialResolver keyInfoCredentialResolver;
/**
* Constructor.
@@ -141,12 +140,13 @@ public class ClientInformationNodeProcessor implements MetadataNodeProcessor {
* @param roleDescriptor The {@link SPSSODescriptor} to be used as a source.
* @return The entityID value as {@link ClientID}.
*/
- protected @Nullable ClientID parseClientID(final @Nonnull SPSSODescriptor roleDescriptor) {
+ protected @Nullable ClientID parseClientID(@Nonnull final SPSSODescriptor roleDescriptor) {
if (!roleDescriptor.hasParent() || !(roleDescriptor.getParent() instanceof EntityDescriptor)) {
log.warn("Unexpected structure, EntityDescriptor not as a parent for OAuthRPRoleDescriptor");
return null;
}
final EntityDescriptor entityDescriptor = (EntityDescriptor) roleDescriptor.getParent();
+ assert entityDescriptor != null;
return new ClientID(entityDescriptor.getEntityID());
}
@@ -178,8 +178,8 @@ public class ClientInformationNodeProcessor implements MetadataNodeProcessor {
* @param clientId The client ID.
* @return The {@link OIDCClientMetadata} parsed from the given parameters.
*/
- protected @Nonnull OIDCClientMetadata populateMetadata(final @Nonnull SPSSODescriptor roleDescriptor,
- final @Nonnull Iterable<Credential> credentials, final @Nonnull String clientId) {
+ protected @Nonnull OIDCClientMetadata populateMetadata(@Nonnull final SPSSODescriptor roleDescriptor,
+ @Nonnull final Iterable<Credential> credentials, @Nonnull final String clientId) {
final OIDCClientMetadata metadata = new OIDCClientMetadata();
final OAuthRPExtensions extensions = getOAuthRPExtensions(roleDescriptor);
if (extensions != null) {
@@ -286,7 +286,8 @@ public class ClientInformationNodeProcessor implements MetadataNodeProcessor {
credentialResolver.setRoleDescriptorResolver(new SkeletonEchoingRoleDescriptorResolver() {
/** {@inheritDoc} */
- @Override public RoleDescriptor resolveSingle(final CriteriaSet criteria) throws ResolverException {
+ @Nullable public RoleDescriptor resolveSingle(@Nullable final CriteriaSet criteria)
+ throws ResolverException {
return roleDescriptor;
}
@@ -305,7 +306,7 @@ public class ClientInformationNodeProcessor implements MetadataNodeProcessor {
} catch (final ResolverException e) {
log.warn("Could not resolve credentials", e);
}
- return Collections.emptySet();
+ return CollectionSupport.emptySet();
}
/**
@@ -602,7 +603,7 @@ public class ClientInformationNodeProcessor implements MetadataNodeProcessor {
if (metadataValue != null) {
return StringSupport.stringToList(metadataValue, " \t\n\r");
}
- return Collections.emptyList();
+ return CollectionSupport.emptyList();
}
/**
@@ -641,7 +642,8 @@ public class ClientInformationNodeProcessor implements MetadataNodeProcessor {
@Override
@Nonnull public Iterable<RoleDescriptor> resolve(@Nullable final CriteriaSet criteria)
throws ResolverException {
- return Arrays.asList(resolveSingle(criteria));
+ final RoleDescriptor role = resolveSingle(criteria);
+ return role != null ? CollectionSupport.singletonList(role) : CollectionSupport.emptyList();
}
/** {@inheritDoc} */
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/DefaultDynamicBackingStore.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/DefaultDynamicBackingStore.java
index 3a12b63..6d5e682 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/DefaultDynamicBackingStore.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/DefaultDynamicBackingStore.java
@@ -21,6 +21,7 @@ import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Function;
import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
import javax.annotation.concurrent.ThreadSafe;
import net.shibboleth.oidc.metadata.DynamicBackingStore;
@@ -28,6 +29,7 @@ import net.shibboleth.oidc.metadata.MetadataManagementData;
import net.shibboleth.shared.annotation.constraint.NonnullElements;
import net.shibboleth.shared.annotation.constraint.NotLive;
import net.shibboleth.shared.annotation.constraint.Unmodifiable;
+import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.logic.Constraint;
/**
@@ -39,47 +41,43 @@ import net.shibboleth.shared.logic.Constraint;
@ThreadSafe
public class DefaultDynamicBackingStore<I,T> extends AbstractBackingStore<I,T> implements DynamicBackingStore<I, T>{
-
/** Map holding management data for each entityID. */
- private final Map<I, MetadataManagementData<I>> mgmtDataMap;
+ @Nonnull private final Map<I, MetadataManagementData<I>> mgmtDataMap;
/**
* Constructor.
*/
public DefaultDynamicBackingStore() {
- super();
mgmtDataMap = new ConcurrentHashMap<>();
}
- @Override
- public MetadataManagementData<I> computeManagementDataIfAbsent(@Nonnull final I identifier,
+ /** {@inheritDoc} */
+ @Nonnull public MetadataManagementData<I> computeManagementDataIfAbsent(@Nonnull final I identifier,
@Nonnull final Function<I, MetadataManagementData<I>> mappingFunction) {
Constraint.isNotNull(identifier, "identifier may not be null");
return mgmtDataMap.computeIfAbsent(identifier, mappingFunction);
}
- @Override
- public MetadataManagementData<I> getManagementData(@Nonnull final I identifier) {
+ /** {@inheritDoc} */
+ @Nullable public MetadataManagementData<I> getManagementData(@Nonnull final I identifier) {
Constraint.isNotNull(identifier, "identifier may not be null");
return mgmtDataMap.get(identifier);
}
- @Override
- //TODO is concurrent hashmap threadsafe for remove and get - do we need the synchronized
+ /** {@inheritDoc} */
public synchronized void removeManagementData(@Nonnull final I identifier) {
- Constraint.isNotNull(identifier, "Identifier may not be null");
+ //TODO is concurrent hashmap threadsafe for remove and get - do we need the synchronized
+ Constraint.isNotNull(identifier, "Identifier may not be null");
mgmtDataMap.remove(identifier);
}
-
-
- @Override
+
+ /** {@inheritDoc} */
@Nonnull @NonnullElements @Unmodifiable @NotLive
public synchronized Set<I> getManagementDataIdentifiers() {
- return Set.copyOf(mgmtDataMap.keySet());
+ return CollectionSupport.copyToSet(mgmtDataMap.keySet());
}
-
-}
+}
\ No newline at end of file
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/FilesystemClientInformationResolver.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/FilesystemClientInformationResolver.java
index 2508927..c2490a7 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/FilesystemClientInformationResolver.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/FilesystemClientInformationResolver.java
@@ -16,7 +16,6 @@ package net.shibboleth.oidc.metadata.impl;
import java.io.IOException;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Timer;
@@ -38,6 +37,7 @@ import net.minidev.json.JSONArray;
import net.minidev.json.JSONObject;
import net.shibboleth.oidc.metadata.RefreshableClientInformationResolver;
import net.shibboleth.oidc.metadata.criterion.ClientIDCriterion;
+import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.resolver.CriteriaSet;
import net.shibboleth.shared.resolver.ResolverException;
@@ -83,11 +83,12 @@ public class FilesystemClientInformationResolver extends AbstractFileOIDCEntityR
/** {@inheritDoc} */
@Override
- public Iterable<OIDCClientInformation> resolve(final CriteriaSet criteria) throws ResolverException {
+ @Nonnull public Iterable<OIDCClientInformation> resolve(@Nullable final CriteriaSet criteria)
+ throws ResolverException {
ifNotInitializedThrowUninitializedComponentException();
ifDestroyedThrowDestroyedComponentException();
- final ClientIDCriterion clientIdCriterion = criteria.get(ClientIDCriterion.class);
+ final ClientIDCriterion clientIdCriterion = criteria != null ? criteria.get(ClientIDCriterion.class) : null;
if (clientIdCriterion == null || clientIdCriterion.getClientID() == null) {
log.trace("No client ID criteria found, returning all");
return updateKeys(getBackingStore().getOrderedInformation());
@@ -114,7 +115,8 @@ public class FilesystemClientInformationResolver extends AbstractFileOIDCEntityR
/** {@inheritDoc} */
@Override
- public OIDCClientInformation resolveSingle(@Nullable final CriteriaSet criteria) throws ResolverException {
+ @Nullable public OIDCClientInformation resolveSingle(@Nullable final CriteriaSet criteria)
+ throws ResolverException {
final Iterable<OIDCClientInformation> iterable = resolve(criteria);
if (iterable != null) {
final Iterator<OIDCClientInformation> iterator = iterable.iterator();
@@ -128,12 +130,12 @@ public class FilesystemClientInformationResolver extends AbstractFileOIDCEntityR
/** {@inheritDoc} */
@Override
- protected List<OIDCClientInformation> parse(@Nonnull final byte[] bytes) throws ParseException {
+ @Nonnull protected List<OIDCClientInformation> parse(@Nonnull final byte[] bytes) throws ParseException {
final String rawString = new String(bytes);
try {
final OIDCClientInformation single = OIDCClientInformation.parse(JSONObjectUtils.parse(rawString));
log.debug("Found single client information from the file");
- return Arrays.asList(single);
+ return CollectionSupport.singletonList(single);
} catch (final ParseException e) {
log.debug("Could not parse single client information from the file, checking for array");
}
@@ -152,7 +154,8 @@ public class FilesystemClientInformationResolver extends AbstractFileOIDCEntityR
/** {@inheritDoc} */
@Override
- protected ClientID getKey(@Nonnull final OIDCClientInformation value) {
+ @Nonnull protected ClientID getKey(@Nonnull final OIDCClientInformation value) {
return value.getID();
}
-}
+
+}
\ No newline at end of file
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/FilesystemProviderMetadataResolver.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/FilesystemProviderMetadataResolver.java
index 8c2138d..68391be 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/FilesystemProviderMetadataResolver.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/FilesystemProviderMetadataResolver.java
@@ -19,15 +19,11 @@ import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Timer;
-import java.util.function.Function;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
-import org.opensaml.messaging.context.navigate.ChildContextLookup;
-import org.opensaml.profile.context.ProfileRequestContext;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.springframework.core.io.Resource;
import com.nimbusds.oauth2.sdk.ParseException;
@@ -37,8 +33,8 @@ import com.nimbusds.openid.connect.sdk.op.OIDCProviderMetadata;
import net.shibboleth.oidc.metadata.RefreshableProviderMetadataResolver;
import net.shibboleth.oidc.metadata.criterion.IssuerIDCriterion;
-import net.shibboleth.profile.context.RelyingPartyContext;
-import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.collection.CollectionSupport;
+import net.shibboleth.shared.primitive.LoggerFactory;
import net.shibboleth.shared.resolver.CriteriaSet;
import net.shibboleth.shared.resolver.ResolverException;
@@ -52,11 +48,6 @@ public class FilesystemProviderMetadataResolver extends AbstractFileOIDCEntityRe
/** Class logger. */
@Nonnull private final Logger log = LoggerFactory.getLogger(FilesystemProviderMetadataResolver.class);
- /**
- * Strategy used to locate the {@link RelyingPartyContext} associated with a given {@link ProfileRequestContext}.
- */
- @Nonnull private Function<ProfileRequestContext, RelyingPartyContext> relyingPartyContextLookupStrategy;
-
/**
* Constructor.
*
@@ -66,7 +57,6 @@ public class FilesystemProviderMetadataResolver extends AbstractFileOIDCEntityRe
*/
public FilesystemProviderMetadataResolver(@Nonnull final Resource metadata) throws IOException {
super(metadata);
- relyingPartyContextLookupStrategy = new ChildContextLookup<>(RelyingPartyContext.class);
}
/**
@@ -80,32 +70,16 @@ public class FilesystemProviderMetadataResolver extends AbstractFileOIDCEntityRe
public FilesystemProviderMetadataResolver(@Nullable final Timer backgroundTaskTimer,
@Nonnull final Resource metadata) throws IOException {
super(backgroundTaskTimer, metadata);
- relyingPartyContextLookupStrategy = new ChildContextLookup<>(RelyingPartyContext.class);
- }
-
- /**
- * Set the strategy used to locate the {@link RelyingPartyContext} associated with a given
- * {@link ProfileRequestContext}.
- *
- * @param strategy strategy used to locate the {@link RelyingPartyContext} associated with a given
- * {@link ProfileRequestContext}
- */
- public void setRelyingPartyContextLookupStrategy(
- @Nonnull final Function<ProfileRequestContext, RelyingPartyContext> strategy) {
- ifInitializedThrowUnmodifiabledComponentException();
-
- relyingPartyContextLookupStrategy =
- Constraint.isNotNull(strategy, "RelyingPartyContext lookup strategy cannot be null");
}
/** {@inheritDoc} */
@Override
- @Nullable public Iterable<OIDCProviderMetadata> resolve(@Nullable final CriteriaSet criteria)
+ @Nonnull public Iterable<OIDCProviderMetadata> resolve(@Nullable final CriteriaSet criteria)
throws ResolverException {
ifNotInitializedThrowUninitializedComponentException();
ifDestroyedThrowDestroyedComponentException();
- final IssuerIDCriterion issuerIdCriterion = criteria.get(IssuerIDCriterion.class);
+ final IssuerIDCriterion issuerIdCriterion = criteria != null ? criteria.get(IssuerIDCriterion.class) : null;
if (issuerIdCriterion == null) {
log.trace("No issuer ID criteria found, returning all");
return new ArrayList<>(getBackingStore().getOrderedInformation());
@@ -131,13 +105,13 @@ public class FilesystemProviderMetadataResolver extends AbstractFileOIDCEntityRe
/** {@inheritDoc} */
@Override
- protected List<OIDCProviderMetadata> parse(final byte[] bytes) throws ParseException {
- return List.of(OIDCProviderMetadata.parse(JSONObjectUtils.parse(new String(bytes))));
+ @Nonnull protected List<OIDCProviderMetadata> parse(@Nonnull final byte[] bytes) throws ParseException {
+ return CollectionSupport.singletonList(OIDCProviderMetadata.parse(JSONObjectUtils.parse(new String(bytes))));
}
/** {@inheritDoc} */
@Override
- protected Issuer getKey(@Nonnull final OIDCProviderMetadata value) {
+ @Nonnull protected Issuer getKey(@Nonnull final OIDCProviderMetadata value) {
return value.getIssuer();
}
}
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/HTTPProviderConfigurationFetchingStrategy.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/HTTPProviderConfigurationFetchingStrategy.java
index bd9ff3e..55a1489 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/HTTPProviderConfigurationFetchingStrategy.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/HTTPProviderConfigurationFetchingStrategy.java
@@ -110,11 +110,12 @@ public class HTTPProviderConfigurationFetchingStrategy
}
}
+ /** {@inheritDoc} */
@Override
- protected String buildRequestURL(@Nonnull final CriteriaSet criteria) {
- if (criteria.contains(IssuerIDCriterion.class)) {
- final String url = wellKnownLocationCompositionStrategy
- .apply(criteria.get(IssuerIDCriterion.class).getIssuerID(),wellKnownPath);
+ protected String buildRequestURL(@Nullable final CriteriaSet criteria) {
+ final IssuerIDCriterion issuerCrit = criteria != null ? criteria.get(IssuerIDCriterion.class) : null;
+ if (issuerCrit != null) {
+ final String url = wellKnownLocationCompositionStrategy.apply(issuerCrit.getIssuerID(),wellKnownPath);
log.debug("URL generated by request builder was: {}", url);
return url;
@@ -127,8 +128,14 @@ public class HTTPProviderConfigurationFetchingStrategy
@ThreadSafe
private static final class DefaultWellKnownPathCompositionStrategy implements BiFunction<Issuer, String, String> {
+ /** {@inheritDoc} */
@Override
@Nullable public String apply(@Nullable final Issuer issuer, @Nullable @NotEmpty final String wellKnownPath) {
+
+ if (issuer == null) {
+ return null;
+ }
+
// remove trailing slash if any (see openid-connect-discovery 4.1)
final String normalizedIssuer = StringUtils.removeEnd(issuer.getValue(), "/");
final StringBuilder builder = new StringBuilder();
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/PropertiesClientSecretValueResolver.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/PropertiesClientSecretValueResolver.java
index c33814f..4034068 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/PropertiesClientSecretValueResolver.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/PropertiesClientSecretValueResolver.java
@@ -15,22 +15,21 @@
package net.shibboleth.oidc.metadata.impl;
import java.io.IOException;
-import java.util.Collections;
import java.util.Properties;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.springframework.core.io.Resource;
import net.shibboleth.oidc.metadata.criterion.ClientSecretReferenceCriterion;
import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
-import net.shibboleth.shared.collection.LazySet;
+import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.logic.Constraint;
import net.shibboleth.shared.logic.ConstraintViolationException;
+import net.shibboleth.shared.primitive.LoggerFactory;
import net.shibboleth.shared.resolver.CriteriaSet;
import net.shibboleth.shared.resolver.ResolverException;
@@ -40,7 +39,7 @@ import net.shibboleth.shared.resolver.ResolverException;
public class PropertiesClientSecretValueResolver extends AbstractClientSecretValueResolver {
/** Class logger. */
- private final Logger log = LoggerFactory.getLogger(PropertiesClientSecretValueResolver.class);
+ @Nonnull private final Logger log = LoggerFactory.getLogger(PropertiesClientSecretValueResolver.class);
/** The properties resource containing client secret values. */
@NonnullAfterInit private Resource propertiesResource;
@@ -73,23 +72,26 @@ public class PropertiesClientSecretValueResolver extends AbstractClientSecretVal
/** {@inheritDoc} */
@Override
- public @Nonnull Iterable<String> resolve(@Nonnull final CriteriaSet criteria) throws ResolverException {
+ @Nonnull public Iterable<String> resolve(@Nullable final CriteriaSet criteria) throws ResolverException {
final String value = resolveSingle(criteria);
if (value != null) {
- final LazySet<String> result = new LazySet<>();
- result.add(value);
- return result;
+ return CollectionSupport.singletonList(value);
}
- return Collections.emptySet();
+ return CollectionSupport.emptySet();
}
/** {@inheritDoc} */
@Override
- public @Nullable String resolveSingle(@Nonnull final CriteriaSet criteria) throws ResolverException {
+ @Nullable public String resolveSingle(@Nullable final CriteriaSet criteria) throws ResolverException {
ifNotInitializedThrowUninitializedComponentException();
ifDestroyedThrowDestroyedComponentException();
- final ClientSecretReferenceCriterion criterion = criteria.get(ClientSecretReferenceCriterion.class);
+ final ClientSecretReferenceCriterion criterion =
+ criteria != null ? criteria.get(ClientSecretReferenceCriterion.class) : null;
+ if (criterion == null) {
+ return null;
+ }
+
final Properties properties = new Properties();
try {
properties.load(propertiesResource.getInputStream());
@@ -97,6 +99,7 @@ public class PropertiesClientSecretValueResolver extends AbstractClientSecretVal
log.error("Could not read the properties from the resource", e);
throw new ResolverException(e);
}
+
return properties.getProperty(criterion.getSecretReference());
}
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ReloadingProviderMetadataProvider.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ReloadingProviderMetadataProvider.java
index 4e9f228..d6a4418 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ReloadingProviderMetadataProvider.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ReloadingProviderMetadataProvider.java
@@ -14,18 +14,18 @@
package net.shibboleth.oidc.metadata.impl;
-import java.util.Collections;
-
import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import com.nimbusds.openid.connect.sdk.op.OIDCProviderMetadata;
import net.shibboleth.oidc.metadata.ProviderMetadataResolver;
+import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.component.AbstractIdentifiableInitializableComponent;
import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.LoggerFactory;
import net.shibboleth.shared.resolver.CriteriaSet;
import net.shibboleth.shared.resolver.ResolverException;
import net.shibboleth.shared.service.ReloadableService;
@@ -54,8 +54,9 @@ public class ReloadingProviderMetadataProvider extends AbstractIdentifiableIniti
service = Constraint.isNotNull(resolverService, "ProviderMetadataResolver Service cannot be null");
}
- @Override
- public Iterable<OIDCProviderMetadata> resolve(@Nonnull final CriteriaSet criteria) throws ResolverException {
+ /** {@inheritDoc} */
+ @Nonnull public Iterable<OIDCProviderMetadata> resolve(@Nullable final CriteriaSet criteria)
+ throws ResolverException {
ifNotInitializedThrowUninitializedComponentException();
try (final ServiceableComponent<ProviderMetadataResolver> component = service.getServiceableComponent()) {
@@ -67,11 +68,11 @@ public class ReloadingProviderMetadataProvider extends AbstractIdentifiableIniti
log.error("ReloadingProviderMetadataProvider '{}': Error accessing underlying source: "
+ "Invalid configuration.", getId());
}
- return Collections.emptySet();
+ return CollectionSupport.emptySet();
}
- @Override
- public OIDCProviderMetadata resolveSingle(@Nonnull final CriteriaSet criteria) throws ResolverException {
+ /** {@inheritDoc} */
+ @Nullable public OIDCProviderMetadata resolveSingle(@Nullable final CriteriaSet criteria) throws ResolverException {
ifNotInitializedThrowUninitializedComponentException();
try (final ServiceableComponent<ProviderMetadataResolver> component = service.getServiceableComponent()) {
@@ -86,4 +87,4 @@ public class ReloadingProviderMetadataProvider extends AbstractIdentifiableIniti
return null;
}
-}
+}
\ No newline at end of file
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ReloadingRelyingPartyClientInformationProvider.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ReloadingRelyingPartyClientInformationProvider.java
index 3b367f5..2f0e030 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ReloadingRelyingPartyClientInformationProvider.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ReloadingRelyingPartyClientInformationProvider.java
@@ -14,19 +14,18 @@
package net.shibboleth.oidc.metadata.impl;
-import java.util.Collections;
-
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import com.nimbusds.openid.connect.sdk.rp.OIDCClientInformation;
import net.shibboleth.oidc.metadata.ClientInformationResolver;
+import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.component.AbstractIdentifiableInitializableComponent;
import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.LoggerFactory;
import net.shibboleth.shared.resolver.CriteriaSet;
import net.shibboleth.shared.resolver.ResolverException;
import net.shibboleth.shared.service.ReloadableService;
@@ -56,7 +55,7 @@ public class ReloadingRelyingPartyClientInformationProvider extends AbstractIden
}
/** {@inheritDoc} */
- @Override @Nonnull public Iterable<OIDCClientInformation> resolve(final CriteriaSet criteria)
+ @Nonnull public Iterable<OIDCClientInformation> resolve(@Nullable final CriteriaSet criteria)
throws ResolverException {
ifNotInitializedThrowUninitializedComponentException();
@@ -70,11 +69,11 @@ public class ReloadingRelyingPartyClientInformationProvider extends AbstractIden
log.error("RelyingPartyClientInformationProvider '{}': Error accessing underlying source: "
+ "Invalid configuration.", getId());
}
- return Collections.emptySet();
+ return CollectionSupport.emptySet();
}
/** {@inheritDoc} */
- @Override @Nullable public OIDCClientInformation resolveSingle(final CriteriaSet criteria)
+ @Nullable public OIDCClientInformation resolveSingle(@Nullable final CriteriaSet criteria)
throws ResolverException {
ifNotInitializedThrowUninitializedComponentException();
@@ -89,4 +88,5 @@ public class ReloadingRelyingPartyClientInformationProvider extends AbstractIden
}
return null;
}
-}
+
+}
\ No newline at end of file
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ResolverServiceClientSecretValueResolver.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ResolverServiceClientSecretValueResolver.java
index cce06d4..fa4d6c2 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ResolverServiceClientSecretValueResolver.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/ResolverServiceClientSecretValueResolver.java
@@ -14,7 +14,6 @@
package net.shibboleth.oidc.metadata.impl;
-import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -25,7 +24,6 @@ import javax.annotation.Nullable;
import org.opensaml.core.criterion.EntityIdCriterion;
import org.opensaml.profile.context.ProfileRequestContext;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import net.shibboleth.idp.attribute.IdPAttribute;
import net.shibboleth.idp.attribute.IdPAttributeValue;
@@ -34,9 +32,11 @@ import net.shibboleth.idp.attribute.resolver.AttributeResolver;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
import net.shibboleth.oidc.metadata.criterion.ClientSecretReferenceCriterion;
import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
+import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.collection.LazySet;
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.LoggerFactory;
import net.shibboleth.shared.resolver.CriteriaSet;
import net.shibboleth.shared.resolver.ResolverException;
import net.shibboleth.shared.service.ReloadableService;
@@ -52,7 +52,7 @@ import net.shibboleth.shared.service.ReloadableService;
public class ResolverServiceClientSecretValueResolver extends AbstractClientSecretValueResolver {
/** Class logger. */
- private final Logger log = LoggerFactory.getLogger(ResolverServiceClientSecretValueResolver.class);
+ @Nonnull private final Logger log = LoggerFactory.getLogger(ResolverServiceClientSecretValueResolver.class);
/** The attribute resolver service used for the client secret value resolution. */
@NonnullAfterInit private ReloadableService<AttributeResolver> service;
@@ -64,7 +64,7 @@ public class ResolverServiceClientSecretValueResolver extends AbstractClientSecr
* Constructor.
*/
public ResolverServiceClientSecretValueResolver() {
- attributeIds = Collections.emptyList();
+ attributeIds = CollectionSupport.emptyList();
}
/**
@@ -107,22 +107,27 @@ public class ResolverServiceClientSecretValueResolver extends AbstractClientSecr
/** {@inheritDoc} */
@Override
- public @Nonnull Iterable<String> resolve(@Nonnull final CriteriaSet criteria) throws ResolverException {
+ @Nonnull public Iterable<String> resolve(@Nullable final CriteriaSet criteria) throws ResolverException {
ifNotInitializedThrowUninitializedComponentException();
ifDestroyedThrowDestroyedComponentException();
- final ClientSecretReferenceCriterion referenceCriterion = criteria.get(ClientSecretReferenceCriterion.class);
- Constraint.isNotNull(referenceCriterion,
- "The client secret reference criterion must be included in the criteria.");
+ final ClientSecretReferenceCriterion referenceCriterion =
+ criteria != null ? criteria.get(ClientSecretReferenceCriterion.class) : null;
+ if (referenceCriterion == null) {
+ throw new ResolverException("The client secret reference criterion must be included in the criteria.");
+ }
final ProfileRequestContext profileRequestContext = new ProfileRequestContext();
final AttributeResolutionContext resolutionContext =
- profileRequestContext.getSubcontext(AttributeResolutionContext.class, true);
+ profileRequestContext.ensureSubcontext(AttributeResolutionContext.class);
resolutionContext.setPrincipal(referenceCriterion.getSecretReference());
resolutionContext.setResolutionLabel(getClass().getSimpleName());
- if (criteria.contains(EntityIdCriterion.class)) {
- resolutionContext.setAttributeRecipientID(criteria.get(EntityIdCriterion.class).getEntityId());
+
+ final EntityIdCriterion entityIdCrit = criteria != null ? criteria.get(EntityIdCriterion.class) : null;
+ if (entityIdCrit != null) {
+ resolutionContext.setAttributeRecipientID(entityIdCrit.getEntityId());
}
+
resolutionContext.resolveAttributes(service);
final Map<String, IdPAttribute> resolvedAttributes = resolutionContext.getResolvedIdPAttributes();
final LazySet<String> result = new LazySet<>();
@@ -142,7 +147,7 @@ public class ResolverServiceClientSecretValueResolver extends AbstractClientSecr
/** {@inheritDoc} */
@Override
- public @Nullable String resolveSingle(@Nonnull final CriteriaSet criteria) throws ResolverException {
+ @Nullable public String resolveSingle(@Nullable final CriteriaSet criteria) throws ResolverException {
final Iterator<String> iterator = resolve(criteria).iterator();
return iterator.hasNext() ? iterator.next() : null;
}
@@ -151,7 +156,6 @@ public class ResolverServiceClientSecretValueResolver extends AbstractClientSecr
@Override
protected void doDestroy() {
service = null;
- attributeIds = null;
super.doDestroy();
}
@@ -164,4 +168,5 @@ public class ResolverServiceClientSecretValueResolver extends AbstractClientSecr
throw new ComponentInitializationException("Attribute resolver service can not be null");
}
}
-}
+
+}
\ No newline at end of file
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/StorageServiceClientInformationManager.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/StorageServiceClientInformationManager.java
index eebec30..a82365d 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/StorageServiceClientInformationManager.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/StorageServiceClientInformationManager.java
@@ -22,13 +22,13 @@ import javax.annotation.Nullable;
import org.opensaml.storage.StorageService;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import com.nimbusds.oauth2.sdk.id.ClientID;
import com.nimbusds.openid.connect.sdk.rp.OIDCClientInformation;
import net.shibboleth.oidc.metadata.ClientInformationManager;
import net.shibboleth.oidc.metadata.ClientInformationManagerException;
+import net.shibboleth.shared.primitive.LoggerFactory;
/**
* A {@link ClientInformationManager} exploiting {@link StorageService} for storing the data.
@@ -74,7 +74,7 @@ public class StorageServiceClientInformationManager extends BaseStorageServiceCl
/** {@inheritDoc} */
@Override
- public void destroyClientInformation(final ClientID clientId) {
+ public void destroyClientInformation(@Nullable final ClientID clientId) {
if (clientId == null) {
log.warn("The null clientId cannot be destroyed, nothing to do");
return;
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/StorageServiceClientInformationResolver.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/StorageServiceClientInformationResolver.java
index c78f44b..47af830 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/StorageServiceClientInformationResolver.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/impl/StorageServiceClientInformationResolver.java
@@ -16,7 +16,6 @@ package net.shibboleth.oidc.metadata.impl;
import java.io.IOException;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.Iterator;
import java.util.List;
@@ -26,7 +25,6 @@ import javax.annotation.Nullable;
import org.opensaml.storage.StorageRecord;
import org.opensaml.storage.StorageService;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import com.nimbusds.oauth2.sdk.ParseException;
import com.nimbusds.oauth2.sdk.util.JSONObjectUtils;
@@ -34,7 +32,8 @@ import com.nimbusds.openid.connect.sdk.rp.OIDCClientInformation;
import net.shibboleth.oidc.metadata.ClientInformationResolver;
import net.shibboleth.oidc.metadata.criterion.ClientIDCriterion;
-import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.collection.CollectionSupport;
+import net.shibboleth.shared.primitive.LoggerFactory;
import net.shibboleth.shared.resolver.CriteriaSet;
import net.shibboleth.shared.resolver.ResolverException;
@@ -48,21 +47,15 @@ public class StorageServiceClientInformationResolver extends BaseStorageServiceC
@Nonnull private final Logger log = LoggerFactory.getLogger(StorageServiceClientInformationResolver.class);
/** {@inheritDoc} */
- @Override protected void doInitialize() throws ComponentInitializationException {
- super.doInitialize();
- }
-
- /** {@inheritDoc} */
- @Override
- @Nullable public Iterable<OIDCClientInformation> resolve(@Nullable final CriteriaSet criteria)
+ @Nonnull public Iterable<OIDCClientInformation> resolve(@Nullable final CriteriaSet criteria)
throws ResolverException {
ifNotInitializedThrowUninitializedComponentException();
ifDestroyedThrowDestroyedComponentException();
- final ClientIDCriterion clientIdCriterion = criteria.get(ClientIDCriterion.class);
+ final ClientIDCriterion clientIdCriterion = criteria != null ? criteria.get(ClientIDCriterion.class) : null;
if (clientIdCriterion == null || clientIdCriterion.getClientID() == null) {
log.info("No client ID criteria found, returning empty set.");
- return Collections.emptyList();
+ return CollectionSupport.emptyList();
}
// TODO: support other criterion
final String clientId = clientIdCriterion.getClientID().getValue();
@@ -84,7 +77,6 @@ public class StorageServiceClientInformationResolver extends BaseStorageServiceC
}
/** {@inheritDoc} */
- @Override
@Nullable public OIDCClientInformation resolveSingle(@Nullable final CriteriaSet criteria)
throws ResolverException {
final Iterable<OIDCClientInformation> iterable = resolve(criteria);
@@ -97,4 +89,5 @@ public class StorageServiceClientInformationResolver extends BaseStorageServiceC
log.warn("Could not find any clients with the given criteria");
return null;
}
-}
+
+}
\ No newline at end of file
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/keyinfo/ext/impl/provider/ClientSecretProvider.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/keyinfo/ext/impl/provider/ClientSecretProvider.java
index 91474c6..06c2212 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/keyinfo/ext/impl/provider/ClientSecretProvider.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/keyinfo/ext/impl/provider/ClientSecretProvider.java
@@ -25,7 +25,6 @@ import org.opensaml.xmlsec.keyinfo.KeyInfoCredentialResolver;
import org.opensaml.xmlsec.keyinfo.impl.KeyInfoResolutionContext;
import org.opensaml.xmlsec.keyinfo.impl.provider.AbstractKeyInfoProvider;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import com.nimbusds.oauth2.sdk.auth.Secret;
@@ -33,6 +32,7 @@ import net.shibboleth.oidc.saml.xmlobject.ClientSecret;
import net.shibboleth.oidc.security.credential.BasicNimbusSecretCredential;
import net.shibboleth.oidc.security.credential.NimbusSecretCredential;
import net.shibboleth.shared.collection.LazySet;
+import net.shibboleth.shared.primitive.LoggerFactory;
import net.shibboleth.shared.primitive.StringSupport;
import net.shibboleth.shared.resolver.CriteriaSet;
@@ -43,7 +43,7 @@ import net.shibboleth.shared.resolver.CriteriaSet;
public class ClientSecretProvider extends AbstractKeyInfoProvider {
/** Class logger. */
- private final Logger log = LoggerFactory.getLogger(ClientSecretProvider.class);
+ @Nonnull private final Logger log = LoggerFactory.getLogger(ClientSecretProvider.class);
/** {@inheritDoc} */
@Override @Nullable
@@ -80,4 +80,5 @@ public class ClientSecretProvider extends AbstractKeyInfoProvider {
return null;
}
}
-}
+
+}
\ No newline at end of file
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/keyinfo/ext/impl/provider/ClientSecretReferenceProvider.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/keyinfo/ext/impl/provider/ClientSecretReferenceProvider.java
index 2827474..7fa3193 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/keyinfo/ext/impl/provider/ClientSecretReferenceProvider.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/keyinfo/ext/impl/provider/ClientSecretReferenceProvider.java
@@ -15,8 +15,6 @@
package net.shibboleth.oidc.metadata.keyinfo.ext.impl.provider;
import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
@@ -27,7 +25,6 @@ import org.opensaml.xmlsec.keyinfo.KeyInfoCredentialResolver;
import org.opensaml.xmlsec.keyinfo.impl.KeyInfoResolutionContext;
import org.opensaml.xmlsec.keyinfo.impl.provider.AbstractKeyInfoProvider;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import com.nimbusds.oauth2.sdk.auth.Secret;
@@ -37,7 +34,9 @@ import net.shibboleth.oidc.saml.xmlobject.ClientSecretKeyReference;
import net.shibboleth.oidc.security.credential.BasicNimbusSecretCredential;
import net.shibboleth.oidc.security.credential.NimbusSecretCredential;
import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.collection.LazySet;
+import net.shibboleth.shared.primitive.LoggerFactory;
import net.shibboleth.shared.primitive.StringSupport;
import net.shibboleth.shared.resolver.CriteriaSet;
import net.shibboleth.shared.resolver.ResolverException;
@@ -63,9 +62,9 @@ public class ClientSecretReferenceProvider extends AbstractKeyInfoProvider {
public ClientSecretReferenceProvider(
@Nullable @NotEmpty final Collection<ClientSecretValueResolver> valueResolvers) {
if (valueResolvers != null) {
- clientSecretValueResolvers = List.copyOf(valueResolvers);
+ clientSecretValueResolvers = CollectionSupport.copyToList(valueResolvers);
} else {
- clientSecretValueResolvers = Collections.emptyList();
+ clientSecretValueResolvers = CollectionSupport.emptyList();
}
}
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/keyinfo/ext/impl/provider/InlineJwksProvider.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/keyinfo/ext/impl/provider/InlineJwksProvider.java
index 50c782d..983710c 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/keyinfo/ext/impl/provider/InlineJwksProvider.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/keyinfo/ext/impl/provider/InlineJwksProvider.java
@@ -30,7 +30,6 @@ import org.opensaml.xmlsec.keyinfo.KeyInfoCredentialResolver;
import org.opensaml.xmlsec.keyinfo.impl.KeyInfoResolutionContext;
import org.opensaml.xmlsec.keyinfo.impl.provider.AbstractKeyInfoProvider;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import com.nimbusds.jose.JOSEException;
import com.nimbusds.jose.jwk.AsymmetricJWK;
@@ -45,6 +44,7 @@ import net.shibboleth.oidc.security.credential.JWKCredential;
import net.shibboleth.shared.codec.Base64Support;
import net.shibboleth.shared.codec.DecodingException;
import net.shibboleth.shared.collection.LazySet;
+import net.shibboleth.shared.primitive.LoggerFactory;
import net.shibboleth.shared.primitive.StringSupport;
import net.shibboleth.shared.resolver.CriteriaSet;
@@ -56,7 +56,7 @@ import net.shibboleth.shared.resolver.CriteriaSet;
public class InlineJwksProvider extends AbstractKeyInfoProvider {
/** Class logger. */
- private final Logger log = LoggerFactory.getLogger(InlineJwksProvider.class);
+ @Nonnull private final Logger log = LoggerFactory.getLogger(InlineJwksProvider.class);
/** {@inheritDoc} */
@Override @Nullable
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/policy/impl/DefaultMetadataPolicyEnforcer.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/policy/impl/DefaultMetadataPolicyEnforcer.java
index e93bfb1..f0dfe7c 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/policy/impl/DefaultMetadataPolicyEnforcer.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/policy/impl/DefaultMetadataPolicyEnforcer.java
@@ -24,11 +24,12 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import net.shibboleth.oidc.metadata.policy.MetadataPolicy;
+import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.collection.Pair;
import net.shibboleth.shared.logic.ConstraintViolationException;
+import net.shibboleth.shared.primitive.LoggerFactory;
/**
* <p>A function that applies the given {@link MetadataPolicy} to the given object. The input is given as a {@link
@@ -121,7 +122,7 @@ public class DefaultMetadataPolicyEnforcer implements BiFunction<Object,Metadata
}
}
if (add instanceof Collection) {
- return List.copyOf((Collection<?>) add);
+ return CollectionSupport.copyToList((Collection<?>) add);
}
return add;
}
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/policy/impl/DefaultMetadataPolicyResponseHandler.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/policy/impl/DefaultMetadataPolicyResponseHandler.java
index 4055c9d..a5be73e 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/policy/impl/DefaultMetadataPolicyResponseHandler.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/policy/impl/DefaultMetadataPolicyResponseHandler.java
@@ -27,7 +27,6 @@ import org.apache.hc.core5.http.HttpStatus;
import org.apache.hc.core5.http.io.HttpClientResponseHandler;
import org.apache.hc.core5.http.io.entity.EntityUtils;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.slf4j.MDC;
import net.shibboleth.oidc.metadata.policy.MetadataPolicy;
@@ -35,6 +34,7 @@ import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
import net.shibboleth.shared.component.AbstractIdentifiableInitializableComponent;
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.LoggerFactory;
/** The response handler for parsing the metadata policy document into a map. */
public class DefaultMetadataPolicyResponseHandler extends AbstractIdentifiableInitializableComponent
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/policy/impl/DefaultMetadataPolicyValidator.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/policy/impl/DefaultMetadataPolicyValidator.java
index 493e18d..9a25c8c 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/policy/impl/DefaultMetadataPolicyValidator.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/policy/impl/DefaultMetadataPolicyValidator.java
@@ -22,10 +22,10 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import net.shibboleth.oidc.metadata.policy.MetadataPolicy;
import net.shibboleth.shared.collection.Pair;
+import net.shibboleth.shared.primitive.LoggerFactory;
/**
* <p>
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/policy/impl/MetadataPolicyViaLocationFetchingStrategy.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/policy/impl/MetadataPolicyViaLocationFetchingStrategy.java
index a3e6172..54a628d 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/policy/impl/MetadataPolicyViaLocationFetchingStrategy.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/metadata/policy/impl/MetadataPolicyViaLocationFetchingStrategy.java
@@ -25,7 +25,6 @@ import javax.annotation.Nullable;
import org.apache.hc.client5.http.classic.HttpClient;
import org.apache.hc.core5.http.io.HttpClientResponseHandler;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.springframework.core.io.FileSystemResource;
import net.shibboleth.oidc.metadata.cache.CacheLoadingContext;
@@ -38,6 +37,7 @@ import net.shibboleth.oidc.metadata.policy.MetadataPolicy;
import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.LoggerFactory;
import net.shibboleth.shared.resolver.CriteriaSet;
/**
@@ -62,8 +62,8 @@ public class MetadataPolicyViaLocationFetchingStrategy
* @param client the instance of {@link HttpClient} used to fetch remote metadata policy.
* @param handler the response handler used to convert the HTTP response to the metadata policy.
*/
- public MetadataPolicyViaLocationFetchingStrategy(final HttpClient client,
- final HttpClientResponseHandler<Map<String, MetadataPolicy>> handler) {
+ public MetadataPolicyViaLocationFetchingStrategy(@Nonnull final HttpClient client,
+ @Nonnull final HttpClientResponseHandler<Map<String, MetadataPolicy>> handler) {
super(client, handler);
}
@@ -91,7 +91,7 @@ public class MetadataPolicyViaLocationFetchingStrategy
/** {@inheritDoc} */
@Override
- @Nullable public Map<String, MetadataPolicy> apply(final @Nonnull CriteriaSet criteriaSet) {
+ @Nullable public Map<String, MetadataPolicy> apply(@Nullable final CriteriaSet criteriaSet) {
final String requestURL = buildRequestURL(criteriaSet);
if (requestURL == null) {
return null;
@@ -127,7 +127,7 @@ public class MetadataPolicyViaLocationFetchingStrategy
/** {@inheritDoc} */
@Override
- protected String buildRequestURL(final CriteriaSet criteria) {
+ protected String buildRequestURL(@Nullable final CriteriaSet criteria) {
if (criteria == null || criteria.isEmpty()) {
return null;
}
@@ -135,4 +135,4 @@ public class MetadataPolicyViaLocationFetchingStrategy
return criterion == null ? null : criterion.getResourceLocation();
}
-}
+}
\ No newline at end of file
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/filter/impl/ClientInformationParser.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/filter/impl/ClientInformationParser.java
index 85b31b4..732cb4f 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/filter/impl/ClientInformationParser.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/filter/impl/ClientInformationParser.java
@@ -18,7 +18,7 @@ import javax.annotation.Nonnull;
import javax.xml.namespace.QName;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser;
import org.springframework.beans.factory.xml.ParserContext;
@@ -26,6 +26,7 @@ import org.w3c.dom.Element;
import net.shibboleth.oidc.metadata.impl.ClientInformationNodeProcessor;
import net.shibboleth.oidc.profile.spring.relyingparty.metadata.impl.MetadataNamespaceHandler;
+import net.shibboleth.shared.primitive.LoggerFactory;
import net.shibboleth.shared.primitive.StringSupport;
/**
@@ -41,22 +42,24 @@ public class ClientInformationParser extends AbstractSingleBeanDefinitionParser
@Nonnull private final Logger log = LoggerFactory.getLogger(ClientInformationParser.class);
/** {@inheritDoc} */
- @Override protected Class<?> getBeanClass(final Element element) {
+ @Override protected Class<?> getBeanClass(@Nonnull final Element element) {
return ClientInformationNodeProcessor.class;
}
/** {@inheritDoc} */
@Override
- protected void doParse(final Element element, final ParserContext parserContext,
- final BeanDefinitionBuilder builder) {
+ protected void doParse(@Nonnull final Element element, @Nonnull final ParserContext parserContext,
+ @Nonnull final BeanDefinitionBuilder builder) {
super.doParse(element, parserContext, builder);
if (element.hasAttributeNS(null, "keyInfoProvidersRef")) {
- builder.addConstructorArgReference(StringSupport.trimOrNull(element.getAttributeNS(null,
- "keyInfoProvidersRef")));
- } else {
- log.error("No 'keyInfoProvidersRef' attribute defined!");
+ final String trimmed = StringSupport.trimOrNull(element.getAttributeNS(null, "keyInfoProvidersRef"));
+ if (trimmed != null) {
+ builder.addConstructorArgReference(trimmed);
+ }
+ return;
}
+ log.error("No 'keyInfoProvidersRef' attribute defined!");
}
/** {@inheritDoc} */
@@ -64,4 +67,4 @@ public class ClientInformationParser extends AbstractSingleBeanDefinitionParser
return true;
}
-}
+}
\ No newline at end of file
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/impl/ClientInformationResolverServiceStrategy.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/impl/ClientInformationResolverServiceStrategy.java
index 3a12027..cf0a4c7 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/impl/ClientInformationResolverServiceStrategy.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/impl/ClientInformationResolverServiceStrategy.java
@@ -28,6 +28,7 @@ import org.springframework.context.ApplicationContext;
import net.shibboleth.oidc.metadata.ClientInformationResolver;
import net.shibboleth.oidc.metadata.RelyingPartyClientInformationProvider;
import net.shibboleth.oidc.metadata.impl.ChainingClientInformationResolver;
+import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.component.AbstractIdentifiableInitializableComponent;
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.logic.NonnullFunction;
@@ -47,10 +48,11 @@ public class ClientInformationResolverServiceStrategy extends AbstractIdentifiab
implements NonnullFunction<ApplicationContext, AbstractServiceableComponent<ClientInformationResolver>> {
/** {@inheritDoc} */
- @Nonnull
- public AbstractServiceableComponent<ClientInformationResolver> apply(@Nullable final ApplicationContext appContext) {
+ @Nonnull public AbstractServiceableComponent<ClientInformationResolver> apply(
+ @Nullable final ApplicationContext appContext) {
final Collection<RelyingPartyClientInformationProvider> resolvers =
- appContext.getBeansOfType(RelyingPartyClientInformationProvider.class).values();
+ appContext != null ? appContext.getBeansOfType(RelyingPartyClientInformationProvider.class).values()
+ : CollectionSupport.emptyList();
if (resolvers.isEmpty()) {
throw new ServiceException(
@@ -87,4 +89,5 @@ public class ClientInformationResolverServiceStrategy extends AbstractIdentifiab
throw new ServiceException("Chaining constructor create failed", e);
}
}
-}
+
+}
\ No newline at end of file
diff --git a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/impl/ProviderMetadataResolverServiceStrategy.java b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/impl/ProviderMetadataResolverServiceStrategy.java
index 4ec5584..c8dfc1f 100644
--- a/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/impl/ProviderMetadataResolverServiceStrategy.java
+++ b/oidc-common-metadata-impl/src/main/java/net/shibboleth/oidc/profile/spring/relyingparty/metadata/impl/ProviderMetadataResolverServiceStrategy.java
@@ -21,6 +21,7 @@ import java.util.List;
import java.util.stream.Collectors;
import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
import org.springframework.beans.factory.BeanCreationException;
import org.springframework.context.ApplicationContext;
@@ -28,6 +29,7 @@ import org.springframework.context.ApplicationContext;
import net.shibboleth.oidc.metadata.ProviderMetadataProviderContainer;
import net.shibboleth.oidc.metadata.ProviderMetadataResolver;
import net.shibboleth.oidc.metadata.impl.ChainingProviderMetadataResolver;
+import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.component.AbstractIdentifiableInitializableComponent;
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.logic.NonnullFunction;
@@ -48,9 +50,10 @@ public class ProviderMetadataResolverServiceStrategy extends AbstractIdentifiabl
/** {@inheritDoc} */
@Nonnull
- public AbstractServiceableComponent<ProviderMetadataResolver> apply(@Nonnull final ApplicationContext appContext) {
+ public AbstractServiceableComponent<ProviderMetadataResolver> apply(@Nullable final ApplicationContext appContext) {
final Collection<ProviderMetadataProviderContainer> containers =
- appContext.getBeansOfType(ProviderMetadataProviderContainer.class).values();
+ appContext != null ? appContext.getBeansOfType(ProviderMetadataProviderContainer.class).values()
+ : CollectionSupport.emptyList();
if (containers.isEmpty()) {
throw new ServiceException(
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list