diff --git a/pom.xml b/pom.xml index c9b2825a0..88029fe48 100644 --- a/pom.xml +++ b/pom.xml @@ -251,6 +251,12 @@ jackson-dataformat-velocypack true + + com.google.code.findbugs + jsr305 + 3.0.2 + provided + ch.qos.logback logback-classic diff --git a/src/main/java/com/arangodb/ArangoCollection.java b/src/main/java/com/arangodb/ArangoCollection.java index 40a5cdfd7..8cd8a84a2 100644 --- a/src/main/java/com/arangodb/ArangoCollection.java +++ b/src/main/java/com/arangodb/ArangoCollection.java @@ -23,6 +23,7 @@ import com.arangodb.entity.*; import com.arangodb.model.*; +import javax.annotation.concurrent.ThreadSafe; import java.util.Collection; /** @@ -35,6 +36,7 @@ * @see Documents API Documentation */ @SuppressWarnings("UnusedReturnValue") +@ThreadSafe public interface ArangoCollection extends ArangoSerializationAccessor { /** diff --git a/src/main/java/com/arangodb/ArangoDB.java b/src/main/java/com/arangodb/ArangoDB.java index bb149d55c..07ab9cc53 100644 --- a/src/main/java/com/arangodb/ArangoDB.java +++ b/src/main/java/com/arangodb/ArangoDB.java @@ -61,6 +61,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import javax.annotation.concurrent.ThreadSafe; import javax.net.ssl.HostnameVerifier; import javax.net.ssl.SSLContext; import java.io.InputStream; @@ -85,6 +86,7 @@ * @author Michele Rastelli */ @SuppressWarnings("UnusedReturnValue") +@ThreadSafe public interface ArangoDB extends ArangoSerializationAccessor { /** diff --git a/src/main/java/com/arangodb/ArangoDatabase.java b/src/main/java/com/arangodb/ArangoDatabase.java index f0cfede5f..8dd83b9ce 100644 --- a/src/main/java/com/arangodb/ArangoDatabase.java +++ b/src/main/java/com/arangodb/ArangoDatabase.java @@ -27,6 +27,7 @@ import com.arangodb.model.arangosearch.AnalyzerDeleteOptions; import com.arangodb.model.arangosearch.ArangoSearchCreateOptions; +import javax.annotation.concurrent.ThreadSafe; import java.util.Collection; import java.util.Map; @@ -39,6 +40,7 @@ * @see Query API Documentation */ @SuppressWarnings("UnusedReturnValue") +@ThreadSafe public interface ArangoDatabase extends ArangoSerializationAccessor { /** diff --git a/src/main/java/com/arangodb/ArangoEdgeCollection.java b/src/main/java/com/arangodb/ArangoEdgeCollection.java index 17d6d054b..9308f674f 100644 --- a/src/main/java/com/arangodb/ArangoEdgeCollection.java +++ b/src/main/java/com/arangodb/ArangoEdgeCollection.java @@ -24,6 +24,8 @@ import com.arangodb.entity.EdgeUpdateEntity; import com.arangodb.model.*; +import javax.annotation.concurrent.ThreadSafe; + /** * Interface for operations on ArangoDB edge collection level. * @@ -31,6 +33,7 @@ * @see API Documentation */ @SuppressWarnings("UnusedReturnValue") +@ThreadSafe public interface ArangoEdgeCollection extends ArangoSerializationAccessor { /** diff --git a/src/main/java/com/arangodb/ArangoGraph.java b/src/main/java/com/arangodb/ArangoGraph.java index 873405cda..cec35346b 100644 --- a/src/main/java/com/arangodb/ArangoGraph.java +++ b/src/main/java/com/arangodb/ArangoGraph.java @@ -25,6 +25,7 @@ import com.arangodb.model.GraphCreateOptions; import com.arangodb.model.VertexCollectionCreateOptions; +import javax.annotation.concurrent.ThreadSafe; import java.util.Collection; /** @@ -33,6 +34,7 @@ * @author Mark Vollmary * @see API Documentation */ +@ThreadSafe public interface ArangoGraph extends ArangoSerializationAccessor { /** diff --git a/src/main/java/com/arangodb/ArangoMetrics.java b/src/main/java/com/arangodb/ArangoMetrics.java index 21d659b53..38253fac4 100644 --- a/src/main/java/com/arangodb/ArangoMetrics.java +++ b/src/main/java/com/arangodb/ArangoMetrics.java @@ -20,12 +20,15 @@ package com.arangodb; +import javax.annotation.concurrent.ThreadSafe; + /** * Interface for accessing metrics. * * @author Michele Rastelli * @since ArangoDB 3.9 */ +@ThreadSafe public interface ArangoMetrics { /** * @return queue time metrics diff --git a/src/main/java/com/arangodb/ArangoSearch.java b/src/main/java/com/arangodb/ArangoSearch.java index 7a6600d79..bf3fdd1ec 100644 --- a/src/main/java/com/arangodb/ArangoSearch.java +++ b/src/main/java/com/arangodb/ArangoSearch.java @@ -25,6 +25,8 @@ import com.arangodb.model.arangosearch.ArangoSearchCreateOptions; import com.arangodb.model.arangosearch.ArangoSearchPropertiesOptions; +import javax.annotation.concurrent.ThreadSafe; + /** * Interface for operations on ArangoDB view level for ArangoSearch views. * @@ -32,6 +34,7 @@ * @see View API Documentation * @since ArangoDB 3.4.0 */ +@ThreadSafe public interface ArangoSearch extends ArangoView { /** diff --git a/src/main/java/com/arangodb/ArangoSerializationAccessor.java b/src/main/java/com/arangodb/ArangoSerializationAccessor.java index f140f054e..a256358cc 100644 --- a/src/main/java/com/arangodb/ArangoSerializationAccessor.java +++ b/src/main/java/com/arangodb/ArangoSerializationAccessor.java @@ -23,9 +23,12 @@ import com.arangodb.internal.util.ArangoSerializationFactory.Serializer; import com.arangodb.util.ArangoSerialization; +import javax.annotation.concurrent.ThreadSafe; + /** * @author Mark Vollmary */ +@ThreadSafe public interface ArangoSerializationAccessor { /** diff --git a/src/main/java/com/arangodb/ArangoVertexCollection.java b/src/main/java/com/arangodb/ArangoVertexCollection.java index e34705cf4..28dddfd0c 100644 --- a/src/main/java/com/arangodb/ArangoVertexCollection.java +++ b/src/main/java/com/arangodb/ArangoVertexCollection.java @@ -24,12 +24,15 @@ import com.arangodb.entity.VertexUpdateEntity; import com.arangodb.model.*; +import javax.annotation.concurrent.ThreadSafe; + /** * Interface for operations on ArangoDB vertex collection level. * * @author Mark Vollmary * @see API Documentation */ +@ThreadSafe public interface ArangoVertexCollection extends ArangoSerializationAccessor { /** diff --git a/src/main/java/com/arangodb/ArangoView.java b/src/main/java/com/arangodb/ArangoView.java index 56a3a7995..6ed960caa 100644 --- a/src/main/java/com/arangodb/ArangoView.java +++ b/src/main/java/com/arangodb/ArangoView.java @@ -22,6 +22,8 @@ import com.arangodb.entity.ViewEntity; +import javax.annotation.concurrent.ThreadSafe; + /** * Interface for operations on ArangoDB view level. * @@ -30,6 +32,7 @@ * @since ArangoDB 3.4.0 */ @SuppressWarnings("UnusedReturnValue") +@ThreadSafe public interface ArangoView extends ArangoSerializationAccessor { /** diff --git a/src/main/java/com/arangodb/QueueTimeMetrics.java b/src/main/java/com/arangodb/QueueTimeMetrics.java index 333d14997..c04a7110b 100644 --- a/src/main/java/com/arangodb/QueueTimeMetrics.java +++ b/src/main/java/com/arangodb/QueueTimeMetrics.java @@ -22,6 +22,8 @@ import com.arangodb.model.QueueTimeSample; +import javax.annotation.concurrent.ThreadSafe; + /** * Interface for accessing queue time latency metrics, reported by the "X-Arango-Queue-Time-Seconds" response header. * This header contains the most recent request (de)queuing time (in seconds) as tracked by the server’s scheduler. @@ -30,6 +32,7 @@ * @see API Documentation * @since ArangoDB 3.9 */ +@ThreadSafe public interface QueueTimeMetrics { /** diff --git a/src/main/java/com/arangodb/async/ArangoCollectionAsync.java b/src/main/java/com/arangodb/async/ArangoCollectionAsync.java index c54a7c8e1..ff7a6092b 100644 --- a/src/main/java/com/arangodb/async/ArangoCollectionAsync.java +++ b/src/main/java/com/arangodb/async/ArangoCollectionAsync.java @@ -25,6 +25,7 @@ import com.arangodb.entity.*; import com.arangodb.model.*; +import javax.annotation.concurrent.ThreadSafe; import java.util.Collection; import java.util.concurrent.CompletableFuture; @@ -36,6 +37,7 @@ * @see Documents API Documentation */ @SuppressWarnings("unused") +@ThreadSafe public interface ArangoCollectionAsync extends ArangoSerializationAccessor { /** diff --git a/src/main/java/com/arangodb/async/ArangoDBAsync.java b/src/main/java/com/arangodb/async/ArangoDBAsync.java index ed4eb8ed3..d960c3a3e 100644 --- a/src/main/java/com/arangodb/async/ArangoDBAsync.java +++ b/src/main/java/com/arangodb/async/ArangoDBAsync.java @@ -50,6 +50,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import javax.annotation.concurrent.ThreadSafe; import javax.net.ssl.SSLContext; import java.io.InputStream; import java.lang.annotation.Annotation; @@ -70,6 +71,7 @@ * * @author Mark Vollmary */ +@ThreadSafe public interface ArangoDBAsync extends ArangoSerializationAccessor { void shutdown() throws ArangoDBException; diff --git a/src/main/java/com/arangodb/async/ArangoDatabaseAsync.java b/src/main/java/com/arangodb/async/ArangoDatabaseAsync.java index 420034655..93d973e00 100644 --- a/src/main/java/com/arangodb/async/ArangoDatabaseAsync.java +++ b/src/main/java/com/arangodb/async/ArangoDatabaseAsync.java @@ -30,6 +30,7 @@ import com.arangodb.model.arangosearch.AnalyzerDeleteOptions; import com.arangodb.model.arangosearch.ArangoSearchCreateOptions; +import javax.annotation.concurrent.ThreadSafe; import java.util.Collection; import java.util.Map; import java.util.concurrent.CompletableFuture; @@ -42,6 +43,7 @@ * @see Query API Documentation */ @SuppressWarnings("unused") +@ThreadSafe public interface ArangoDatabaseAsync extends ArangoSerializationAccessor { /** diff --git a/src/main/java/com/arangodb/async/ArangoEdgeCollectionAsync.java b/src/main/java/com/arangodb/async/ArangoEdgeCollectionAsync.java index 2dea8807c..b4465a861 100644 --- a/src/main/java/com/arangodb/async/ArangoEdgeCollectionAsync.java +++ b/src/main/java/com/arangodb/async/ArangoEdgeCollectionAsync.java @@ -25,6 +25,7 @@ import com.arangodb.entity.EdgeUpdateEntity; import com.arangodb.model.*; +import javax.annotation.concurrent.ThreadSafe; import java.util.concurrent.CompletableFuture; /** @@ -34,6 +35,7 @@ * @see API Documentation */ @SuppressWarnings("unused") +@ThreadSafe public interface ArangoEdgeCollectionAsync extends ArangoSerializationAccessor { /** diff --git a/src/main/java/com/arangodb/async/ArangoGraphAsync.java b/src/main/java/com/arangodb/async/ArangoGraphAsync.java index 17cb45a95..73d27d0af 100644 --- a/src/main/java/com/arangodb/async/ArangoGraphAsync.java +++ b/src/main/java/com/arangodb/async/ArangoGraphAsync.java @@ -26,6 +26,7 @@ import com.arangodb.model.GraphCreateOptions; import com.arangodb.model.VertexCollectionCreateOptions; +import javax.annotation.concurrent.ThreadSafe; import java.util.Collection; import java.util.concurrent.CompletableFuture; @@ -36,6 +37,7 @@ * @see API Documentation */ @SuppressWarnings("unused") +@ThreadSafe public interface ArangoGraphAsync extends ArangoSerializationAccessor { /** diff --git a/src/main/java/com/arangodb/async/ArangoSearchAsync.java b/src/main/java/com/arangodb/async/ArangoSearchAsync.java index d738012c1..7e7431b04 100644 --- a/src/main/java/com/arangodb/async/ArangoSearchAsync.java +++ b/src/main/java/com/arangodb/async/ArangoSearchAsync.java @@ -25,6 +25,7 @@ import com.arangodb.model.arangosearch.ArangoSearchCreateOptions; import com.arangodb.model.arangosearch.ArangoSearchPropertiesOptions; +import javax.annotation.concurrent.ThreadSafe; import java.util.concurrent.CompletableFuture; /** @@ -34,6 +35,7 @@ * @see View API Documentation * @since ArangoDB 3.4.0 */ +@ThreadSafe public interface ArangoSearchAsync extends ArangoViewAsync { /** diff --git a/src/main/java/com/arangodb/async/ArangoVertexCollectionAsync.java b/src/main/java/com/arangodb/async/ArangoVertexCollectionAsync.java index b610a9796..58a3942c8 100644 --- a/src/main/java/com/arangodb/async/ArangoVertexCollectionAsync.java +++ b/src/main/java/com/arangodb/async/ArangoVertexCollectionAsync.java @@ -25,6 +25,7 @@ import com.arangodb.entity.VertexUpdateEntity; import com.arangodb.model.*; +import javax.annotation.concurrent.ThreadSafe; import java.util.concurrent.CompletableFuture; /** @@ -34,6 +35,7 @@ * @see API Documentation */ @SuppressWarnings("unused") +@ThreadSafe public interface ArangoVertexCollectionAsync extends ArangoSerializationAccessor { /** diff --git a/src/main/java/com/arangodb/async/ArangoViewAsync.java b/src/main/java/com/arangodb/async/ArangoViewAsync.java index fed3da081..d100c6300 100644 --- a/src/main/java/com/arangodb/async/ArangoViewAsync.java +++ b/src/main/java/com/arangodb/async/ArangoViewAsync.java @@ -23,6 +23,7 @@ import com.arangodb.ArangoSerializationAccessor; import com.arangodb.entity.ViewEntity; +import javax.annotation.concurrent.ThreadSafe; import java.util.concurrent.CompletableFuture; /** @@ -33,6 +34,7 @@ * @since ArangoDB 3.4.0 */ @SuppressWarnings("unused") +@ThreadSafe public interface ArangoViewAsync extends ArangoSerializationAccessor { /**