[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