Remove @ThreadSafe annotations 21/80921/7
authorRobert Varga <robert.varga@pantheon.tech>
Sat, 16 Mar 2019 00:36:24 +0000 (01:36 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Sat, 16 Mar 2019 08:32:50 +0000 (09:32 +0100)
This annotation is not needed in the following case:
- static methods are expected to be thread-safe
- package-private classes can be examined for safety
- Immutable interfaces imply thread safety

Change-Id: I0d27d061dc59149b606cd096e777d72361cd4aeb
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
14 files changed:
common/concepts/src/main/java/org/opendaylight/yangtools/concepts/CheckedValue.java
common/concepts/src/main/java/org/opendaylight/yangtools/concepts/Identifier.java
common/concepts/src/main/java/org/opendaylight/yangtools/concepts/Variant.java
yang/yang-common/src/main/java/org/opendaylight/yangtools/yang/common/AbstractCanonicalValueSupport.java
yang/yang-common/src/main/java/org/opendaylight/yangtools/yang/common/AbstractCanonicalValueValidator.java
yang/yang-common/src/main/java/org/opendaylight/yangtools/yang/common/CanonicalValueSupport.java
yang/yang-common/src/main/java/org/opendaylight/yangtools/yang/common/DerivedString.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/ModificationPath.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/ModifiedNode.java
yang/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/codec/IdentityCodecUtil.java
yang/yang-maven-plugin/src/main/java/org/opendaylight/yangtools/yang2sources/plugin/ProcessorModuleReactor.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/meta/DefaultStatementDefinition.java
yang/yang-model-export/src/main/java/org/opendaylight/yangtools/yang/model/export/DeclaredStatementFormatter.java
yang/yang-model-export/src/main/java/org/opendaylight/yangtools/yang/model/export/YangTextSnippet.java

index 21665b30cc95d9e8ccfd519de9ec7470a34c91d9..45fb7fe87de47a86550a139d4b35cb5f1ef38bd0 100644 (file)
@@ -18,7 +18,6 @@ import java.util.concurrent.CompletableFuture;
 import java.util.function.Consumer;
 import java.util.function.Function;
 import java.util.function.Supplier;
-import javax.annotation.concurrent.ThreadSafe;
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.eclipse.jdt.annotation.Nullable;
 
@@ -34,7 +33,6 @@ import org.eclipse.jdt.annotation.Nullable;
  */
 @Beta
 @NonNullByDefault
-@ThreadSafe
 public class CheckedValue<T, E extends Exception> extends Variant<T, E> {
     protected CheckedValue(final T value) {
         super(value);
index 06cdebc2624f3585b734f046d107bf1cb2e5d601..694710505fb6ff4a8e2eb9e69384a53d1b418053 100644 (file)
@@ -8,7 +8,6 @@
 package org.opendaylight.yangtools.concepts;
 
 import java.io.Serializable;
-import javax.annotation.concurrent.ThreadSafe;
 
 /**
  * General identifier interface. It is primarily a marker for all things that identify concepts -- such as names,
@@ -22,11 +21,7 @@ import javax.annotation.concurrent.ThreadSafe;
  * of their serialization format. For further efficiency, implementations should consider implementing
  * {@link WritableObject}, so they can be efficiently embedded in other {@link Serializable} and {@code WritableObject}s
  * objects.
- *
- * <p>Note that this class is annotated as {@link ThreadSafe}, hence all implementations are expected to be
- * thread-safe. This is an implication of {@link Immutable} interface contract.
  */
-@ThreadSafe
 public interface Identifier extends Serializable, Immutable {
     @Override
     boolean equals(Object obj);
index 7146711882e860f9f86d1e947100fbaefea559ca..094f9b06fdba78c2ba1367d1c73e052213332d6b 100644 (file)
@@ -16,7 +16,6 @@ import com.google.common.base.MoreObjects.ToStringHelper;
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.util.Objects;
 import java.util.Optional;
-import javax.annotation.concurrent.ThreadSafe;
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.eclipse.jdt.annotation.Nullable;
 
@@ -29,8 +28,7 @@ import org.eclipse.jdt.annotation.Nullable;
  */
 @Beta
 @NonNullByDefault
-@ThreadSafe
-public class Variant<T, U> {
+public class Variant<T, U> implements Immutable {
     private final @Nullable T first;
     private final @Nullable U second;
 
index 2da0956bfc079e6a5fd82a0d5ca9a8cd7a7e14ba..0f85090ca704b1510d4e2c456d208908591177c6 100644 (file)
@@ -11,7 +11,6 @@ import static com.google.common.base.Preconditions.checkArgument;
 
 import com.google.common.annotations.Beta;
 import java.lang.reflect.Modifier;
-import javax.annotation.concurrent.ThreadSafe;
 import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.eclipse.jdt.annotation.Nullable;
@@ -26,7 +25,6 @@ import org.opendaylight.yangtools.concepts.Variant;
  */
 @Beta
 @NonNullByDefault
-@ThreadSafe
 public abstract class AbstractCanonicalValueSupport<T extends CanonicalValue<T>> implements CanonicalValueSupport<T> {
     private static final ClassValue<Boolean> SUPPORTS = new ClassValue<Boolean>() {
         @Override
index 54951589132e0556263665eea68506fb1c18946e..2d6c247dd07f0542fbfd61600ca8a67a1348bb96 100644 (file)
@@ -10,7 +10,6 @@ package org.opendaylight.yangtools.yang.common;
 import static java.util.Objects.requireNonNull;
 
 import com.google.common.annotations.Beta;
-import javax.annotation.concurrent.ThreadSafe;
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.opendaylight.yangtools.concepts.Variant;
 
@@ -23,7 +22,6 @@ import org.opendaylight.yangtools.concepts.Variant;
  */
 @Beta
 @NonNullByDefault
-@ThreadSafe
 public abstract class AbstractCanonicalValueValidator<T extends DerivedString<T>, V extends T>
         implements CanonicalValueValidator<T, V> {
     private static final ClassValue<Boolean> IMPLEMENTATIONS = new AbstractCanonicalValueImplementationValidator() {
index dcb7975b9679358b1c62cdb383a053014e14c40c..afa0a3dbb85b91ec795314ffdf86a35a9ee34c61 100644 (file)
@@ -10,7 +10,6 @@ package org.opendaylight.yangtools.yang.common;
 import static java.util.Objects.requireNonNull;
 
 import com.google.common.annotations.Beta;
-import javax.annotation.concurrent.ThreadSafe;
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.opendaylight.yangtools.concepts.Variant;
 
@@ -30,7 +29,6 @@ import org.opendaylight.yangtools.concepts.Variant;
  */
 @Beta
 @NonNullByDefault
-@ThreadSafe
 public interface CanonicalValueSupport<T extends CanonicalValue<T>> extends CanonicalValueValidator<T, T> {
     /**
      * Create a instance for a string representation. Implementations of this method are required to perform checks
index a4154b1b580271bffb3d05e49c2a53d65bd39c7e..97f7e6a111e4d326e8e9e1e6611e4cffdfb650f6 100644 (file)
@@ -8,7 +8,6 @@
 package org.opendaylight.yangtools.yang.common;
 
 import com.google.common.annotations.Beta;
-import javax.annotation.concurrent.ThreadSafe;
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.eclipse.jdt.annotation.Nullable;
 
@@ -63,7 +62,6 @@ import org.eclipse.jdt.annotation.Nullable;
  */
 @Beta
 @NonNullByDefault
-@ThreadSafe
 public abstract class DerivedString<T extends DerivedString<T>> implements CanonicalValue<T> {
     private static final long serialVersionUID = 1L;
 
index e4179d61a5ba9f94a5dc3893c9f27378f017f72d..586e0ce552198155a06a3b3b45b9dcff862a5d39 100644 (file)
@@ -11,14 +11,12 @@ import static com.google.common.base.Preconditions.checkState;
 import static java.util.Objects.requireNonNull;
 
 import java.util.Arrays;
-import javax.annotation.concurrent.NotThreadSafe;
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.opendaylight.yangtools.concepts.Mutable;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
 
 @NonNullByDefault
-@NotThreadSafe
 final class ModificationPath implements Mutable {
     private static final int DEFAULT_ALLOC_SIZE = 8;
     private static final int ALLOC_SIZE = Integer.getInteger(
index c5632cdbbec8eef92c26f526689fb0990a5e2233..31b9089e1fe5a5923c7cc9f6ef9d921bb792a1e1 100644 (file)
@@ -16,7 +16,6 @@ import java.util.Collection;
 import java.util.Map;
 import java.util.Optional;
 import java.util.function.Predicate;
-import javax.annotation.concurrent.NotThreadSafe;
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
@@ -41,7 +40,6 @@ import org.opendaylight.yangtools.yang.data.api.schema.tree.spi.Version;
  * reconstruct the effective data node presentation, it is sufficient to perform a depth-first pre-order traversal of
  * the tree.
  */
-@NotThreadSafe
 final class ModifiedNode extends NodeModification implements StoreTreeNode<ModifiedNode> {
     static final Predicate<ModifiedNode> IS_TERMINAL_PREDICATE = input -> {
         requireNonNull(input);
index be001cd659e6110cce5985ba72f79cec909f6023..0587d108c14eaabbfd138ec8e5161e1d7bca1c83 100644 (file)
@@ -12,7 +12,6 @@ import static com.google.common.base.Preconditions.checkState;
 import com.google.common.annotations.Beta;
 import java.util.Optional;
 import java.util.function.Function;
-import javax.annotation.concurrent.ThreadSafe;
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
@@ -27,7 +26,6 @@ import org.opendaylight.yangtools.yang.model.api.SchemaContext;
  */
 @Beta
 @NonNullByDefault
-@ThreadSafe
 public final class IdentityCodecUtil {
 
     private IdentityCodecUtil() {
index 13209ac94bd6cb558ecceb48359a27f99b9cd5d4..8f02a93c3af7b3805ccbf89fb10b56c8a30af492 100644 (file)
@@ -23,7 +23,6 @@ import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
-import javax.annotation.concurrent.NotThreadSafe;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.model.parser.api.YangParser;
@@ -38,7 +37,6 @@ import org.slf4j.LoggerFactory;
  *
  * @author Robert Varga
  */
-@NotThreadSafe
 final class ProcessorModuleReactor {
     private static final Logger LOG = LoggerFactory.getLogger(ProcessorModuleReactor.class);
 
index c3e2f90310031b43c4ac0db533b5ed5d6af3cc23..979e8cbbd19ab51d68d743ab66b50355d29d27ac 100644 (file)
@@ -13,7 +13,6 @@ import static java.util.Objects.requireNonNull;
 import com.google.common.annotations.Beta;
 import com.google.common.base.MoreObjects;
 import com.google.common.base.MoreObjects.ToStringHelper;
-import javax.annotation.concurrent.ThreadSafe;
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.yangtools.yang.common.QName;
@@ -30,7 +29,6 @@ import org.opendaylight.yangtools.yang.common.QName;
  */
 @Beta
 @NonNullByDefault
-@ThreadSafe
 public final class DefaultStatementDefinition<A, D extends DeclaredStatement<A>, E extends EffectiveStatement<A, D>>
         implements StatementDefinition {
     private final Class<E> effectiveRepresentation;
index f05e1c02bd9d541bbc1b23e489af3e2988c35321..040f0c9a9d5c3f6e58bf87228749e57ef8ffaf01 100644 (file)
@@ -13,8 +13,6 @@ import com.google.common.annotations.Beta;
 import com.google.common.collect.ImmutableSet;
 import java.util.HashSet;
 import java.util.Set;
-import javax.annotation.concurrent.NotThreadSafe;
-import javax.annotation.concurrent.ThreadSafe;
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
@@ -28,7 +26,6 @@ import org.opendaylight.yangtools.yang.model.api.stmt.ModuleEffectiveStatement.Q
  * @author Robert Varga
  */
 @Beta
-@ThreadSafe
 @NonNullByDefault
 public final class DeclaredStatementFormatter implements Immutable {
     private static final DeclaredStatementFormatter DEFAULT = new DeclaredStatementFormatter(ImmutableSet.of(), true);
@@ -78,7 +75,6 @@ public final class DeclaredStatementFormatter implements Immutable {
      * Builder class for instantiation of a customized {@link DeclaredStatementFormatter}.
      */
     @Beta
-    @NotThreadSafe
     public static final class Builder
             implements org.opendaylight.yangtools.concepts.Builder<DeclaredStatementFormatter> {
         private final Set<StatementDefinition> ignoredStatements = new HashSet<>(4);
index 1b3ad2e0bdc3edbf9fa8f5ddd439cb0c2709e90f..9355e1e0490fed0cb2d065795a37a6e092c3aced 100644 (file)
@@ -20,7 +20,6 @@ import java.util.Spliterators;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 import java.util.stream.StreamSupport;
-import javax.annotation.concurrent.ThreadSafe;
 import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.opendaylight.yangtools.concepts.Immutable;
@@ -40,7 +39,6 @@ import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
  * @author Robert Varga
  */
 @Beta
-@ThreadSafe
 @NonNullByDefault({ PARAMETER, RETURN_TYPE })
 public final class YangTextSnippet implements Immutable, Iterable<@NonNull String> {
     private final Set<@NonNull StatementDefinition> ignoredStatements;