[java-opensaml] 02/02: JSSH-71 Remove the impact of the DestructableComponent Interface

Codeberg noreply at shibboleth.net
Fri May 22 15:20:13 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-opensaml.

View the commit online:
https://codeberg.org/Shibboleth/java-opensaml/commit/1741a3df2008aa4372e3adde3d1ef0d0fab05364

commit 1741a3df2008aa4372e3adde3d1ef0d0fab05364
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Fri May 22 16:18:15 2026 +0100

    JSSH-71 Remove the impact of the DestructableComponent Interface
    
    https://shibboleth.atlassian.net/browse/JSSH-71
    
    Convert doDestroy to annotated, per class @PreDestroy method.
---
 opensaml-saml-impl/pom.xml                         |  5 +++
 .../artifact/impl/BasicSAMLArtifactMap.java        |  8 ++--
 .../impl/AbstractDynamicMetadataResolver.java      | 10 ++---
 .../impl/AbstractReloadingMetadataResolver.java    |  7 ++-
 opensaml-storage-api/pom.xml                       |  5 +++
 .../opensaml/storage/AbstractStorageService.java   |  7 +--
 opensaml-storage-impl/pom.xml                      |  5 +++
 .../impl/memcached/MemcachedStorageService.java    | 52 +++++++++++-----------
 8 files changed, 58 insertions(+), 41 deletions(-)

diff --git a/opensaml-saml-impl/pom.xml b/opensaml-saml-impl/pom.xml
index 5d9e81c82..028b4891a 100644
--- a/opensaml-saml-impl/pom.xml
+++ b/opensaml-saml-impl/pom.xml
@@ -145,6 +145,11 @@
             <groupId>jakarta.servlet</groupId>
             <artifactId>jakarta.servlet-api</artifactId>
         </dependency>
+        <dependency>
+            <groupId>jakarta.annotation</groupId>
+            <artifactId>jakarta.annotation-api</artifactId>
+            <scope>provided</scope>
+        </dependency>
 
         <!-- Runtime Dependencies -->
 
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/common/binding/artifact/impl/BasicSAMLArtifactMap.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/common/binding/artifact/impl/BasicSAMLArtifactMap.java
index 743fd8d5a..09a23a0c5 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/common/binding/artifact/impl/BasicSAMLArtifactMap.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/common/binding/artifact/impl/BasicSAMLArtifactMap.java
@@ -31,6 +31,8 @@ import org.opensaml.saml.common.binding.artifact.ExpiringSAMLArtifactMapEntry;
 import org.opensaml.saml.common.binding.artifact.SAMLArtifactMap;
 import org.slf4j.Logger;
 
+import jakarta.annotation.PreDestroy;
+
 import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
 import net.shibboleth.shared.annotation.constraint.NotEmpty;
 import net.shibboleth.shared.component.AbstractInitializableComponent;
@@ -83,16 +85,14 @@ public class BasicSAMLArtifactMap extends AbstractInitializableComponent impleme
         }
     }
 
-    /** {@inheritDoc} */
-    @Override protected void doDestroy() {
+    /** Bean-specific function to handle tear down. */
+    @PreDestroy synchronized public void teardown() {
         if (cleanupTask != null) {
             cleanupTask.cancel();
             cleanupTask = null;
             cleanupTaskTimer = null;
         }
         artifactStore = null;
-        
-        super.doDestroy();
     }
 
     /**
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/AbstractDynamicMetadataResolver.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/AbstractDynamicMetadataResolver.java
index f73f0bbda..403ea54e3 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/AbstractDynamicMetadataResolver.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/AbstractDynamicMetadataResolver.java
@@ -37,6 +37,8 @@ import java.util.function.Predicate;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
+import jakarta.annotation.PreDestroy;
+
 import org.opensaml.core.criterion.EntityIdCriterion;
 import org.opensaml.core.metrics.MetricsSupport;
 import org.opensaml.core.xml.XMLObject;
@@ -54,6 +56,7 @@ import org.opensaml.saml.saml2.common.SAML2Support;
 import org.opensaml.saml.saml2.metadata.EntitiesDescriptor;
 import org.opensaml.saml.saml2.metadata.EntityDescriptor;
 import org.opensaml.security.crypto.JCAConstants;
+
 import org.slf4j.Logger;
 
 import com.codahale.metrics.Gauge;
@@ -1488,9 +1491,8 @@ public abstract class AbstractDynamicMetadataResolver extends AbstractMetadataRe
         super.removeByEntityID(entityID, backingStore);
     }
 
-    /** {@inheritDoc} */
-    @Override
-    protected void doDestroy() {
+    /** Bean-specific function to handle tear down. */
+    @PreDestroy synchronized public void teardown() {
         if (cleanupTask != null) {
             cleanupTask.cancel();
         }
@@ -1517,8 +1519,6 @@ public abstract class AbstractDynamicMetadataResolver extends AbstractMetadataRe
         gaugePersistentCacheInit = null;
         timerFetchFromOriginSource = null;
         timerResolve = null;
-        
-        super.doDestroy();
     }
     
     /** {@inheritDoc} */
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/AbstractReloadingMetadataResolver.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/AbstractReloadingMetadataResolver.java
index d5b6decdb..38b6c87ec 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/AbstractReloadingMetadataResolver.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/AbstractReloadingMetadataResolver.java
@@ -41,6 +41,7 @@ import org.w3c.dom.Element;
 import com.codahale.metrics.MetricRegistry;
 import com.codahale.metrics.Timer.Context;
 
+import jakarta.annotation.PreDestroy;
 import net.shibboleth.shared.annotation.constraint.NotEmpty;
 import net.shibboleth.shared.component.ComponentInitializationException;
 import net.shibboleth.shared.logic.Constraint;
@@ -298,9 +299,8 @@ public abstract class AbstractReloadingMetadataResolver extends AbstractBatchMet
         minRefreshDelay = delay;
     }
 
-    /** {@inheritDoc} */
-    @Override
-    protected void doDestroy() {
+    /** Bean-specific function to handle tear down. */
+    @PreDestroy synchronized public void teardown() {
         if (refreshMetadataTask != null) {
             refreshMetadataTask.cancel();
         }
@@ -309,7 +309,6 @@ public abstract class AbstractReloadingMetadataResolver extends AbstractBatchMet
             taskTimer.cancel();
         }
 
-        super.doDestroy();
     }
 
     /** {@inheritDoc} */
diff --git a/opensaml-storage-api/pom.xml b/opensaml-storage-api/pom.xml
index 3f8a5caeb..5289ce470 100644
--- a/opensaml-storage-api/pom.xml
+++ b/opensaml-storage-api/pom.xml
@@ -28,6 +28,11 @@
         </dependency>
 
         <!-- Provided Dependencies -->
+        <dependency>
+            <groupId>jakarta.annotation</groupId>
+            <artifactId>jakarta.annotation-api</artifactId>
+            <scope>provided</scope>
+        </dependency>
 
         <!-- Runtime Dependencies -->
 
diff --git a/opensaml-storage-api/src/main/java/org/opensaml/storage/AbstractStorageService.java b/opensaml-storage-api/src/main/java/org/opensaml/storage/AbstractStorageService.java
index b77316a49..73a1f3b98 100644
--- a/opensaml-storage-api/src/main/java/org/opensaml/storage/AbstractStorageService.java
+++ b/opensaml-storage-api/src/main/java/org/opensaml/storage/AbstractStorageService.java
@@ -24,6 +24,8 @@ import javax.annotation.Nullable;
 
 import org.opensaml.storage.annotation.AnnotationSupport;
 
+import jakarta.annotation.PreDestroy;
+
 import net.shibboleth.shared.annotation.constraint.NotEmpty;
 import net.shibboleth.shared.annotation.constraint.Positive;
 import net.shibboleth.shared.component.AbstractIdentifiableInitializableComponent;
@@ -180,8 +182,8 @@ public abstract class AbstractStorageService extends AbstractIdentifiableInitial
         }
     }
 
-    /** {@inheritDoc} */
-    @Override protected void doDestroy() {
+    /** Bean-specific function to handle tear down. */
+    @PreDestroy synchronized public void teardown() {
         if (cleanupTask != null) {
             cleanupTask.cancel();
             cleanupTask = null;
@@ -191,7 +193,6 @@ public abstract class AbstractStorageService extends AbstractIdentifiableInitial
             }
             internalTaskTimer = null;
         }
-        super.doDestroy();
     }
 
     /** {@inheritDoc} */
diff --git a/opensaml-storage-impl/pom.xml b/opensaml-storage-impl/pom.xml
index 9026552c8..e8bb1d013 100644
--- a/opensaml-storage-impl/pom.xml
+++ b/opensaml-storage-impl/pom.xml
@@ -82,6 +82,11 @@
             <artifactId>jakarta.servlet-api</artifactId>
             <scope>provided</scope>
         </dependency>
+        <dependency>
+            <groupId>jakarta.annotation</groupId>
+            <artifactId>jakarta.annotation-api</artifactId>
+            <scope>provided</scope>
+        </dependency>
 
         <!-- Runtime Dependencies -->
         <dependency>
diff --git a/opensaml-storage-impl/src/main/java/org/opensaml/storage/impl/memcached/MemcachedStorageService.java b/opensaml-storage-impl/src/main/java/org/opensaml/storage/impl/memcached/MemcachedStorageService.java
index 5481e28df..a8152db31 100644
--- a/opensaml-storage-impl/src/main/java/org/opensaml/storage/impl/memcached/MemcachedStorageService.java
+++ b/opensaml-storage-impl/src/main/java/org/opensaml/storage/impl/memcached/MemcachedStorageService.java
@@ -14,6 +14,31 @@
 
 package org.opensaml.storage.impl.memcached;
 
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+
+import org.cryptacular.util.ByteUtil;
+import org.cryptacular.util.CodecUtil;
+import org.cryptacular.util.HashUtil;
+import org.opensaml.storage.StorageCapabilities;
+import org.opensaml.storage.StorageRecord;
+import org.opensaml.storage.StorageSerializer;
+import org.opensaml.storage.StorageService;
+import org.opensaml.storage.VersionMismatchException;
+import org.opensaml.storage.annotation.AnnotationSupport;
+import org.slf4j.Logger;
+
+import jakarta.annotation.PreDestroy;
 import net.shibboleth.shared.annotation.constraint.NotEmpty;
 import net.shibboleth.shared.annotation.constraint.Positive;
 import net.shibboleth.shared.collection.Pair;
@@ -26,28 +51,6 @@ import net.spy.memcached.CASValue;
 import net.spy.memcached.MemcachedClient;
 import net.spy.memcached.internal.OperationFuture;
 import net.spy.memcached.transcoders.Transcoder;
-import org.cryptacular.util.ByteUtil;
-import org.cryptacular.util.CodecUtil;
-import org.cryptacular.util.HashUtil;
-import org.opensaml.storage.StorageCapabilities;
-import org.opensaml.storage.StorageRecord;
-import org.opensaml.storage.StorageSerializer;
-import org.opensaml.storage.StorageService;
-import org.opensaml.storage.VersionMismatchException;
-import org.opensaml.storage.annotation.AnnotationSupport;
-import org.slf4j.Logger;
-
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
 
 /**
  * Memcached storage service. The implementation of context names is based on the implementation of
@@ -569,9 +572,8 @@ public class MemcachedStorageService extends AbstractIdentifiableInitializableCo
         handleAsyncResult(nsResult);
     }
 
-    /** {@inheritDoc} */
-    @Override
-    protected void doDestroy() {
+    /** Bean-specific function to handle tear down. */
+    @PreDestroy synchronized public void teardown() {
         memcacheClient.shutdown();
     }
 

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


More information about the commits mailing list