diff --git a/driver/src/main/java/org/neo4j/driver/AccessMode.java b/driver/src/main/java/org/neo4j/driver/AccessMode.java index 3a3900d7e7..ee6ae1c6ee 100644 --- a/driver/src/main/java/org/neo4j/driver/AccessMode.java +++ b/driver/src/main/java/org/neo4j/driver/AccessMode.java @@ -23,7 +23,7 @@ * When running a transaction, a write transaction requires a server that supports writes. * A read transaction, on the other hand, requires a server that supports read operations. * This classification is key for routing driver to route transactions to a cluster correctly. - * + *

* While any {@link AccessMode} will be ignored while running transactions via a driver towards a single server. * As the single server serves both read and write operations at the same time. */ diff --git a/driver/src/main/java/org/neo4j/driver/Bookmark.java b/driver/src/main/java/org/neo4j/driver/Bookmark.java index b80a4b73ed..1cffb1f14a 100644 --- a/driver/src/main/java/org/neo4j/driver/Bookmark.java +++ b/driver/src/main/java/org/neo4j/driver/Bookmark.java @@ -24,13 +24,13 @@ /** * Causal chaining is carried out by passing bookmarks between transactions. - * + *

* When starting a session with initial bookmarks, the first transaction will be ensured to run at least after * the database is as up-to-date as the latest transaction referenced by the supplied bookmarks. - * + *

* Within a session, bookmark propagation is carried out automatically. * Thus all transactions in a session (both managed and unmanaged) are guaranteed to be carried out one after another. - * + *

* To opt out of this mechanism for unrelated units of work, applications can use multiple sessions. */ public interface Bookmark { diff --git a/driver/src/main/java/org/neo4j/driver/BookmarkManagerConfig.java b/driver/src/main/java/org/neo4j/driver/BookmarkManagerConfig.java index 170692c180..d00a5f9d52 100644 --- a/driver/src/main/java/org/neo4j/driver/BookmarkManagerConfig.java +++ b/driver/src/main/java/org/neo4j/driver/BookmarkManagerConfig.java @@ -51,7 +51,7 @@ public static BookmarkManagerConfigBuilder builder() { /** * Returns the map of bookmarks used to initialise the bookmark manager. * - * @return the map of bookmarks + * @return the set of bookmarks */ public Set initialBookmarks() { return initialBookmarks; diff --git a/driver/src/main/java/org/neo4j/driver/Query.java b/driver/src/main/java/org/neo4j/driver/Query.java index 57acd2ba9f..e46e23deb5 100644 --- a/driver/src/main/java/org/neo4j/driver/Query.java +++ b/driver/src/main/java/org/neo4j/driver/Query.java @@ -120,7 +120,7 @@ public Query withParameters(Map newParameters) { /** * Create a new query with new parameters derived by updating this' * query's parameters using the given updates. - * + *

* Every update key that points to a null value will be removed from * the new query's parameters. All other entries will just replace * any existing parameter in the new query. diff --git a/driver/src/main/java/org/neo4j/driver/Result.java b/driver/src/main/java/org/neo4j/driver/Result.java index 8e014f11e4..78e3fe584f 100644 --- a/driver/src/main/java/org/neo4j/driver/Result.java +++ b/driver/src/main/java/org/neo4j/driver/Result.java @@ -29,10 +29,10 @@ /** * The result of running a Cypher query, conceptually a stream of {@link Record records}. - * + *

* The standard way of navigating through the result returned by the database is to * {@link #next() iterate} over it. - * + *

* Results are valid until the next query is run or until the end of the current transaction, * whichever comes first. To keep a result around while further queries are run, or to use a result outside the scope * of the current transaction, see {@link #list()}. @@ -42,11 +42,11 @@ * In order to handle very large results, and to minimize memory overhead and maximize * performance, results are retrieved lazily. Please see {@link QueryRunner} for * important details on the effects of this. - * + *

* The short version is that, if you want a hard guarantee that the underlying query * has completed, you need to either call {@link Resource#close()} on the {@link Transaction} * or {@link Session} that created this result, or you need to use the result. - * + *

* Calling any method on this interface will guarantee that any write operation has completed on * the remote database. * @@ -79,7 +79,7 @@ public interface Result extends Iterator { /** * Return the first record in the result, failing if there is not exactly * one record left in the stream - * + *

* Calling this method always exhausts the result, even when {@link NoSuchRecordException} is thrown. * * @return the first and only record in the stream @@ -108,12 +108,12 @@ public interface Result extends Iterator { * Retrieve and store the entire result stream. * This can be used if you want to iterate over the stream multiple times or to store the * whole result for later use. - * + *

* Note that this method can only be used if you know that the query that * yielded this result returns a finite stream. Some queries can yield * infinite results, in which case calling this method will lead to running * out of memory. - * + *

* Calling this method exhausts the result. * * @return list of all remaining immutable records @@ -124,12 +124,12 @@ public interface Result extends Iterator { * Retrieve and store a projection of the entire result. * This can be used if you want to iterate over the stream multiple times or to store the * whole result for later use. - * + *

* Note that this method can only be used if you know that the query that * yielded this result returns a finite stream. Some queries can yield * infinite results, in which case calling this method will lead to running * out of memory. - * + *

* Calling this method exhausts the result. * * @param mapFunction a function to map from Record to T. See {@link Records} for some predefined functions. diff --git a/driver/src/main/java/org/neo4j/driver/SessionConfig.java b/driver/src/main/java/org/neo4j/driver/SessionConfig.java index e1c63a74d8..e9b2c63fc7 100644 --- a/driver/src/main/java/org/neo4j/driver/SessionConfig.java +++ b/driver/src/main/java/org/neo4j/driver/SessionConfig.java @@ -332,12 +332,12 @@ public Builder withDatabase(String database) { * Specify how many records to fetch in each batch for this session. * This config will overrides the default value set on {@link Config#fetchSize()}. * This config is only valid when the driver is used with servers that support Bolt V4 (Server version 4.0 and later). - * + *

* Bolt V4 enables pulling records in batches to allow client to take control of data population and apply back pressure to server. * This config specifies the default fetch size for all query runs using {@link Session} and {@link AsyncSession}. * By default, the value is set to {@code 1000}. * Use {@code -1} to disables back pressure and config client to pull all records at once after each run. - * + *

* This config only applies to run result obtained via {@link Session} and {@link AsyncSession}. * As with {@link RxSession}, the batch size is provided via {@link Subscription#request(long)} instead. * @param size the default record fetch size when pulling records in batches using Bolt V4. diff --git a/driver/src/main/java/org/neo4j/driver/SimpleQueryRunner.java b/driver/src/main/java/org/neo4j/driver/SimpleQueryRunner.java index 3e8c6cff5c..880c5eedfb 100644 --- a/driver/src/main/java/org/neo4j/driver/SimpleQueryRunner.java +++ b/driver/src/main/java/org/neo4j/driver/SimpleQueryRunner.java @@ -95,7 +95,7 @@ public interface SimpleQueryRunner { * * Map parameters = new HashMap(); * parameters.put("myNameParam", "Bob"); - * + *

* Result result = session.run( "MATCH (n) WHERE n.name = $myNameParam RETURN (n)", * parameters ); * } diff --git a/driver/src/main/java/org/neo4j/driver/Value.java b/driver/src/main/java/org/neo4j/driver/Value.java index 8a646f8fa8..318dfa9eb6 100644 --- a/driver/src/main/java/org/neo4j/driver/Value.java +++ b/driver/src/main/java/org/neo4j/driver/Value.java @@ -46,7 +46,7 @@ /** * A unit of data that adheres to the Neo4j type system. - * + *

* This interface describes a number of isType methods along with * typeValue methods. The first set of these correlate with types from * the Neo4j Type System and are used to determine which Neo4j type is represented. @@ -59,7 +59,7 @@ * Because Neo4j often handles dynamic structures, this interface is designed to help * you handle such structures in Java. Specifically, {@link Value} lets you navigate arbitrary tree * structures without having to resort to type casting. - * + *

* Given a tree structure like: * *

@@ -74,7 +74,6 @@
  * 
* * You can retrieve the name of the second user, John, like so: - * *
  * {@code
  * String username = value.get("users").get(1).get("name").asString();
@@ -82,7 +81,6 @@
  * 
* * You can also easily iterate over the users: - * *
  * {@code
  * List names = new LinkedList<>();
@@ -497,7 +495,7 @@ public interface Value extends MapAccessor, MapAccessorWithDefaultValue {
     /**
      * Return as a map of string keys and values converted using
      * {@link Value#asObject()}.
-     *
+     * 

* This is equivalent to calling {@link #asMap(Function, Map)} with {@link Values#ofObject()}. * * @param defaultValue default to this value if the value is a {@link NullValue} diff --git a/driver/src/main/java/org/neo4j/driver/exceptions/NoSuchRecordException.java b/driver/src/main/java/org/neo4j/driver/exceptions/NoSuchRecordException.java index 0a9dd4465c..c7ba5b2997 100644 --- a/driver/src/main/java/org/neo4j/driver/exceptions/NoSuchRecordException.java +++ b/driver/src/main/java/org/neo4j/driver/exceptions/NoSuchRecordException.java @@ -23,7 +23,7 @@ /** * Thrown whenever a client expected to read a record that was not available (i.e. because it wasn't returned by the server). - * + *

* This usually indicates an expectation mismatch between client code and database application logic. * * @since 1.0 diff --git a/driver/src/main/java/org/neo4j/driver/internal/async/pool/NettyChannelPool.java b/driver/src/main/java/org/neo4j/driver/internal/async/pool/NettyChannelPool.java index 23a1b888c7..0ad087617a 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/async/pool/NettyChannelPool.java +++ b/driver/src/main/java/org/neo4j/driver/internal/async/pool/NettyChannelPool.java @@ -190,11 +190,9 @@ private CompletionStage auth(Channel channel, AuthToken overrideAuthTok .enqueue(new LogonResponseHandler(logonFuture, channel, clock)); authContext.initiateAuth(latestAuthToken); channel.write(new LogonMessage(((InternalAuthToken) latestAuthToken).toMap())); - // do not await for re-login - result = CompletableFuture.completedStage(channel); - } else { - result = CompletableFuture.completedStage(channel); } + // do not await for re-login + result = CompletableFuture.completedStage(channel); } else { var logonFuture = new CompletableFuture(); messageDispatcher(channel).enqueue(new LogonResponseHandler(logonFuture, channel, clock)); diff --git a/driver/src/main/java/org/neo4j/driver/internal/messaging/ValueUnpacker.java b/driver/src/main/java/org/neo4j/driver/internal/messaging/ValueUnpacker.java index cb33aab78d..dfd5b2f867 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/messaging/ValueUnpacker.java +++ b/driver/src/main/java/org/neo4j/driver/internal/messaging/ValueUnpacker.java @@ -23,6 +23,7 @@ import org.neo4j.driver.Value; public interface ValueUnpacker { + @SuppressWarnings("UnusedReturnValue") long unpackStructHeader() throws IOException; int unpackStructSignature() throws IOException; diff --git a/driver/src/main/java/org/neo4j/driver/internal/messaging/v43/BoltProtocolV43.java b/driver/src/main/java/org/neo4j/driver/internal/messaging/v43/BoltProtocolV43.java index b2f31bd88a..7e193ac46c 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/messaging/v43/BoltProtocolV43.java +++ b/driver/src/main/java/org/neo4j/driver/internal/messaging/v43/BoltProtocolV43.java @@ -25,7 +25,7 @@ /** * Definition of the Bolt Protocol 4.3 - * + *

* The version 4.3 use most of the 4.2 behaviours, but it extends it with new messages such as ROUTE */ public class BoltProtocolV43 extends BoltProtocolV42 { diff --git a/driver/src/main/java/org/neo4j/driver/internal/messaging/v43/MessageWriterV43.java b/driver/src/main/java/org/neo4j/driver/internal/messaging/v43/MessageWriterV43.java index c59cdfb3b7..49a0b9b3ab 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/messaging/v43/MessageWriterV43.java +++ b/driver/src/main/java/org/neo4j/driver/internal/messaging/v43/MessageWriterV43.java @@ -47,7 +47,7 @@ /** * Bolt message writer v4.3 - * + *

* This version is able to encode all the versions existing on v4.2, but it encodes * new messages such as ROUTE */ diff --git a/driver/src/main/java/org/neo4j/driver/internal/metrics/ConnectionPoolMetricsListener.java b/driver/src/main/java/org/neo4j/driver/internal/metrics/ConnectionPoolMetricsListener.java index b21ac24d8b..d974fde1cc 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/metrics/ConnectionPoolMetricsListener.java +++ b/driver/src/main/java/org/neo4j/driver/internal/metrics/ConnectionPoolMetricsListener.java @@ -42,7 +42,7 @@ interface ConnectionPoolMetricsListener { /** * Invoked before acquiring or creating a connection. * - * @param acquireEvent + * @param acquireEvent the event */ void beforeAcquiringOrCreating(ListenerEvent acquireEvent); @@ -54,7 +54,7 @@ interface ConnectionPoolMetricsListener { /** * Invoked after a connection is acquired or created successfully. * - * @param acquireEvent + * @param acquireEvent the event */ void afterAcquiredOrCreated(ListenerEvent acquireEvent); @@ -66,14 +66,14 @@ interface ConnectionPoolMetricsListener { /** * After a connection is acquired from the pool. * - * @param inUseEvent + * @param inUseEvent the event */ void acquired(ListenerEvent inUseEvent); /** * After a connection is released back to pool. * - * @param inUseEvent + * @param inUseEvent the event */ void released(ListenerEvent inUseEvent); } diff --git a/driver/src/main/java/org/neo4j/driver/internal/packstream/PackOutput.java b/driver/src/main/java/org/neo4j/driver/internal/packstream/PackOutput.java index 22f355f513..ee7e8c1719 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/packstream/PackOutput.java +++ b/driver/src/main/java/org/neo4j/driver/internal/packstream/PackOutput.java @@ -28,17 +28,21 @@ public interface PackOutput { PackOutput writeByte(byte value) throws IOException; /** Produce binary data */ + @SuppressWarnings("UnusedReturnValue") PackOutput writeBytes(byte[] data) throws IOException; /** Produce a 4-byte signed integer */ PackOutput writeShort(short value) throws IOException; /** Produce a 4-byte signed integer */ + @SuppressWarnings("UnusedReturnValue") PackOutput writeInt(int value) throws IOException; /** Produce an 8-byte signed integer */ + @SuppressWarnings("UnusedReturnValue") PackOutput writeLong(long value) throws IOException; /** Produce an 8-byte IEEE 754 "double format" floating-point number */ + @SuppressWarnings("UnusedReturnValue") PackOutput writeDouble(double value) throws IOException; } diff --git a/driver/src/main/java/org/neo4j/driver/internal/packstream/PackStream.java b/driver/src/main/java/org/neo4j/driver/internal/packstream/PackStream.java index 647c9bf378..fc28e3beed 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/packstream/PackStream.java +++ b/driver/src/main/java/org/neo4j/driver/internal/packstream/PackStream.java @@ -33,10 +33,10 @@ * PackStream is a messaging serialisation format heavily inspired by MessagePack. * The key differences are in the type system itself which (among other things) replaces extensions with structures. * The Packer and Unpacker implementations are also faster than their MessagePack counterparts. - * + *

* Note that several marker byte values are RESERVED for future use. * Extra markers should not be added casually and such additions must be follow a strict process involving both client and server software. - * + *

* The table below shows all allocated marker byte values. *
* diff --git a/driver/src/main/java/org/neo4j/driver/internal/retry/ExponentialBackoffRetryLogic.java b/driver/src/main/java/org/neo4j/driver/internal/retry/ExponentialBackoffRetryLogic.java index 4bbae7ee89..ddd39c8be8 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/retry/ExponentialBackoffRetryLogic.java +++ b/driver/src/main/java/org/neo4j/driver/internal/retry/ExponentialBackoffRetryLogic.java @@ -158,11 +158,10 @@ protected boolean canRetryOn(Throwable error) { /** * Extracts the possible cause of a transaction that has been marked terminated. * - * @param error - * @return + * @param error the error + * @return the possible cause or the original error */ private static Throwable extractPossibleTerminationCause(Throwable error) { - // Having a dedicated "TerminatedException" inheriting from ClientException might be a good idea. if (error instanceof ClientException && error.getCause() != null) { return error.getCause(); diff --git a/driver/src/main/java/org/neo4j/driver/internal/util/CertificateTool.java b/driver/src/main/java/org/neo4j/driver/internal/util/CertificateTool.java index fd829d4438..cfc95f24c4 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/util/CertificateTool.java +++ b/driver/src/main/java/org/neo4j/driver/internal/util/CertificateTool.java @@ -44,10 +44,8 @@ public final class CertificateTool { /** * Save a certificate to a file. Remove all the content in the file if there is any before. * - * @param cert - * @param certFile - * @throws GeneralSecurityException - * @throws IOException + * @param cert the certificate + * @param certFile the certificate file */ public static void saveX509Cert(Certificate cert, File certFile) throws GeneralSecurityException, IOException { saveX509Cert(new Certificate[] {cert}, certFile); @@ -56,10 +54,8 @@ public static void saveX509Cert(Certificate cert, File certFile) throws GeneralS /** * Save a list of certificates into a file * - * @param certs - * @param certFile - * @throws GeneralSecurityException - * @throws IOException + * @param certs the certificates + * @param certFile the certificate file */ public static void saveX509Cert(Certificate[] certs, File certFile) throws GeneralSecurityException, IOException { try (var writer = new BufferedWriter(new FileWriter(certFile))) { @@ -82,10 +78,8 @@ public static void saveX509Cert(Certificate[] certs, File certFile) throws Gener /** * Load the certificates written in X.509 format in a file to a key store. * - * @param certFiles - * @param keyStore - * @throws GeneralSecurityException - * @throws IOException + * @param certFiles the certificate files + * @param keyStore the key store */ public static void loadX509Cert(List certFiles, KeyStore keyStore) throws GeneralSecurityException, IOException { @@ -126,8 +120,8 @@ public static void loadX509Cert(X509Certificate[] certificates, KeyStore keyStor * Load a certificate to a key store with a name * * @param certAlias a name to identify different certificates - * @param cert - * @param keyStore + * @param cert the certificate + * @param keyStore the key store */ public static void loadX509Cert(Certificate cert, String certAlias, KeyStore keyStore) throws KeyStoreException { keyStore.setCertificateEntry(certAlias, cert); diff --git a/driver/src/main/java/org/neo4j/driver/internal/util/ErrorUtil.java b/driver/src/main/java/org/neo4j/driver/internal/util/ErrorUtil.java index 9432237827..040bb17f64 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/util/ErrorUtil.java +++ b/driver/src/main/java/org/neo4j/driver/internal/util/ErrorUtil.java @@ -102,9 +102,7 @@ public static boolean isFatal(Throwable error) { return true; } - if (isClientOrTransientError(((Neo4jException) error))) { - return false; - } + return !isClientOrTransientError(((Neo4jException) error)); } return true; } diff --git a/driver/src/main/java/org/neo4j/driver/internal/util/Futures.java b/driver/src/main/java/org/neo4j/driver/internal/util/Futures.java index c1e4f7b34f..6bef5b5fb9 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/util/Futures.java +++ b/driver/src/main/java/org/neo4j/driver/internal/util/Futures.java @@ -43,13 +43,12 @@ public static CompletableFuture completedWithNull() { return (CompletableFuture) COMPLETED_WITH_NULL; } - public static CompletableFuture completeWithNullIfNoError(CompletableFuture future, Throwable error) { + public static void completeWithNullIfNoError(CompletableFuture future, Throwable error) { if (error != null) { future.completeExceptionally(error); } else { future.complete(null); } - return future; } public static CompletionStage asCompletionStage(io.netty.util.concurrent.Future future) { diff --git a/driver/src/main/java/org/neo4j/driver/reactive/RxQueryRunner.java b/driver/src/main/java/org/neo4j/driver/reactive/RxQueryRunner.java index 0188a27195..0712c9c3a4 100644 --- a/driver/src/main/java/org/neo4j/driver/reactive/RxQueryRunner.java +++ b/driver/src/main/java/org/neo4j/driver/reactive/RxQueryRunner.java @@ -39,16 +39,16 @@ public interface RxQueryRunner { * Register running of a query and return a reactive result stream. * The query is not executed when the reactive result is returned. * Instead, the publishers in the result will actually start the execution of the query. - * + *

* This method takes a set of parameters that will be injected into the * query by Neo4j. Using parameters is highly encouraged, it helps avoid * dangerous cypher injection attacks and improves database performance as * Neo4j can re-use query plans more often. - * + *

* This particular method takes a {@link Value} as its input. This is useful * if you want to take a map-like value that you've gotten from a prior result * and send it back as parameters. - * + *

* If you are creating parameters programmatically, {@link #run(String, Map)} * might be more helpful, it converts your map to a {@link Value} for you. * @@ -64,12 +64,12 @@ default RxResult run(String query, Value parameters) { * Register running of a query and return a reactive result stream. * The query is not executed when the reactive result is returned. * Instead, the publishers in the result will actually start the execution of the query. - * + *

* This method takes a set of parameters that will be injected into the * query by Neo4j. Using parameters is highly encouraged, it helps avoid * dangerous cypher injection attacks and improves database performance as * Neo4j can re-use query plans more often. - * + *

* This version of run takes a {@link Map} of parameters. The values in the map * must be values that can be converted to Neo4j types. See {@link Values#parameters(Object...)} for * a list of allowed types. @@ -86,12 +86,12 @@ default RxResult run(String query, Map parameters) { * Register running of a query and return a reactive result stream. * The query is not executed when the reactive result is returned. * Instead, the publishers in the result will actually start the execution of the query. - * + *

* This method takes a set of parameters that will be injected into the * query by Neo4j. Using parameters is highly encouraged, it helps avoid * dangerous cypher injection attacks and improves database performance as * Neo4j can re-use query plans more often. - * + *

* This version of run takes a {@link Record} of parameters, which can be useful * if you want to use the output of one query as input for another. * diff --git a/driver/src/main/java/org/neo4j/driver/summary/Plan.java b/driver/src/main/java/org/neo4j/driver/summary/Plan.java index 561fd2d328..fb42948df0 100644 --- a/driver/src/main/java/org/neo4j/driver/summary/Plan.java +++ b/driver/src/main/java/org/neo4j/driver/summary/Plan.java @@ -27,12 +27,12 @@ * This describes the plan that the database planner produced and used (or will use) to execute your query. * This can be extremely helpful in understanding what a query is doing, and how to optimize it. For more * details, see the Neo4j Manual. - * + *

* The plan for the query is a tree of plans - each sub-tree containing zero or more child plans. The query * starts with the root plan. Each sub-plan is of a specific {@link #operatorType() operator type}, which describes * what that part of the plan does - for instance, perform an index lookup or filter results. The Neo4j Manual contains * a reference of the available operator types, and these may differ across Neo4j versions. - * + *

* For a simple view of a plan, the {@code toString} method will give a human-readable rendering of the tree. * @since 1.0 */ diff --git a/driver/src/main/java/org/neo4j/driver/summary/ResultSummary.java b/driver/src/main/java/org/neo4j/driver/summary/ResultSummary.java index 025718bda5..ab133b76ad 100644 --- a/driver/src/main/java/org/neo4j/driver/summary/ResultSummary.java +++ b/driver/src/main/java/org/neo4j/driver/summary/ResultSummary.java @@ -27,9 +27,9 @@ * The result summary of running a query. The result summary interface can be used to investigate * details about the result, like the type of query run, how many and which kinds of updates have been executed, * and query plan and profiling information if available. - * + *

* The result summary is only available after all result records have been consumed. - * + *

* Keeping the result summary around does not influence the lifecycle of any associated session and/or transaction. * @since 1.0 */ @@ -69,7 +69,7 @@ public interface ResultSummary { /** * This describes how the database did execute your query. - * + *

* If the query you executed {@link #hasProfile() was profiled}, the query plan will contain detailed * information about what each step of the plan did. That more in-depth version of the query plan becomes * available here. @@ -82,7 +82,7 @@ public interface ResultSummary { * A list of notifications that might arise when executing the query. * Notifications can be warnings about problematic queries or other valuable information that can be presented * in a client. - * + *

* Unlike failures or errors, notifications do not affect the execution of a query. * * @return a list of notifications produced while executing the query. The list will be empty if no diff --git a/driver/src/main/java/org/neo4j/driver/types/MapAccessor.java b/driver/src/main/java/org/neo4j/driver/types/MapAccessor.java index a7df3b39a2..ba4fa54e7a 100644 --- a/driver/src/main/java/org/neo4j/driver/types/MapAccessor.java +++ b/driver/src/main/java/org/neo4j/driver/types/MapAccessor.java @@ -27,7 +27,7 @@ /** * Access the keys, properties and values of an underlying unordered map by key - * + *

* This provides only read methods. Subclasses may chose to provide additional methods * for changing the underlying map. * @since 1.0 @@ -84,7 +84,7 @@ public interface MapAccessor { /** * Return the underlying map as a map of string keys and values converted using * {@link Value#asObject()}. - * + *

* This is equivalent to calling {@link #asMap(Function)} with {@link Values#ofObject()}. * * @return the value as a Java map diff --git a/driver/src/main/java/org/neo4j/driver/types/Path.java b/driver/src/main/java/org/neo4j/driver/types/Path.java index 425f486023..e7b6094707 100644 --- a/driver/src/main/java/org/neo4j/driver/types/Path.java +++ b/driver/src/main/java/org/neo4j/driver/types/Path.java @@ -24,7 +24,7 @@ * A Path is a directed sequence of relationships between two nodes. This generally * represents a traversal or walk through a graph and maintains a direction separate * from that of any relationships traversed. - * + *

* It is allowed to be of size 0, meaning there are no relationships in it. In this case, * it contains only a single node which is both the start and the end of the path. * diff --git a/driver/src/test/java/org/neo4j/driver/integration/ConnectionPoolIT.java b/driver/src/test/java/org/neo4j/driver/integration/ConnectionPoolIT.java index 0ee8a05efb..2e69060b64 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/ConnectionPoolIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/ConnectionPoolIT.java @@ -170,6 +170,7 @@ private static void startAndCloseTransactions(Driver driver, int txCount) { } } + @SuppressWarnings("BusyWait") private void awaitNoActiveChannels(ChannelTrackingDriverFactory driverFactory) throws InterruptedException { var deadline = System.currentTimeMillis() + TimeUnit.SECONDS.toMillis(20); var activeChannels = -1; @@ -187,7 +188,7 @@ private void awaitNoActiveChannels(ChannelTrackingDriverFactory driverFactory) t /** * This is a background runner that will grab lots of sessions in one go, and then close them all, while tracking * it's current state - is it currently able to acquire complete groups of sessions, or are there errors occurring? - * + *

* This can thus be used to judge the state of the driver - is it currently healthy or not? */ private static class SessionGrabber implements Runnable { @@ -207,6 +208,7 @@ public void start() { } @Override + @SuppressWarnings("BusyWait") public void run() { try { while (run) { @@ -231,6 +233,7 @@ public void run() { } } + @SuppressWarnings("BusyWait") void assertSessionsAvailableWithin() throws InterruptedException { var deadline = System.currentTimeMillis() + 1000 * 120; while (System.currentTimeMillis() < deadline) { diff --git a/driver/src/test/java/org/neo4j/driver/integration/SessionResetIT.java b/driver/src/test/java/org/neo4j/driver/integration/SessionResetIT.java index 409b2ba2c0..1b3d336e92 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/SessionResetIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/SessionResetIT.java @@ -449,7 +449,8 @@ private void testQueryTermination(boolean autoCommit) { } @SuppressWarnings("resource") - private Future runQueryInDifferentThreadAndResetSession(String query, boolean autoCommit) { + private Future runQueryInDifferentThreadAndResetSession( + @SuppressWarnings("SameParameterValue") String query, boolean autoCommit) { var sessionRef = new AtomicReference(); Future queryResult = runAsync(() -> { diff --git a/driver/src/test/java/org/neo4j/driver/integration/UnmanagedTransactionIT.java b/driver/src/test/java/org/neo4j/driver/integration/UnmanagedTransactionIT.java index 8854a2ea92..a2c24552f7 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/UnmanagedTransactionIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/UnmanagedTransactionIT.java @@ -83,8 +83,8 @@ private ResultCursor sessionRun(NetworkSession session, Query query) { return await(session.runAsync(query, TransactionConfig.empty())); } - private ResultCursor txRun(UnmanagedTransaction tx, String query) { - return await(tx.runAsync(new Query(query))); + private void txRun(UnmanagedTransaction tx, String query) { + await(tx.runAsync(new Query(query))); } @Test diff --git a/driver/src/test/java/org/neo4j/driver/internal/async/NetworkSessionTest.java b/driver/src/test/java/org/neo4j/driver/internal/async/NetworkSessionTest.java index 6d51f69c21..1959eb59ec 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/async/NetworkSessionTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/async/NetworkSessionTest.java @@ -60,7 +60,6 @@ import org.neo4j.driver.AccessMode; import org.neo4j.driver.Query; import org.neo4j.driver.TransactionConfig; -import org.neo4j.driver.async.ResultCursor; import org.neo4j.driver.exceptions.ClientException; import org.neo4j.driver.internal.DatabaseBookmark; import org.neo4j.driver.internal.DatabaseNameUtil; @@ -472,8 +471,8 @@ void shouldMarkTransactionAsTerminatedAndThenResetConnectionOnReset() { verify(connection).reset(any()); } - private static ResultCursor run(NetworkSession session, String query) { - return await(session.runAsync(new Query(query), TransactionConfig.empty())); + private static void run(NetworkSession session, String query) { + await(session.runAsync(new Query(query), TransactionConfig.empty())); } private static UnmanagedTransaction beginTransaction(NetworkSession session) { diff --git a/driver/src/test/java/org/neo4j/driver/internal/async/outbound/OutboundMessageHandlerTest.java b/driver/src/test/java/org/neo4j/driver/internal/async/outbound/OutboundMessageHandlerTest.java index 338c8ac9a0..4d6a552ed0 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/async/outbound/OutboundMessageHandlerTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/async/outbound/OutboundMessageHandlerTest.java @@ -99,7 +99,8 @@ void shouldSupportByteArraysByDefault() { assertTrue(channel.finish()); } - private static MessageFormat mockMessageFormatWithWriter(final int... bytesToWrite) { + private static MessageFormat mockMessageFormatWithWriter( + @SuppressWarnings("SameParameterValue") final int... bytesToWrite) { var messageFormat = mock(MessageFormat.class); when(messageFormat.newWriter(any(PackOutput.class))).then(invocation -> { diff --git a/driver/src/test/java/org/neo4j/driver/internal/cluster/loadbalancing/RoutingTableAndConnectionPoolTest.java b/driver/src/test/java/org/neo4j/driver/internal/cluster/loadbalancing/RoutingTableAndConnectionPoolTest.java index 783a77b0e4..f5d8513550 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/cluster/loadbalancing/RoutingTableAndConnectionPoolTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/cluster/loadbalancing/RoutingTableAndConnectionPoolTest.java @@ -337,7 +337,7 @@ private CompletableFuture clusterComposition(Bol } private CompletableFuture expiredClusterComposition( - BoltServerAddress... addresses) { + @SuppressWarnings("SameParameterValue") BoltServerAddress... addresses) { return clusterComposition(-STALE_ROUTING_TABLE_PURGE_DELAY_MS - 1, addresses); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/handlers/RunResponseHandlerTest.java b/driver/src/test/java/org/neo4j/driver/internal/handlers/RunResponseHandlerTest.java index 710fda1530..c6289c6379 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/handlers/RunResponseHandlerTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/handlers/RunResponseHandlerTest.java @@ -208,7 +208,8 @@ private static RunResponseHandler newHandler(CompletableFuture runFuture) return newHandler(runFuture, BoltProtocolV3.METADATA_EXTRACTOR); } - private static RunResponseHandler newHandler(MetadataExtractor metadataExtractor) { + private static RunResponseHandler newHandler( + @SuppressWarnings("SameParameterValue") MetadataExtractor metadataExtractor) { return newHandler(new CompletableFuture<>(), metadataExtractor); } diff --git a/driver/src/test/java/org/neo4j/driver/stress/AbstractStressTestBase.java b/driver/src/test/java/org/neo4j/driver/stress/AbstractStressTestBase.java index 27b2a8f2e3..192e07c102 100644 --- a/driver/src/test/java/org/neo4j/driver/stress/AbstractStressTestBase.java +++ b/driver/src/test/java/org/neo4j/driver/stress/AbstractStressTestBase.java @@ -570,7 +570,8 @@ private Bookmark createNodesRx(int batchCount, InternalDriver driver) { } @SuppressWarnings("deprecation") - private Publisher createNodesInTxRx(RxTransaction tx, int batchIndex, int batchSize) { + private Publisher createNodesInTxRx( + RxTransaction tx, int batchIndex, @SuppressWarnings("SameParameterValue") int batchSize) { return Flux.concat(Flux.range(0, batchSize) .map(index -> batchIndex * batchSize + index) .map(nodeIndex -> { @@ -609,7 +610,8 @@ private void readNodesRx(InternalDriver driver, Bookmark bookmark) { System.out.println("Reading nodes with async API took: " + NANOSECONDS.toMillis(end - start) + "ms"); } - private static Void createNodesInTx(Transaction tx, int batchIndex, int batchSize) { + private static Void createNodesInTx( + Transaction tx, int batchIndex, @SuppressWarnings("SameParameterValue") int batchSize) { for (var index = 0; index < batchSize; index++) { var nodeIndex = batchIndex * batchSize + index; createNodeInTx(tx, nodeIndex); @@ -622,7 +624,8 @@ private static void createNodeInTx(Transaction tx, int nodeIndex) { tx.run(query).consume(); } - private static CompletionStage createNodesInTxAsync(AsyncTransaction tx, int batchIndex, int batchSize) { + private static CompletionStage createNodesInTxAsync( + AsyncTransaction tx, int batchIndex, @SuppressWarnings("SameParameterValue") int batchSize) { @SuppressWarnings("unchecked") CompletableFuture[] queryFutures = IntStream.range(0, batchSize) .map(index -> batchIndex * batchSize + index) diff --git a/driver/src/test/java/org/neo4j/driver/stress/SessionPoolingStressIT.java b/driver/src/test/java/org/neo4j/driver/stress/SessionPoolingStressIT.java index 891d67fb58..bb91e2dcb2 100644 --- a/driver/src/test/java/org/neo4j/driver/stress/SessionPoolingStressIT.java +++ b/driver/src/test/java/org/neo4j/driver/stress/SessionPoolingStressIT.java @@ -121,10 +121,7 @@ public void run() { } } catch (Throwable failure) { if (!failureReference.compareAndSet(null, failure)) { - var firstFailure = failureReference.get(); - synchronized (firstFailure) { - firstFailure.addSuppressed(failure); - } + failureReference.get().addSuppressed(failure); } } } diff --git a/driver/src/test/java/org/neo4j/driver/testutil/StdIOCapture.java b/driver/src/test/java/org/neo4j/driver/testutil/StdIOCapture.java index 5aaf9e25f3..9e1ec8df7f 100644 --- a/driver/src/test/java/org/neo4j/driver/testutil/StdIOCapture.java +++ b/driver/src/test/java/org/neo4j/driver/testutil/StdIOCapture.java @@ -22,7 +22,6 @@ import java.io.ByteArrayOutputStream; import java.io.PrintStream; -import java.io.UnsupportedEncodingException; import java.nio.charset.StandardCharsets; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; @@ -56,7 +55,7 @@ public List stdout() { } @Override - public void close() throws UnsupportedEncodingException { + public void close() { System.setOut(originalStdOut); System.setErr(originalStdErr); stdout.addAll(asList(capturedStdOut.toString(StandardCharsets.UTF_8).split(System.lineSeparator()))); diff --git a/examples/src/test/java/org/neo4j/docs/driver/ExamplesIT.java b/examples/src/test/java/org/neo4j/docs/driver/ExamplesIT.java index c00b7ade8d..d3e129ce9f 100644 --- a/examples/src/test/java/org/neo4j/docs/driver/ExamplesIT.java +++ b/examples/src/test/java/org/neo4j/docs/driver/ExamplesIT.java @@ -231,7 +231,7 @@ void testShouldRunDriverLifecycleExample() { } @Test - void testShouldRunHelloWorld() throws Exception { + void testShouldRunHelloWorld() { // Given try (var greeter = new HelloWorldExample(uri, USER, neo4j.adminPassword())) { // When @@ -328,7 +328,7 @@ void testShouldConfigureTransactionMetadataExample() { } @Test - void testShouldRunAsyncTransactionFunctionExample() throws Exception { + void testShouldRunAsyncTransactionFunctionExample() { try (var example = new AsyncTransactionFunctionExample(uri, USER, neo4j.adminPassword())) { // create some 'Product' nodes @@ -395,7 +395,7 @@ void testShouldRunRxAutocommitTransactionExample() { @Test @EnabledOnNeo4jWith(BOLT_V4) - void testShouldRunRxTransactionFunctionExampleReactor() throws Exception { + void testShouldRunRxTransactionFunctionExampleReactor() { try (var example = new RxTransactionFunctionExample(uri, USER, neo4j.adminPassword())) { // create some 'Product' nodes diff --git a/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/CheckDriverIsEncrypted.java b/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/CheckDriverIsEncrypted.java index 8725fc7be7..da8ab2a3f7 100644 --- a/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/CheckDriverIsEncrypted.java +++ b/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/CheckDriverIsEncrypted.java @@ -57,6 +57,7 @@ public Mono processReactiveStreams(TestkitState testkitState) { return processReactive(testkitState); } + @SuppressWarnings("resource") private DriverIsEncrypted createResponse(TestkitState testkitState) { var driverHolder = testkitState.getDriverHolder(data.getDriverId()); return DriverIsEncrypted.builder() diff --git a/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/CheckMultiDBSupport.java b/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/CheckMultiDBSupport.java index 131adcbbbb..c41cdc3f69 100644 --- a/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/CheckMultiDBSupport.java +++ b/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/CheckMultiDBSupport.java @@ -34,11 +34,13 @@ public class CheckMultiDBSupport implements TestkitRequest { @Override public TestkitResponse process(TestkitState testkitState) { var driverId = data.getDriverId(); + @SuppressWarnings("resource") var available = testkitState.getDriverHolder(driverId).driver().supportsMultiDb(); return createResponse(available); } @Override + @SuppressWarnings("resource") public CompletionStage processAsync(TestkitState testkitState) { return testkitState .getDriverHolder(data.getDriverId()) diff --git a/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/CheckSessionAuthSupport.java b/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/CheckSessionAuthSupport.java index 5468238486..8b9805808f 100644 --- a/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/CheckSessionAuthSupport.java +++ b/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/CheckSessionAuthSupport.java @@ -31,6 +31,7 @@ public class CheckSessionAuthSupport extends AbstractBasicTestkitRequest { @Override protected TestkitResponse processAndCreateResponse(TestkitState testkitState) { + @SuppressWarnings("resource") var supports = testkitState.getDriverHolder(data.getDriverId()).driver().supportsSessionAuth(); return SessionAuthSupport.builder() .data(SessionAuthSupport.SessionAuthSupportBody.builder() diff --git a/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/DriverClose.java b/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/DriverClose.java index 4a3c39d6d9..1e2ccc4391 100644 --- a/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/DriverClose.java +++ b/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/DriverClose.java @@ -38,6 +38,7 @@ public TestkitResponse process(TestkitState testkitState) { } @Override + @SuppressWarnings("resource") public CompletionStage processAsync(TestkitState testkitState) { return testkitState .getDriverHolder(data.getDriverId()) diff --git a/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/ExecuteQuery.java b/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/ExecuteQuery.java index e0d3759536..b9477197a5 100644 --- a/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/ExecuteQuery.java +++ b/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/ExecuteQuery.java @@ -40,6 +40,7 @@ public class ExecuteQuery implements TestkitRequest { @Override public TestkitResponse process(TestkitState testkitState) { + @SuppressWarnings("resource") var driver = testkitState.getDriverHolder(data.getDriverId()).driver(); var configBuilder = QueryConfig.builder(); var routing = data.getConfig().getRouting(); diff --git a/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/GetConnectionPoolMetrics.java b/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/GetConnectionPoolMetrics.java index 3866a9e4e4..8dfbdd4182 100644 --- a/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/GetConnectionPoolMetrics.java +++ b/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/GetConnectionPoolMetrics.java @@ -62,6 +62,7 @@ public Mono processReactiveStreams(TestkitState testkitState) { private ConnectionPoolMetrics getConnectionPoolMetrics(TestkitState testkitState) { var driverHolder = testkitState.getDriverHolder(data.getDriverId()); + @SuppressWarnings("resource") var metrics = driverHolder.driver().metrics(); var poolMetrics = metrics.connectionPoolMetrics().stream() .filter(pm -> { diff --git a/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/NewSession.java b/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/NewSession.java index a6434fe4f7..977e87a0ef 100644 --- a/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/NewSession.java +++ b/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/NewSession.java @@ -124,6 +124,7 @@ protected TestkitResponse createSessionStateAndResponse( .build(); } + @SuppressWarnings("resource") private SessionHolder createSessionState( DriverHolder driverHolder, SessionConfig sessionConfig, AuthToken userSwitchAuthToken) { return new SessionHolder( @@ -132,6 +133,7 @@ private SessionHolder createSessionState( sessionConfig); } + @SuppressWarnings("resource") private AsyncSessionHolder createAsyncSessionState( DriverHolder driverHolder, SessionConfig sessionConfig, AuthToken userSwitchAuthToken) { return new AsyncSessionHolder( @@ -140,7 +142,7 @@ private AsyncSessionHolder createAsyncSessionState( sessionConfig); } - @SuppressWarnings("deprecation") + @SuppressWarnings({"deprecation", "resource"}) private RxSessionHolder createRxSessionState( DriverHolder driverHolder, SessionConfig sessionConfig, AuthToken userSwitchAuthToken) { return new RxSessionHolder( @@ -149,6 +151,7 @@ private RxSessionHolder createRxSessionState( sessionConfig); } + @SuppressWarnings("resource") private ReactiveSessionHolder createReactiveSessionState( DriverHolder driverHolder, SessionConfig sessionConfig, AuthToken userSwitchAuthToken) { return new ReactiveSessionHolder( @@ -157,6 +160,7 @@ private ReactiveSessionHolder createReactiveSessionState( sessionConfig); } + @SuppressWarnings("resource") private ReactiveSessionStreamsHolder createReactiveSessionStreamsState( DriverHolder driverHolder, SessionConfig sessionConfig, AuthToken userSwitchAuthToken) { return new ReactiveSessionStreamsHolder( diff --git a/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/VerifyAuthentication.java b/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/VerifyAuthentication.java index 1e7a2c8e2d..94b97831b5 100644 --- a/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/VerifyAuthentication.java +++ b/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/VerifyAuthentication.java @@ -35,6 +35,7 @@ public class VerifyAuthentication implements TestkitRequest { @Override public TestkitResponse process(TestkitState testkitState) { var driverHolder = testkitState.getDriverHolder(data.getDriverId()); + @SuppressWarnings("resource") var driver = driverHolder.driver(); var authToken = AuthTokenUtil.parseAuthToken(data.getAuthorizationToken()); var authenticated = driver.verifyAuthentication(authToken); diff --git a/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/VerifyConnectivity.java b/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/VerifyConnectivity.java index dd1caffd26..d00cf012b1 100644 --- a/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/VerifyConnectivity.java +++ b/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/VerifyConnectivity.java @@ -32,6 +32,7 @@ public class VerifyConnectivity implements TestkitRequest { private VerifyConnectivityBody data; @Override + @SuppressWarnings("resource") public TestkitResponse process(TestkitState testkitState) { var id = data.getDriverId(); testkitState.getDriverHolder(id).driver().verifyConnectivity(); @@ -39,6 +40,7 @@ public TestkitResponse process(TestkitState testkitState) { } @Override + @SuppressWarnings("resource") public CompletionStage processAsync(TestkitState testkitState) { var id = data.getDriverId(); return testkitState