[java-support] 01/01: JSPT-97 - Correctly synchronize component base classes
Ian Young
ian at iay.org.uk
Wed Jun 10 15:53:29 UTC 2020
This is an automated email from the git hooks/post-receive script.
iay pushed a commit to branch dev/JSPT-97
in repository java-support.
View the commit online:
http://git.shibboleth.net/view/?p=java-support.git;a=commit;h=e30ac8bace2404cadace59d6bbddf41fa5dd94f2
commit e30ac8bace2404cadace59d6bbddf41fa5dd94f2
Author: Ian Young <ian at iay.org.uk>
AuthorDate: Wed Jun 3 15:08:35 2020 +0100
JSPT-97 - Correctly synchronize component base classes
https://issues.shibboleth.net/jira/browse/JSPT-97
---
.../AbstractIdentifiableInitializableComponent.java | 4 +++-
.../component/AbstractIdentifiedInitializableComponent.java | 9 ++++++---
.../support/component/AbstractInitializableComponent.java | 12 ++++++++----
3 files changed, 17 insertions(+), 8 deletions(-)
diff --git a/src/main/java/net/shibboleth/utilities/java/support/component/AbstractIdentifiableInitializableComponent.java b/src/main/java/net/shibboleth/utilities/java/support/component/AbstractIdentifiableInitializableComponent.java
index 026c015..6f4f26a 100644
--- a/src/main/java/net/shibboleth/utilities/java/support/component/AbstractIdentifiableInitializableComponent.java
+++ b/src/main/java/net/shibboleth/utilities/java/support/component/AbstractIdentifiableInitializableComponent.java
@@ -18,17 +18,19 @@
package net.shibboleth.utilities.java.support.component;
import javax.annotation.Nonnull;
+import javax.annotation.concurrent.ThreadSafe;
import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
/**
* An {@link AbstractIdentifiedInitializableComponent} with a public setter.
*/
+ at ThreadSafe
public abstract class AbstractIdentifiableInitializableComponent extends AbstractIdentifiedInitializableComponent
implements IdentifiableComponent {
/** {@inheritDoc} */
- @Override public void setId(@Nonnull @NotEmpty final String componentId) {
+ @Override public synchronized void setId(@Nonnull @NotEmpty final String componentId) {
super.setId(componentId);
}
}
diff --git a/src/main/java/net/shibboleth/utilities/java/support/component/AbstractIdentifiedInitializableComponent.java b/src/main/java/net/shibboleth/utilities/java/support/component/AbstractIdentifiedInitializableComponent.java
index 4cd7c3e..89c249c 100644
--- a/src/main/java/net/shibboleth/utilities/java/support/component/AbstractIdentifiedInitializableComponent.java
+++ b/src/main/java/net/shibboleth/utilities/java/support/component/AbstractIdentifiedInitializableComponent.java
@@ -19,6 +19,8 @@ package net.shibboleth.utilities.java.support.component;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
+import javax.annotation.concurrent.GuardedBy;
+import javax.annotation.concurrent.ThreadSafe;
import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
@@ -28,14 +30,15 @@ import net.shibboleth.utilities.java.support.primitive.StringSupport;
/**
* Simple implementation of {@link InitializableComponent} and {@link IdentifiedComponent}.
*/
+ at ThreadSafe
public abstract class AbstractIdentifiedInitializableComponent extends AbstractInitializableComponent implements
IdentifiedComponent {
/** The unique identifier for this component. */
- @Nullable @NonnullAfterInit private String id;
+ @Nullable @NonnullAfterInit @GuardedBy("this") private String id;
/** {@inheritDoc} */
- @Nullable @NonnullAfterInit public String getId() {
+ @Nullable @NonnullAfterInit public synchronized String getId() {
return id;
}
@@ -44,7 +47,7 @@ public abstract class AbstractIdentifiedInitializableComponent extends AbstractI
*
* @param componentId ID of the component
*/
- protected void setId(@Nonnull @NotEmpty final String componentId) {
+ protected synchronized void setId(@Nonnull @NotEmpty final String componentId) {
ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
id = Constraint.isNotNull(StringSupport.trimOrNull(componentId), "Component ID can not be null or empty");
diff --git a/src/main/java/net/shibboleth/utilities/java/support/component/AbstractInitializableComponent.java b/src/main/java/net/shibboleth/utilities/java/support/component/AbstractInitializableComponent.java
index 3c59683..32529cf 100644
--- a/src/main/java/net/shibboleth/utilities/java/support/component/AbstractInitializableComponent.java
+++ b/src/main/java/net/shibboleth/utilities/java/support/component/AbstractInitializableComponent.java
@@ -17,25 +17,29 @@
package net.shibboleth.utilities.java.support.component;
+import javax.annotation.concurrent.GuardedBy;
+import javax.annotation.concurrent.ThreadSafe;
+
/** Base class for things that implement {@link DestructableComponent} and {@link InitializableComponent}. */
+ at ThreadSafe
public abstract class AbstractInitializableComponent implements DestructableComponent,
InitializableComponent {
/** Whether this component has been destroyed. */
- private boolean isDestroyed;
+ @GuardedBy("this") private boolean isDestroyed;
/** Whether this component has been initialized. */
- private boolean isInitialized;
+ @GuardedBy("this") private boolean isInitialized;
/** {@inheritDoc} */
@Override
- public final boolean isDestroyed() {
+ public final synchronized boolean isDestroyed() {
return isDestroyed;
}
/** {@inheritDoc} */
@Override
- public boolean isInitialized() {
+ public synchronized boolean isInitialized() {
return isInitialized;
}
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list