[java-identity-provider] 01/01: JSSH-71 Remove the impact of the DestructableComponent Interface

Codeberg noreply at shibboleth.net
Wed May 27 14:15:04 UTC 2026


This is an automated email from the git hooks/post-receive script.

codeberg pushed a commit to branch dev/JSSH-71
in repository java-identity-provider.

View the commit online:
https://codeberg.org/Shibboleth/java-identity-provider/commit/b97da67a5255ad4766260ba0934c4e9f2746bb6d

commit b97da67a5255ad4766260ba0934c4e9f2746bb6d
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Wed May 27 14:37:20 2026 +0100

    JSSH-71 Remove the impact of the DestructableComponent Interface
    
    https://shibboleth.atlassian.net/browse/JSSH-71
    
    Remove calls to destroy() in java code up to (but not including) idp-conf-impl.
    
    In all but one case this is in tests and we replace the call with an TestNG
    assertion that the object doesn't have our tear down annotations or a call to
    the "call the tear down assertion".
    
    The exception is in SAMLAuthnController.java where a no-op call to destroy is
    replaced with an assert that there are no  call points.
---
 .../net/shibboleth/idp/admin/impl/DoStorageOperationTest.java    | 7 +++++--
 .../authn/revocation/impl/AttributeRevocationConditionTest.java  | 5 ++++-
 .../idp/authn/revocation/impl/RevocationCacheConditionTest.java  | 9 ++++++---
 .../transcoding/impl/CASDateTimeAttributeTranscoderTest.java     | 6 ++++--
 .../transcoding/impl/CASScopedStringAttributeTranscoderTest.java | 5 ++++-
 .../transcoding/impl/CASStringAttributeTranscoderTest.java       | 5 ++++-
 .../idp/cas/service/impl/MetadataServiceRegistryTest.java        | 6 +++++-
 .../idp/saml/saml2/profile/impl/SAMLAuthnController.java         | 4 +++-
 .../impl/CryptoTransientSAML1NameIdentifierGeneratorTest.java    | 9 ++++++---
 .../nameid/impl/CryptoTransientSAML2NameIDGeneratorTest.java     | 9 ++++++---
 .../impl/StoredTransientSAML1NameIdentifierGeneratorTest.java    | 9 ++++++---
 .../nameid/impl/StoredTransientSAML2NameIDGeneratorTest.java     | 9 ++++++---
 .../idp/saml/saml2/profile/impl/SessionManagerBaseTestCase.java  | 9 +++++++--
 .../shibboleth/idp/session/impl/SessionManagerBaseTestCase.java  | 9 +++++++--
 14 files changed, 73 insertions(+), 28 deletions(-)

diff --git a/idp-admin-impl/src/test/java/net/shibboleth/idp/admin/impl/DoStorageOperationTest.java b/idp-admin-impl/src/test/java/net/shibboleth/idp/admin/impl/DoStorageOperationTest.java
index ba7bf095e..80b48b41e 100644
--- a/idp-admin-impl/src/test/java/net/shibboleth/idp/admin/impl/DoStorageOperationTest.java
+++ b/idp-admin-impl/src/test/java/net/shibboleth/idp/admin/impl/DoStorageOperationTest.java
@@ -14,6 +14,8 @@
 
 package net.shibboleth.idp.admin.impl;
 
+import static org.testng.Assert.assertFalse;
+
 import java.io.IOException;
 import java.text.ParseException;
 import java.time.Duration;
@@ -41,6 +43,7 @@ import net.shibboleth.idp.profile.testing.ActionTestingSupport;
 import net.shibboleth.idp.profile.testing.RequestContextBuilder;
 import net.shibboleth.shared.annotation.constraint.NotEmpty;
 import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.primitive.AnnotationsSupport;
 import net.shibboleth.shared.testing.ConstantSupplier;
 
 /**
@@ -104,8 +107,8 @@ public class DoStorageOperationTest {
      */
     @AfterMethod
     public void tearDown() {
-        action.destroy();
-        storageService.destroy();
+        assertFalse(AnnotationsSupport.hasPreDestroyAnnotation(action));
+        AnnotationsSupport.callPreDestroyAnnotation(storageService);
     }
 
     /**
diff --git a/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/revocation/impl/AttributeRevocationConditionTest.java b/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/revocation/impl/AttributeRevocationConditionTest.java
index 0fba1abc4..7805f51cb 100644
--- a/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/revocation/impl/AttributeRevocationConditionTest.java
+++ b/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/revocation/impl/AttributeRevocationConditionTest.java
@@ -14,6 +14,8 @@
 
 package net.shibboleth.idp.authn.revocation.impl;
 
+import static org.testng.Assert.assertFalse;
+
 import java.time.Instant;
 import java.util.Collection;
 import java.util.stream.Collectors;
@@ -32,6 +34,7 @@ import net.shibboleth.idp.authn.impl.testing.BaseAuthenticationContextTest;
 import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.component.ComponentInitializationException;
 import net.shibboleth.shared.logic.FunctionSupport;
+import net.shibboleth.shared.primitive.AnnotationsSupport;
 import net.shibboleth.shared.service.ReloadableService;
 import net.shibboleth.shared.service.ServiceableComponent;
 
@@ -63,7 +66,7 @@ public class AttributeRevocationConditionTest extends BaseAuthenticationContextT
     
     @AfterMethod
     public void tearDown() {
-        condition.destroy();
+        assertFalse(AnnotationsSupport.hasPreDestroyAnnotation(condition));
     }
     
     
diff --git a/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/revocation/impl/RevocationCacheConditionTest.java b/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/revocation/impl/RevocationCacheConditionTest.java
index 8c7fc0a9f..a03062463 100644
--- a/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/revocation/impl/RevocationCacheConditionTest.java
+++ b/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/revocation/impl/RevocationCacheConditionTest.java
@@ -14,6 +14,8 @@
 
 package net.shibboleth.idp.authn.revocation.impl;
 
+import static org.testng.Assert.assertFalse;
+
 import java.time.Duration;
 import java.time.Instant;
 
@@ -25,6 +27,7 @@ import net.shibboleth.idp.authn.impl.testing.BaseAuthenticationContextTest;
 import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.component.ComponentInitializationException;
 import net.shibboleth.shared.logic.FunctionSupport;
+import net.shibboleth.shared.primitive.AnnotationsSupport;
 
 import org.opensaml.storage.impl.MemoryStorageService;
 import org.opensaml.storage.impl.StorageServiceRevocationCache;
@@ -65,9 +68,9 @@ public class RevocationCacheConditionTest extends BaseAuthenticationContextTest
     
     @AfterMethod
     public void tearDown() {
-        condition.destroy();
-        revocationCache.destroy();
-        storageService.destroy();
+        assertFalse(AnnotationsSupport.hasPreDestroyAnnotation(condition));
+        assertFalse(AnnotationsSupport.hasPreDestroyAnnotation(revocationCache));
+        AnnotationsSupport.callPreDestroyAnnotation(storageService);
     }
     
     
diff --git a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/attribute/transcoding/impl/CASDateTimeAttributeTranscoderTest.java b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/attribute/transcoding/impl/CASDateTimeAttributeTranscoderTest.java
index e3b0f18fb..3da2e5811 100644
--- a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/attribute/transcoding/impl/CASDateTimeAttributeTranscoderTest.java
+++ b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/attribute/transcoding/impl/CASDateTimeAttributeTranscoderTest.java
@@ -14,6 +14,8 @@
 
 package net.shibboleth.idp.cas.attribute.transcoding.impl;
 
+import static org.testng.Assert.assertFalse;
+
 import java.time.Instant;
 import java.util.Collection;
 import java.util.HashMap;
@@ -42,6 +44,7 @@ import net.shibboleth.idp.cas.attribute.Attribute;
 import net.shibboleth.idp.cas.attribute.CASAttributeTranscoder;
 import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.primitive.AnnotationsSupport;
 import net.shibboleth.shared.testing.MockApplicationContext;
 
 /** {@link CASDateTimeAttributeTranscoder} unit test. */
@@ -77,8 +80,7 @@ public class CASDateTimeAttributeTranscoderTest {
     }
     
     @AfterClass public void tearDown() {
-        registry.destroy();
-        registry = null;
+        assertFalse(AnnotationsSupport.hasPreDestroyAnnotation(registry));
     }
 
     @Test public void emptyEncode() throws Exception {
diff --git a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/attribute/transcoding/impl/CASScopedStringAttributeTranscoderTest.java b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/attribute/transcoding/impl/CASScopedStringAttributeTranscoderTest.java
index 9bb8d8ff7..3d119f161 100644
--- a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/attribute/transcoding/impl/CASScopedStringAttributeTranscoderTest.java
+++ b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/attribute/transcoding/impl/CASScopedStringAttributeTranscoderTest.java
@@ -14,6 +14,8 @@
 
 package net.shibboleth.idp.cas.attribute.transcoding.impl;
 
+import static org.testng.Assert.assertFalse;
+
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -38,6 +40,7 @@ import net.shibboleth.idp.cas.attribute.Attribute;
 import net.shibboleth.idp.cas.attribute.CASAttributeTranscoder;
 import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.primitive.AnnotationsSupport;
 import net.shibboleth.shared.testing.MockApplicationContext;
 
 import org.testng.Assert;
@@ -82,7 +85,7 @@ public class CASScopedStringAttributeTranscoderTest {
     }
     
     @AfterClass public void tearDown() {
-        registry.destroy();
+        assertFalse(AnnotationsSupport.hasPreDestroyAnnotation(registry));
         registry = null;
     }
 
diff --git a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/attribute/transcoding/impl/CASStringAttributeTranscoderTest.java b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/attribute/transcoding/impl/CASStringAttributeTranscoderTest.java
index 298151e7c..a2a09ac34 100644
--- a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/attribute/transcoding/impl/CASStringAttributeTranscoderTest.java
+++ b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/attribute/transcoding/impl/CASStringAttributeTranscoderTest.java
@@ -14,6 +14,8 @@
 
 package net.shibboleth.idp.cas.attribute.transcoding.impl;
 
+import static org.testng.Assert.assertFalse;
+
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.List;
@@ -42,6 +44,7 @@ import net.shibboleth.idp.cas.attribute.Attribute;
 import net.shibboleth.idp.cas.attribute.CASAttributeTranscoder;
 import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.primitive.AnnotationsSupport;
 import net.shibboleth.shared.testing.MockApplicationContext;
 
 /** {@link CASStringAttributeTranscoder} unit test. */
@@ -77,7 +80,7 @@ public class CASStringAttributeTranscoderTest {
     }
     
     @AfterClass public void tearDown() {
-        registry.destroy();
+        assertFalse(AnnotationsSupport.hasPreDestroyAnnotation(registry));
         registry = null;
     }
 
diff --git a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/service/impl/MetadataServiceRegistryTest.java b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/service/impl/MetadataServiceRegistryTest.java
index f294ea432..c069694b9 100644
--- a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/service/impl/MetadataServiceRegistryTest.java
+++ b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/service/impl/MetadataServiceRegistryTest.java
@@ -15,7 +15,9 @@
 package net.shibboleth.idp.cas.service.impl;
 
 import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
 import static org.testng.Assert.assertNull;
+import static org.testng.Assert.assertTrue;
 
 import java.time.Duration;
 import java.util.Timer;
@@ -38,6 +40,7 @@ import org.testng.annotations.Test;
 import net.shibboleth.idp.cas.service.Service;
 import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.primitive.AnnotationsSupport;
 import net.shibboleth.shared.resource.Resource;
 import net.shibboleth.shared.spring.resource.ResourceHelper;
 import net.shibboleth.shared.xml.ParserPool;
@@ -97,7 +100,8 @@ public class MetadataServiceRegistryTest {
 
     @AfterClass
     public void tearDown() {
-        metadataResolver.destroy();
+        assertTrue(AnnotationsSupport.hasPreDestroyAnnotation(metadataResolver));
+        AnnotationsSupport.callPreDestroyAnnotation(metadataResolver);
     }
 
     @Test(dataProvider = "parameters")
diff --git a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/SAMLAuthnController.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/SAMLAuthnController.java
index d8ad608f0..3343e0364 100644
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/SAMLAuthnController.java
+++ b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/SAMLAuthnController.java
@@ -37,6 +37,8 @@ import org.opensaml.saml.common.binding.SAMLBindingSupport;
 import org.opensaml.saml.common.messaging.context.SAMLMessageReceivedEndpointContext;
 import org.opensaml.saml.saml2.core.AuthnRequest;
 import org.slf4j.Logger;
+
+import net.shibboleth.shared.primitive.AnnotationsSupport;
 import net.shibboleth.shared.primitive.LoggerFactory;
 import net.shibboleth.shared.servlet.HttpServletRequestValidator;
 
@@ -289,7 +291,7 @@ public class SAMLAuthnController extends AbstractInitializableComponent {
                 messageContext.addSubcontext(new SAMLMessageReceivedEndpointContext(httpRequest));
                 nestedPRC.setInboundMessageContext(messageContext);
             } finally {
-                decoder.destroy();
+                assert ! AnnotationsSupport.hasPreDestroyAnnotation(decoder);
             }
         } catch (final MessageDecodingException | ComponentInitializationException e) {
             log.error("Unable to decode SAML response", e);
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/nameid/impl/CryptoTransientSAML1NameIdentifierGeneratorTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/nameid/impl/CryptoTransientSAML1NameIdentifierGeneratorTest.java
index d4750c4ef..610c1b45f 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/nameid/impl/CryptoTransientSAML1NameIdentifierGeneratorTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/nameid/impl/CryptoTransientSAML1NameIdentifierGeneratorTest.java
@@ -14,6 +14,8 @@
 
 package net.shibboleth.idp.saml.nameid.impl;
 
+import static org.testng.Assert.assertFalse;
+
 import java.io.IOException;
 import java.time.Duration;
 
@@ -22,6 +24,7 @@ import net.shibboleth.idp.profile.testing.RequestContextBuilder;
 import net.shibboleth.profile.context.RelyingPartyContext;
 import net.shibboleth.profile.relyingparty.RelyingPartyConfiguration;
 import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.primitive.AnnotationsSupport;
 import net.shibboleth.shared.security.DataSealer;
 import net.shibboleth.shared.security.impl.BasicKeystoreKeyStrategy;
 import net.shibboleth.shared.spring.resource.ResourceHelper;
@@ -83,9 +86,9 @@ public class CryptoTransientSAML1NameIdentifierGeneratorTest extends OpenSAMLIni
     }
     
     @AfterMethod public void tearDown() {
-        generator.destroy();
-        transientGenerator.destroy();
-        sealer.destroy();
+        assertFalse(AnnotationsSupport.hasPreDestroyAnnotation(generator));
+        assertFalse(AnnotationsSupport.hasPreDestroyAnnotation(transientGenerator));
+        assertFalse(AnnotationsSupport.hasPreDestroyAnnotation(sealer));
     }
 
     @Test public void testNoPrincipal() throws Exception {        
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/nameid/impl/CryptoTransientSAML2NameIDGeneratorTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/nameid/impl/CryptoTransientSAML2NameIDGeneratorTest.java
index a6e3247b9..be24bdc23 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/nameid/impl/CryptoTransientSAML2NameIDGeneratorTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/nameid/impl/CryptoTransientSAML2NameIDGeneratorTest.java
@@ -14,6 +14,8 @@
 
 package net.shibboleth.idp.saml.nameid.impl;
 
+import static org.testng.Assert.assertFalse;
+
 import java.io.IOException;
 import java.time.Duration;
 
@@ -22,6 +24,7 @@ import net.shibboleth.idp.profile.testing.RequestContextBuilder;
 import net.shibboleth.profile.context.RelyingPartyContext;
 import net.shibboleth.profile.relyingparty.RelyingPartyConfiguration;
 import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.primitive.AnnotationsSupport;
 import net.shibboleth.shared.security.DataSealer;
 import net.shibboleth.shared.security.impl.BasicKeystoreKeyStrategy;
 import net.shibboleth.shared.spring.resource.ResourceHelper;
@@ -84,9 +87,9 @@ public class CryptoTransientSAML2NameIDGeneratorTest extends OpenSAMLInitBaseTes
     }
     
     @AfterMethod public void tearDown() {
-        generator.destroy();
-        transientGenerator.destroy();
-        sealer.destroy();
+        assertFalse(AnnotationsSupport.hasPreDestroyAnnotation(generator));
+        assertFalse(AnnotationsSupport.hasPreDestroyAnnotation(transientGenerator));
+        assertFalse(AnnotationsSupport.hasPreDestroyAnnotation(sealer));
     }
 
     @Test public void testNoPrincipal() throws Exception {        
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/nameid/impl/StoredTransientSAML1NameIdentifierGeneratorTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/nameid/impl/StoredTransientSAML1NameIdentifierGeneratorTest.java
index 7ad30118e..6e5efc6fd 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/nameid/impl/StoredTransientSAML1NameIdentifierGeneratorTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/nameid/impl/StoredTransientSAML1NameIdentifierGeneratorTest.java
@@ -19,6 +19,9 @@ import net.shibboleth.idp.profile.testing.RequestContextBuilder;
 import net.shibboleth.profile.context.RelyingPartyContext;
 import net.shibboleth.profile.relyingparty.RelyingPartyConfiguration;
 import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.primitive.AnnotationsSupport;
+
+import static org.testng.Assert.assertFalse;
 
 import org.opensaml.core.testing.OpenSAMLInitBaseTestCase;
 import org.opensaml.profile.context.ProfileRequestContext;
@@ -58,9 +61,9 @@ public class StoredTransientSAML1NameIdentifierGeneratorTest extends OpenSAMLIni
     }
     
     @AfterMethod public void tearDown() {
-        store.destroy();
-        transientGenerator.destroy();
-        generator.destroy();
+        assertFalse(AnnotationsSupport.hasPreDestroyAnnotation(generator));
+        assertFalse(AnnotationsSupport.hasPreDestroyAnnotation(transientGenerator));
+        AnnotationsSupport.callPreDestroyAnnotation(store);
     }
 
     @Test public void testNoPrincipal() throws Exception {        
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/nameid/impl/StoredTransientSAML2NameIDGeneratorTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/nameid/impl/StoredTransientSAML2NameIDGeneratorTest.java
index 64f610fdc..de8ccc55c 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/nameid/impl/StoredTransientSAML2NameIDGeneratorTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/nameid/impl/StoredTransientSAML2NameIDGeneratorTest.java
@@ -19,6 +19,9 @@ import net.shibboleth.idp.profile.testing.RequestContextBuilder;
 import net.shibboleth.profile.context.RelyingPartyContext;
 import net.shibboleth.profile.relyingparty.RelyingPartyConfiguration;
 import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.primitive.AnnotationsSupport;
+
+import static org.testng.Assert.assertFalse;
 
 import org.opensaml.core.testing.OpenSAMLInitBaseTestCase;
 import org.opensaml.profile.context.ProfileRequestContext;
@@ -59,9 +62,9 @@ public class StoredTransientSAML2NameIDGeneratorTest extends OpenSAMLInitBaseTes
     }
     
     @AfterMethod public void tearDown() {
-        store.destroy();
-        transientGenerator.destroy();
-        generator.destroy();
+        assertFalse(AnnotationsSupport.hasPreDestroyAnnotation(generator));
+        assertFalse(AnnotationsSupport.hasPreDestroyAnnotation(transientGenerator));
+        AnnotationsSupport.callPreDestroyAnnotation(store);
     }
 
     @Test public void testNoPrincipal() throws Exception {        
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/SessionManagerBaseTestCase.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/SessionManagerBaseTestCase.java
index 8abf57e4d..6676ccbd6 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/SessionManagerBaseTestCase.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/SessionManagerBaseTestCase.java
@@ -14,6 +14,9 @@
 
 package net.shibboleth.idp.saml.saml2.profile.impl;
 
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertTrue;
+
 import java.time.Duration;
 
 import javax.annotation.Nonnull;
@@ -23,6 +26,7 @@ import net.shibboleth.idp.session.impl.StorageBackedSessionManager;
 import net.shibboleth.shared.annotation.constraint.NotEmpty;
 import net.shibboleth.shared.component.ComponentInitializationException;
 import net.shibboleth.shared.net.CookieManager;
+import net.shibboleth.shared.primitive.AnnotationsSupport;
 import net.shibboleth.shared.security.IdentifierGenerationStrategy;
 import net.shibboleth.shared.security.IdentifierGenerationStrategy.ProviderType;
 import net.shibboleth.shared.servlet.impl.HttpServletRequestResponseContext;
@@ -85,8 +89,9 @@ public class SessionManagerBaseTestCase extends OpenSAMLInitBaseTestCase {
     }
     
     @AfterClass public void tearDown() {
-        sessionManager.destroy();
-        storageService.destroy();
+        assertFalse(AnnotationsSupport.hasPreDestroyAnnotation(sessionManager));
+        assertTrue(AnnotationsSupport.hasPreDestroyAnnotation(storageService));
+        AnnotationsSupport.callPreDestroyAnnotation(storageService);
     }
     
     /**
diff --git a/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/SessionManagerBaseTestCase.java b/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/SessionManagerBaseTestCase.java
index 49210c076..1d358ea53 100644
--- a/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/SessionManagerBaseTestCase.java
+++ b/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/SessionManagerBaseTestCase.java
@@ -14,6 +14,9 @@
 
 package net.shibboleth.idp.session.impl;
 
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertTrue;
+
 import java.time.Duration;
 
 import javax.annotation.Nonnull;
@@ -22,6 +25,7 @@ import net.shibboleth.idp.session.SessionException;
 import net.shibboleth.shared.annotation.constraint.NotEmpty;
 import net.shibboleth.shared.component.ComponentInitializationException;
 import net.shibboleth.shared.net.CookieManager;
+import net.shibboleth.shared.primitive.AnnotationsSupport;
 import net.shibboleth.shared.security.IdentifierGenerationStrategy;
 import net.shibboleth.shared.security.IdentifierGenerationStrategy.ProviderType;
 import net.shibboleth.shared.servlet.impl.HttpServletRequestResponseContext;
@@ -79,8 +83,9 @@ public class SessionManagerBaseTestCase extends OpenSAMLInitBaseTestCase {
     }
     
     @AfterClass public void tearDown() {
-        sessionManager.destroy();
-        storageService.destroy();
+        assertFalse(AnnotationsSupport.hasPreDestroyAnnotation(sessionManager));
+        assertTrue(AnnotationsSupport.hasPreDestroyAnnotation(storageService));
+        AnnotationsSupport.callPreDestroyAnnotation(storageService);
     }
     
     /**

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the commits mailing list