[java-identity-provider] branch main updated: JSPT-108 ServiceableComponent should implement AutoClose
Rod Widdowson
rdw at steadingsoftware.com
Sat Jul 23 13:15:16 UTC 2022
This is an automated email from the git hooks/post-receive script.
rdw pushed a commit to branch main
in repository java-identity-provider.
View the commit online:
http://git.shibboleth.net/view/?p=java-identity-provider.git;a=commit;h=aaf354c60b028df2bde68b7bc1e87ea15fedf47b
The following commit(s) were added to refs/heads/main by this push:
new aaf354c60 JSPT-108 ServiceableComponent should implement AutoClose
aaf354c60 is described below
commit aaf354c60b028df2bde68b7bc1e87ea15fedf47b
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Sat Jul 23 14:12:24 2022 +0100
JSPT-108 ServiceableComponent should implement AutoClose
https://shibboleth.atlassian.net/browse/JSPT-108
Exploit the fact of being AutoClose
---
.../authn/impl/ValidateExternalAuthentication.java | 14 +++--------
.../PrepareTicketValidationResponseAction.java | 14 ++++-------
.../cas/service/impl/ReloadingServiceRegistry.java | 9 ++------
.../impl/AbstractAttributeDisplayFunction.java | 9 ++------
.../idp/profile/impl/FilterAttributes.java | 10 ++------
.../idp/profile/impl/ResolveAttributes.java | 9 ++------
.../impl/ProxySAML1NameIdentifierGenerator.java | 9 ++------
.../nameid/impl/ProxySAML2NameIDGenerator.java | 9 ++------
.../idp/saml/profile/impl/ReloadMetadata.java | 9 +++-----
.../impl/AddAttributeStatementToAssertion.java | 11 +++------
.../impl/FilterByQueriedAttributeDesignators.java | 14 ++++-------
.../impl/AddAttributeStatementToAssertion.java | 8 +------
.../profile/impl/FilterByQueriedAttributes.java | 9 ++------
.../profile/impl/ValidateSAMLAuthentication.java | 27 ++++++----------------
14 files changed, 40 insertions(+), 121 deletions(-)
diff --git a/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/ValidateExternalAuthentication.java b/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/ValidateExternalAuthentication.java
index b16ecc9bd..a314468b7 100644
--- a/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/ValidateExternalAuthentication.java
+++ b/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/ValidateExternalAuthentication.java
@@ -294,16 +294,12 @@ public class ValidateExternalAuthentication extends AbstractValidationAction {
attributeContext.setIdPAttributes(null);
return;
}
-
-
final AttributeFilterContext filterContext = extContext.getSubcontext(AttributeFilterContext.class, true);
populateFilterContext(filterContext);
- ServiceableComponent<AttributeFilter> component = null;
-
- try {
- component = attributeFilterService.getServiceableComponent();
+ try (final ServiceableComponent<AttributeFilter> component
+ = attributeFilterService.getServiceableComponent()) {
if (null == component) {
log.error("{} Error while filtering inbound attributes: Invalid Attribute Filter configuration",
getLogPrefix());
@@ -317,11 +313,7 @@ public class ValidateExternalAuthentication extends AbstractValidationAction {
} catch (final AttributeFilterException e) {
log.error("{} Error while filtering inbound attributes", getLogPrefix(), e);
attributeContext.setIdPAttributes(null);
- } finally {
- if (null != component) {
- component.unpinComponent();
- }
- }
+ }
}
/**
diff --git a/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/flow/impl/PrepareTicketValidationResponseAction.java b/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/flow/impl/PrepareTicketValidationResponseAction.java
index dbe5ae967..92561f8ee 100644
--- a/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/flow/impl/PrepareTicketValidationResponseAction.java
+++ b/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/flow/impl/PrepareTicketValidationResponseAction.java
@@ -172,6 +172,7 @@ public class PrepareTicketValidationResponseAction extends
return true;
}
+ // Checkstyle: CyclomaticComplexity OFF
@Override
protected void doExecute(@Nonnull final ProfileRequestContext profileRequestContext) {
@@ -210,10 +211,9 @@ public class PrepareTicketValidationResponseAction extends
final Collection<IdPAttribute> inputAttributes = attributeContext.getIdPAttributes().values();
final ArrayList<Attribute> encodedAttributes = new ArrayList<>(inputAttributes.size());
-
- ServiceableComponent<AttributeTranscoderRegistry> component = null;
- try {
- component = transcoderRegistry.getServiceableComponent();
+
+ try (final ServiceableComponent<AttributeTranscoderRegistry> component =
+ transcoderRegistry.getServiceableComponent()) {
if (component == null) {
log.error("{} Attribute transoding service unavailable", getLogPrefix());
ActionSupport.buildEvent(profileRequestContext, IdPEventIds.UNABLE_ENCODE_ATTRIBUTE);
@@ -227,14 +227,10 @@ public class PrepareTicketValidationResponseAction extends
attribute.getId());
}
}
- } finally {
- if (null != component) {
- component.unpinComponent();
- }
}
-
encodedAttributes.forEach(a -> response.addAttribute(a));
}
+ // Checkstyle: CyclomaticComplexity ON
/**
* Access the registry of transcoding rules to transform the input attribute into a target type.
diff --git a/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/service/impl/ReloadingServiceRegistry.java b/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/service/impl/ReloadingServiceRegistry.java
index a9d2be132..3fc704162 100644
--- a/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/service/impl/ReloadingServiceRegistry.java
+++ b/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/service/impl/ReloadingServiceRegistry.java
@@ -57,18 +57,13 @@ public class ReloadingServiceRegistry extends AbstractIdentifiableInitializableC
@Nullable
@Override
public Service lookup(@Nonnull final String serviceURL) {
- ServiceableComponent<ServiceRegistry> component = null;
- try {
- component = service.getServiceableComponent();
+ try (final ServiceableComponent<ServiceRegistry>
+ component = service.getServiceableComponent()) {
if (null == component) {
log.error("ServiceRegistry '{}': error looking up service registry: Invalid configuration.", getId());
return null;
}
return component.getComponent().lookup(serviceURL);
- } finally {
- if (null != component) {
- component.unpinComponent();
- }
}
}
}
diff --git a/idp-consent-impl/src/main/java/net/shibboleth/idp/consent/logic/impl/AbstractAttributeDisplayFunction.java b/idp-consent-impl/src/main/java/net/shibboleth/idp/consent/logic/impl/AbstractAttributeDisplayFunction.java
index dca62a99f..7b13395a8 100644
--- a/idp-consent-impl/src/main/java/net/shibboleth/idp/consent/logic/impl/AbstractAttributeDisplayFunction.java
+++ b/idp-consent-impl/src/main/java/net/shibboleth/idp/consent/logic/impl/AbstractAttributeDisplayFunction.java
@@ -94,16 +94,11 @@ public abstract class AbstractAttributeDisplayFunction implements Function<IdPAt
Map<Locale, String> displayInfo = cachedInfo.get(input);
if (displayInfo == null) {
- ServiceableComponent<AttributeTranscoderRegistry> component = null;
- try {
- component = transcoder.getServiceableComponent();
+ try (final ServiceableComponent<AttributeTranscoderRegistry> component =
+ transcoder.getServiceableComponent()) {
if (component != null) {
displayInfo = getDisplayInfo(component.getComponent(), input);
}
- } finally {
- if (component != null) {
- component.unpinComponent();
- }
}
cachedInfo.put(input, displayInfo);
}
diff --git a/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/FilterAttributes.java b/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/FilterAttributes.java
index c414d95b2..ccdf84c97 100644
--- a/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/FilterAttributes.java
+++ b/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/FilterAttributes.java
@@ -374,10 +374,8 @@ public class FilterAttributes extends AbstractProfileAction {
populateFilterContext(profileRequestContext, filterContext);
- ServiceableComponent<AttributeFilter> component = null;
-
- try {
- component = attributeFilterService.getServiceableComponent();
+ try (final ServiceableComponent<AttributeFilter> component =
+ attributeFilterService.getServiceableComponent()) {
if (null == component) {
log.error("{} Error encountered while filtering attributes : Invalid Attribute Filter configuration",
getLogPrefix());
@@ -401,10 +399,6 @@ public class FilterAttributes extends AbstractProfileAction {
} else {
ActionSupport.buildEvent(profileRequestContext, IdPEventIds.UNABLE_FILTER_ATTRIBS);
}
- } finally {
- if (null != component) {
- component.unpinComponent();
- }
}
}
diff --git a/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/ResolveAttributes.java b/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/ResolveAttributes.java
index 8e5d3b82c..7cb22c1a1 100644
--- a/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/ResolveAttributes.java
+++ b/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/ResolveAttributes.java
@@ -283,9 +283,8 @@ public final class ResolveAttributes extends AbstractProfileAction {
}
}
- ServiceableComponent<AttributeResolver> component = null;
- try {
- component = attributeResolverService.getServiceableComponent();
+ try (final ServiceableComponent<AttributeResolver> component
+ = attributeResolverService.getServiceableComponent()) {
if (null == component) {
log.error("{} Error resolving attributes: Invalid Attribute resolver configuration", getLogPrefix());
if (!maskFailures) {
@@ -308,10 +307,6 @@ public final class ResolveAttributes extends AbstractProfileAction {
if (!maskFailures) {
ActionSupport.buildEvent(profileRequestContext, IdPEventIds.UNABLE_RESOLVE_ATTRIBS);
}
- } finally {
- if (null != component) {
- component.unpinComponent();
- }
}
}
diff --git a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/nameid/impl/ProxySAML1NameIdentifierGenerator.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/nameid/impl/ProxySAML1NameIdentifierGenerator.java
index bce0c9640..161cdf0e4 100644
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/nameid/impl/ProxySAML1NameIdentifierGenerator.java
+++ b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/nameid/impl/ProxySAML1NameIdentifierGenerator.java
@@ -55,17 +55,12 @@ public class ProxySAML1NameIdentifierGenerator implements SAML1NameIdentifierGen
@Nullable public NameIdentifier generate(@Nonnull final ProfileRequestContext profileRequestContext,
@Nonnull @NotEmpty final String format) throws SAMLException {
- ServiceableComponent<NameIdentifierGenerationService> component = null;
- try {
- component = generatorService.getServiceableComponent();
+ try (final ServiceableComponent<NameIdentifierGenerationService> component
+ = generatorService.getServiceableComponent()) {
if (component == null) {
throw new SAMLException("Invalid NameIdentifierGenerationService configuration");
}
return component.getComponent().getSAML1NameIdentifierGenerator().generate(profileRequestContext, format);
- } finally {
- if (null != component) {
- component.unpinComponent();
- }
}
}
diff --git a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/nameid/impl/ProxySAML2NameIDGenerator.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/nameid/impl/ProxySAML2NameIDGenerator.java
index b648ec5f0..68dcaffb2 100644
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/nameid/impl/ProxySAML2NameIDGenerator.java
+++ b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/nameid/impl/ProxySAML2NameIDGenerator.java
@@ -55,17 +55,12 @@ public class ProxySAML2NameIDGenerator implements SAML2NameIDGenerator {
@Nullable public NameID generate(@Nonnull final ProfileRequestContext profileRequestContext,
@Nonnull @NotEmpty final String format) throws SAMLException {
- ServiceableComponent<NameIdentifierGenerationService> component = null;
- try {
- component = generatorService.getServiceableComponent();
+ try (final ServiceableComponent<NameIdentifierGenerationService>
+ component = generatorService.getServiceableComponent()) {
if (component == null) {
throw new SAMLException("Invalid NameIdentifierGenerationService configuration");
}
return component.getComponent().getSAML2NameIDGenerator().generate(profileRequestContext, format);
- } finally {
- if (null != component) {
- component.unpinComponent();
- }
}
}
diff --git a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/profile/impl/ReloadMetadata.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/profile/impl/ReloadMetadata.java
index 11d0c96c1..d6161f4c1 100644
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/profile/impl/ReloadMetadata.java
+++ b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/profile/impl/ReloadMetadata.java
@@ -154,8 +154,9 @@ public class ReloadMetadata extends AbstractProfileAction {
@Override protected void doExecute(@Nonnull final ProfileRequestContext profileRequestContext) {
log.debug("{} Reloading metadata from '{}'", getLogPrefix(), id);
- final ServiceableComponent<MetadataResolver> component = metadataResolverService.getServiceableComponent();
- try {
+ try (final ServiceableComponent<MetadataResolver>
+ component = metadataResolverService.getServiceableComponent()) {
+
final MetadataResolver toProcess = findProvider(component.getComponent());
if (toProcess != null) {
@@ -184,10 +185,6 @@ public class ReloadMetadata extends AbstractProfileAction {
} catch (final IOException e) {
log.error("{} I/O error responding to request", getLogPrefix(), e);
ActionSupport.buildEvent(profileRequestContext, EventIds.IO_ERROR);
- } finally {
- if (null != component) {
- component.unpinComponent();
- }
}
}
diff --git a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml1/profile/impl/AddAttributeStatementToAssertion.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml1/profile/impl/AddAttributeStatementToAssertion.java
index b8751e0b0..868eeed61 100644
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml1/profile/impl/AddAttributeStatementToAssertion.java
+++ b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml1/profile/impl/AddAttributeStatementToAssertion.java
@@ -134,10 +134,9 @@ public class AddAttributeStatementToAssertion extends BaseAddAttributeStatementT
}
final ArrayList<Attribute> encodedAttributes = new ArrayList<>(attributes.size());
-
- ServiceableComponent<AttributeTranscoderRegistry> component = null;
- try {
- component = getTranscoderRegistry().getServiceableComponent();
+
+ try (final ServiceableComponent<AttributeTranscoderRegistry>
+ component = getTranscoderRegistry().getServiceableComponent()) {
if (component == null) {
throw new AttributeEncodingException("Attribute transoding service unavailable");
}
@@ -146,10 +145,6 @@ public class AddAttributeStatementToAssertion extends BaseAddAttributeStatementT
encodeAttribute(component.getComponent(), profileRequestContext, attribute, encodedAttributes);
}
}
- } finally {
- if (null != component) {
- component.unpinComponent();
- }
}
if (encodedAttributes.isEmpty()) {
diff --git a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml1/profile/impl/FilterByQueriedAttributeDesignators.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml1/profile/impl/FilterByQueriedAttributeDesignators.java
index 248b8f85a..69831e46e 100644
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml1/profile/impl/FilterByQueriedAttributeDesignators.java
+++ b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml1/profile/impl/FilterByQueriedAttributeDesignators.java
@@ -167,12 +167,11 @@ public class FilterByQueriedAttributeDesignators extends AbstractProfileAction {
/** {@inheritDoc} */
@Override
protected void doExecute(@Nonnull final ProfileRequestContext profileRequestContext) {
-
+
final Set<String> decodedAttributeIds = new HashSet<>();
- ServiceableComponent<AttributeTranscoderRegistry> component = null;
- try {
- component = transcoderRegistry.getServiceableComponent();
+ try (final ServiceableComponent<AttributeTranscoderRegistry>
+ component = transcoderRegistry.getServiceableComponent()) {
if (component == null) {
log.error("Attribute transcoder service unavailable");
ActionSupport.buildEvent(profileRequestContext, EventIds.MESSAGE_PROC_ERROR);
@@ -187,13 +186,8 @@ public class FilterByQueriedAttributeDesignators extends AbstractProfileAction {
log.warn("{} Error decoding AttributeDesignators", getLogPrefix(), e);
}
}
- } finally {
- if (component != null) {
- component.unpinComponent();
- }
}
-
-
+
final Collection<IdPAttribute> keepers = new ArrayList<>(query.getAttributeDesignators().size());
log.debug("Query content mapped to attribute IDs: {}", decodedAttributeIds);
diff --git a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/AddAttributeStatementToAssertion.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/AddAttributeStatementToAssertion.java
index cfc1515cf..3a9208bef 100644
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/AddAttributeStatementToAssertion.java
+++ b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/AddAttributeStatementToAssertion.java
@@ -137,9 +137,7 @@ public class AddAttributeStatementToAssertion extends BaseAddAttributeStatementT
final ArrayList<Attribute> encodedAttributes = new ArrayList<>(attributes.size());
- ServiceableComponent<AttributeTranscoderRegistry> component = null;
- try {
- component = getTranscoderRegistry().getServiceableComponent();
+ try (final ServiceableComponent<AttributeTranscoderRegistry> component = getTranscoderRegistry().getServiceableComponent()) {
if (component == null) {
throw new AttributeEncodingException("Attribute transoding service unavailable");
}
@@ -148,10 +146,6 @@ public class AddAttributeStatementToAssertion extends BaseAddAttributeStatementT
encodeAttribute(component.getComponent(), profileRequestContext, attribute, encodedAttributes);
}
}
- } finally {
- if (null != component) {
- component.unpinComponent();
- }
}
if (encodedAttributes.isEmpty()) {
diff --git a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/FilterByQueriedAttributes.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/FilterByQueriedAttributes.java
index 9708b5c96..6feb3c09b 100644
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/FilterByQueriedAttributes.java
+++ b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/FilterByQueriedAttributes.java
@@ -169,9 +169,8 @@ public class FilterByQueriedAttributes extends AbstractProfileAction {
final Multimap<String,IdPAttribute> mapped = HashMultimap.create();
- ServiceableComponent<AttributeTranscoderRegistry> component = null;
- try {
- component = transcoderRegistry.getServiceableComponent();
+ try (final ServiceableComponent<AttributeTranscoderRegistry>
+ component = transcoderRegistry.getServiceableComponent()) {
if (component == null) {
log.error("Attribute transcoder service unavailable");
ActionSupport.buildEvent(profileRequestContext, EventIds.MESSAGE_PROC_ERROR);
@@ -185,10 +184,6 @@ public class FilterByQueriedAttributes extends AbstractProfileAction {
log.error("{} Error decoding queried Attribute", getLogPrefix(), e);
}
}
- } finally {
- if (component != null) {
- component.unpinComponent();
- }
}
log.debug("{} Query content mapped to attribute IDs: {}", getLogPrefix(), mapped.keySet());
diff --git a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/ValidateSAMLAuthentication.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/ValidateSAMLAuthentication.java
index ec77ca000..37382684c 100644
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/ValidateSAMLAuthentication.java
+++ b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/ValidateSAMLAuthentication.java
@@ -446,9 +446,8 @@ public class ValidateSAMLAuthentication extends AbstractValidationAction {
final Multimap<String,IdPAttribute> mapped = HashMultimap.create();
- ServiceableComponent<AttributeTranscoderRegistry> component = null;
- try {
- component = transcoderRegistry.getServiceableComponent();
+ try (final ServiceableComponent<AttributeTranscoderRegistry>
+ component = transcoderRegistry.getServiceableComponent()) {
if (component == null) {
log.error("Attribute transcoder service unavailable");
return;
@@ -466,14 +465,10 @@ public class ValidateSAMLAuthentication extends AbstractValidationAction {
}
}
}
- } finally {
- if (component != null) {
- component.unpinComponent();
- }
}
-
+
log.debug("{} Incoming SAML Attributes mapped to attribute IDs: {}", getLogPrefix(), mapped.keySet());
-
+
if (!mapped.isEmpty()) {
attributeContext = profileRequestContext
.getSubcontext(RelyingPartyContext.class)
@@ -525,17 +520,13 @@ public class ValidateSAMLAuthentication extends AbstractValidationAction {
log.warn("{} No AttributeFilter service provided", getLogPrefix());
return;
}
-
-
+
final AttributeFilterContext filterContext =
profileRequestContext.getSubcontext(AttributeFilterContext.class, true);
-
+
populateFilterContext(profileRequestContext, filterContext);
-
- ServiceableComponent<AttributeFilter> component = null;
- try {
- component = attributeFilterService.getServiceableComponent();
+ try (final ServiceableComponent<AttributeFilter> component = attributeFilterService.getServiceableComponent()) {
if (null == component) {
log.error("{} Error while filtering inbound attributes: Invalid Attribute Filter configuration",
getLogPrefix());
@@ -547,10 +538,6 @@ public class ValidateSAMLAuthentication extends AbstractValidationAction {
}
} catch (final AttributeFilterException e) {
log.error("{} Error while filtering inbound attributes", getLogPrefix(), e);
- } finally {
- if (null != component) {
- component.unpinComponent();
- }
}
}
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list