[java-shib-metadata] branch main updated: JSPT-108 ServiceableComponent should implement AutoClose
Rod Widdowson
rdw at steadingsoftware.com
Sat Jul 23 09:54:35 UTC 2022
This is an automated email from the git hooks/post-receive script.
rdw pushed a commit to branch main
in repository java-shib-metadata.
View the commit online:
http://git.shibboleth.net/view/?p=java-shib-metadata.git;a=commit;h=8527a98ebaa829c6d1753bc0b11733d8e5acaea2
The following commit(s) were added to refs/heads/main by this push:
new 8527a98eb JSPT-108 ServiceableComponent should implement AutoClose
8527a98eb is described below
commit 8527a98ebaa829c6d1753bc0b11733d8e5acaea2
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Sat Jul 23 10:53:42 2022 +0100
JSPT-108 ServiceableComponent should implement AutoClose
https://shibboleth.atlassian.net/browse/JSPT-108
Exploit the fact of being AutoClose
---
.../impl/MetadataResolverServiceGaugeSet.java | 14 +++------
.../metadata/impl/ReloadableMetadataResolver.java | 34 ++++------------------
.../spring/metadata/EmptyChainService.java | 6 +---
.../spring/metadata/MetadataFailFastTest.java | 23 ++++++++++-----
4 files changed, 26 insertions(+), 51 deletions(-)
diff --git a/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/metadata/impl/MetadataResolverServiceGaugeSet.java b/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/metadata/impl/MetadataResolverServiceGaugeSet.java
index bc30469cf..e884b9682 100644
--- a/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/metadata/impl/MetadataResolverServiceGaugeSet.java
+++ b/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/metadata/impl/MetadataResolverServiceGaugeSet.java
@@ -201,9 +201,8 @@ public class MetadataResolverServiceGaugeSet extends ReloadableServiceGaugeSet<M
*/
private <T> Map<String,T> valueGetter(final BiConsumer<Builder<String,T>, MetadataResolver> consume) {
final Builder<String,T> mapBuilder = ImmutableMap.builder();
- final ServiceableComponent<?> component = getService().getServiceableComponent();
- if (component != null) {
- try {
+ try (final ServiceableComponent<?> component = getService().getServiceableComponent()) {
+ if (component != null) {
// Check type - just in case
if (!(component.getComponent() instanceof MetadataResolver)) {
log.warn("{} : Injected Service was not for an Metadata Resolver : ({}) ",
@@ -214,8 +213,6 @@ public class MetadataResolverServiceGaugeSet extends ReloadableServiceGaugeSet<M
consume.accept(mapBuilder, resolver);
}
}
- } finally {
- component.unpinComponent();
}
}
return mapBuilder.build();
@@ -227,17 +224,14 @@ public class MetadataResolverServiceGaugeSet extends ReloadableServiceGaugeSet<M
protected void doInitialize() throws ComponentInitializationException {
super.doInitialize();
- final ServiceableComponent<?> component = getService().getServiceableComponent();
- if (component != null) {
- try {
+ try (final ServiceableComponent<?> component = getService().getServiceableComponent()) {
+ if (component != null) {
if (component.getComponent() instanceof MetadataResolver) {
return;
}
log.error("{} : Injected service was not for a MetadataResolver ({}) ",
getLogPrefix(), component.getClass());
throw new ComponentInitializationException("Injected service was not for a MetadataResolver");
- } finally {
- component.unpinComponent();
}
}
log.debug("{} : Injected service has not initialized sucessfully yet. Skipping type test",
diff --git a/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/metadata/impl/ReloadableMetadataResolver.java b/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/metadata/impl/ReloadableMetadataResolver.java
index 979d94f8b..4e636c31a 100644
--- a/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/metadata/impl/ReloadableMetadataResolver.java
+++ b/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/metadata/impl/ReloadableMetadataResolver.java
@@ -62,9 +62,7 @@ public class ReloadableMetadataResolver extends AbstractIdentifiableInitializabl
/** {@inheritDoc} */
@Override @Nonnull public Iterable<EntityDescriptor> resolve(final CriteriaSet criteria) throws ResolverException {
checkComponentActive();
- ServiceableComponent<MetadataResolver> component = null;
- try {
- component = service.getServiceableComponent();
+ try (final ServiceableComponent<MetadataResolver> component = service.getServiceableComponent()) {
if (null == component) {
log.error("RelyingPartyMetadataProvider '{}': Error accessing underlying metadata source: "
+ "Invalid configuration.", getId());
@@ -74,19 +72,15 @@ public class ReloadableMetadataResolver extends AbstractIdentifiableInitializabl
}
} catch (final ResolverException e) {
log.error("RelyingPartyMetadataProvider '{}': Error during resolution", getId(), e);
- } finally {
- if (null != component) {
- component.unpinComponent();
- }
}
+
return Collections.emptySet();
}
/** {@inheritDoc} */
@Override @Nullable public EntityDescriptor resolveSingle(final CriteriaSet criteria) throws ResolverException {
- checkComponentActive(); ServiceableComponent<MetadataResolver> component = null;
- try {
- component = service.getServiceableComponent();
+ checkComponentActive();
+ try (final ServiceableComponent<MetadataResolver> component = service.getServiceableComponent()) {
if (null == component) {
log.error("RelyingPartyMetadataProvider '{}': Error accessing underlying metadata source: "
+ "Invalid configuration.", getId());
@@ -96,10 +90,6 @@ public class ReloadableMetadataResolver extends AbstractIdentifiableInitializabl
}
} catch (final ResolverException e) {
log.error("RelyingPartyResolver '{}': Error during resolution", getId(), e);
- } finally {
- if (null != component) {
- component.unpinComponent();
- }
}
return null;
}
@@ -107,9 +97,7 @@ public class ReloadableMetadataResolver extends AbstractIdentifiableInitializabl
/** {@inheritDoc} */
@Override public boolean isRequireValidMetadata() {
checkComponentActive();
- ServiceableComponent<MetadataResolver> component = null;
- try {
- component = service.getServiceableComponent();
+ try (final ServiceableComponent<MetadataResolver> component = service.getServiceableComponent()) {
if (null == component) {
log.error("RelyingPartyMetadataProvider '{}': Error accessing underlying metadata source: "
+ "Invalid configuration.", getId());
@@ -117,10 +105,6 @@ public class ReloadableMetadataResolver extends AbstractIdentifiableInitializabl
final MetadataResolver resolver = component.getComponent();
return resolver.isRequireValidMetadata();
}
- } finally {
- if (null != component) {
- component.unpinComponent();
- }
}
throw new IllegalAccessError("Could not find a valid MetadataResolver");
}
@@ -133,9 +117,7 @@ public class ReloadableMetadataResolver extends AbstractIdentifiableInitializabl
/** {@inheritDoc} */
@Override public MetadataFilter getMetadataFilter() {
checkComponentActive();
- ServiceableComponent<MetadataResolver> component = null;
- try {
- component = service.getServiceableComponent();
+ try (final ServiceableComponent<MetadataResolver> component = service.getServiceableComponent()) {
if (null == component) {
log.error("RelyingPartyMetadataProvider '{}': Error accessing underlying metadata source: "
+ "Invalid configuration.", getId());
@@ -143,10 +125,6 @@ public class ReloadableMetadataResolver extends AbstractIdentifiableInitializabl
final MetadataResolver resolver = component.getComponent();
return resolver.getMetadataFilter();
}
- } finally {
- if (null != component) {
- component.unpinComponent();
- }
}
throw new IllegalAccessError("Could not find a valid MetadataResolver");
}
diff --git a/shib-metadata-spring/src/test/java/net/shibboleth/spring/metadata/EmptyChainService.java b/shib-metadata-spring/src/test/java/net/shibboleth/spring/metadata/EmptyChainService.java
index 92e1385b5..bbc173ff0 100644
--- a/shib-metadata-spring/src/test/java/net/shibboleth/spring/metadata/EmptyChainService.java
+++ b/shib-metadata-spring/src/test/java/net/shibboleth/spring/metadata/EmptyChainService.java
@@ -32,13 +32,9 @@ public class EmptyChainService extends AbstractMetadataParserTest {
@Test public void setup() throws IOException {
final ReloadableService<RefreshableMetadataResolver> service = getBean(ReloadableService.class, "empty-chain-svc.xml");
- final ServiceableComponent<RefreshableMetadataResolver> comp = service.getServiceableComponent();
- try {
+ try (final ServiceableComponent<RefreshableMetadataResolver> comp = service.getServiceableComponent()) {
final ChainingMetadataResolver chain = (ChainingMetadataResolver) comp.getComponent();
Assert.assertTrue(chain.getResolvers().isEmpty());
-
- } finally {
- comp.unpinComponent();
}
}
diff --git a/shib-metadata-spring/src/test/java/net/shibboleth/spring/metadata/MetadataFailFastTest.java b/shib-metadata-spring/src/test/java/net/shibboleth/spring/metadata/MetadataFailFastTest.java
index d5b91fbc0..4d2a1b030 100644
--- a/shib-metadata-spring/src/test/java/net/shibboleth/spring/metadata/MetadataFailFastTest.java
+++ b/shib-metadata-spring/src/test/java/net/shibboleth/spring/metadata/MetadataFailFastTest.java
@@ -46,8 +46,10 @@ public class MetadataFailFastTest extends AbstractFailFastTest {
final Object bean = getBean(propertySource("ServiceConfiguration", makePath("inLineMetadataGood.xml")), "metadataBeansDefaultFF.xml");
final ReloadableService<MetadataResolver > service = (ReloadableService<MetadataResolver>) bean;
assertNotNull(service);
- final MetadataResolver resolver = service.getServiceableComponent().getComponent();
- assertNotNull(resolver);
+ try (final ServiceableComponent<MetadataResolver> srv = service.getServiceableComponent()) {
+ final MetadataResolver resolver = srv.getComponent();
+ assertNotNull(resolver);
+ }
}
private void nonWorkingInline(final Boolean failFast) throws IOException {
@@ -70,8 +72,9 @@ public class MetadataFailFastTest extends AbstractFailFastTest {
return;
}
assertNotNull(service);
- final ServiceableComponent<MetadataResolver> component = service.getServiceableComponent();
- assertNull(component);
+ try (final ServiceableComponent<MetadataResolver> component = service.getServiceableComponent()) {
+ assertNull(component);
+ }
}
@Test public void nonWorkingInlineFailFast() throws IOException {
@@ -93,8 +96,10 @@ public class MetadataFailFastTest extends AbstractFailFastTest {
final Object bean = getBean(propertySource(prop), "metadataBeansDefaultFF.xml");
final ReloadableService<MetadataResolver > service = (ReloadableService<MetadataResolver>) bean;
assertNotNull(service);
- final MetadataResolver resolver = service.getServiceableComponent().getComponent();
- assertNotNull(resolver);
+ try (final ServiceableComponent<MetadataResolver> srv = service.getServiceableComponent()) {
+ final MetadataResolver resolver = srv.getComponent();
+ assertNotNull(resolver);
+ }
}
private void badFile(final Boolean failFast) throws IOException {
@@ -142,8 +147,10 @@ public class MetadataFailFastTest extends AbstractFailFastTest {
final Object bean = getBean(propertySource(prop), "metadataBeansDefaultFF.xml");
final ReloadableService<MetadataResolver > service = (ReloadableService<MetadataResolver>) bean;
assertNotNull(service);
- final MetadataResolver resolver = service.getServiceableComponent().getComponent();
- assertNotNull(resolver);
+ try (final ServiceableComponent<MetadataResolver> srv = service.getServiceableComponent()) {
+ final MetadataResolver resolver = srv.getComponent();
+ assertNotNull(resolver);
+ }
}
private void badHttp(final Boolean failFast) throws IOException {
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list