diff --git a/driver/src/main/java/org/neo4j/driver/Config.java b/driver/src/main/java/org/neo4j/driver/Config.java index 063449f38d..a721fa57bc 100644 --- a/driver/src/main/java/org/neo4j/driver/Config.java +++ b/driver/src/main/java/org/neo4j/driver/Config.java @@ -26,7 +26,6 @@ import java.io.Serial; import java.io.Serializable; import java.net.InetAddress; -import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -808,7 +807,7 @@ private TrustStrategy(Strategy strategy) { private TrustStrategy(Strategy strategy, List certFiles) { Objects.requireNonNull(certFiles, "certFiles can't be null"); this.strategy = strategy; - this.certFiles = Collections.unmodifiableList(new ArrayList<>(certFiles)); + this.certFiles = List.copyOf(certFiles); } /** diff --git a/driver/src/main/java/org/neo4j/driver/internal/DriverFactory.java b/driver/src/main/java/org/neo4j/driver/internal/DriverFactory.java index 3cddc161dd..05a0d107b7 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/DriverFactory.java +++ b/driver/src/main/java/org/neo4j/driver/internal/DriverFactory.java @@ -161,15 +161,11 @@ protected static MetricsProvider getOrCreateMetricsProvider(Config config, Clock if (metricsAdapter == null) { metricsAdapter = config.isMetricsEnabled() ? MetricsAdapter.DEFAULT : MetricsAdapter.DEV_NULL; } - switch (metricsAdapter) { - case DEV_NULL: - return DevNullMetricsProvider.INSTANCE; - case DEFAULT: - return new InternalMetricsProvider(clock, config.logging()); - case MICROMETER: - return MicrometerMetricsProvider.forGlobalRegistry(); - } - throw new IllegalStateException("Unknown or unsupported MetricsAdapter: " + metricsAdapter); + return switch (metricsAdapter) { + case DEV_NULL -> DevNullMetricsProvider.INSTANCE; + case DEFAULT -> new InternalMetricsProvider(clock, config.logging()); + case MICROMETER -> MicrometerMetricsProvider.forGlobalRegistry(); + }; } protected ChannelConnector createConnector( diff --git a/driver/src/main/java/org/neo4j/driver/internal/InternalIsoDuration.java b/driver/src/main/java/org/neo4j/driver/internal/InternalIsoDuration.java index bdb4413d78..4327951311 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/InternalIsoDuration.java +++ b/driver/src/main/java/org/neo4j/driver/internal/InternalIsoDuration.java @@ -22,8 +22,6 @@ import static java.time.temporal.ChronoUnit.MONTHS; import static java.time.temporal.ChronoUnit.NANOS; import static java.time.temporal.ChronoUnit.SECONDS; -import static java.util.Arrays.asList; -import static java.util.Collections.unmodifiableList; import java.time.Duration; import java.time.Period; @@ -36,7 +34,7 @@ public class InternalIsoDuration implements IsoDuration { private static final long NANOS_PER_SECOND = 1_000_000_000; - private static final List SUPPORTED_UNITS = unmodifiableList(asList(MONTHS, DAYS, SECONDS, NANOS)); + private static final List SUPPORTED_UNITS = List.of(MONTHS, DAYS, SECONDS, NANOS); private final long months; private final long days; diff --git a/driver/src/main/java/org/neo4j/driver/internal/InternalPath.java b/driver/src/main/java/org/neo4j/driver/internal/InternalPath.java index 5c03bd5b54..c1b3580612 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/InternalPath.java +++ b/driver/src/main/java/org/neo4j/driver/internal/InternalPath.java @@ -34,31 +34,7 @@ * {@link Path} implementation that directly contains all nodes and relationships. */ public class InternalPath implements Path, AsValue { - public static class SelfContainedSegment implements Segment { - private final Node start; - private final Relationship relationship; - private final Node end; - - public SelfContainedSegment(Node start, Relationship relationship, Node end) { - this.start = start; - this.relationship = relationship; - this.end = end; - } - - @Override - public Node start() { - return start; - } - - @Override - public Relationship relationship() { - return relationship; - } - - @Override - public Node end() { - return end; - } + public record SelfContainedSegment(Node start, Relationship relationship, Node end) implements Segment { @Override public boolean equals(Object other) { @@ -73,14 +49,6 @@ public boolean equals(Object other) { return start.equals(that.start) && end.equals(that.end) && relationship.equals(that.relationship); } - @Override - public int hashCode() { - var result = start.hashCode(); - result = 31 * result + relationship.hashCode(); - result = 31 * result + end.hashCode(); - return result; - } - @Override @SuppressWarnings("deprecation") public String toString() { diff --git a/driver/src/main/java/org/neo4j/driver/internal/InternalPoint2D.java b/driver/src/main/java/org/neo4j/driver/internal/InternalPoint2D.java index ec3d64d02a..ff97e90886 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/InternalPoint2D.java +++ b/driver/src/main/java/org/neo4j/driver/internal/InternalPoint2D.java @@ -18,34 +18,9 @@ */ package org.neo4j.driver.internal; -import java.util.Objects; import org.neo4j.driver.types.Point; -public class InternalPoint2D implements Point { - private final int srid; - private final double x; - private final double y; - - public InternalPoint2D(int srid, double x, double y) { - this.srid = srid; - this.x = x; - this.y = y; - } - - @Override - public int srid() { - return srid; - } - - @Override - public double x() { - return x; - } - - @Override - public double y() { - return y; - } +public record InternalPoint2D(int srid, double x, double y) implements Point { @Override public double z() { @@ -64,11 +39,6 @@ public boolean equals(Object o) { return srid == that.srid && Double.compare(that.x, x) == 0 && Double.compare(that.y, y) == 0; } - @Override - public int hashCode() { - return Objects.hash(srid, x, y); - } - @Override public String toString() { return "Point{" + "srid=" + srid + ", x=" + x + ", y=" + y + '}'; diff --git a/driver/src/main/java/org/neo4j/driver/internal/InternalPoint3D.java b/driver/src/main/java/org/neo4j/driver/internal/InternalPoint3D.java index 367589716e..ec38cb5d69 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/InternalPoint3D.java +++ b/driver/src/main/java/org/neo4j/driver/internal/InternalPoint3D.java @@ -18,41 +18,9 @@ */ package org.neo4j.driver.internal; -import java.util.Objects; import org.neo4j.driver.types.Point; -public class InternalPoint3D implements Point { - private final int srid; - private final double x; - private final double y; - private final double z; - - public InternalPoint3D(int srid, double x, double y, double z) { - this.srid = srid; - this.x = x; - this.y = y; - this.z = z; - } - - @Override - public int srid() { - return srid; - } - - @Override - public double x() { - return x; - } - - @Override - public double y() { - return y; - } - - @Override - public double z() { - return z; - } +public record InternalPoint3D(int srid, double x, double y, double z) implements Point { @Override public boolean equals(Object o) { @@ -69,11 +37,6 @@ public boolean equals(Object o) { && Double.compare(that.z, z) == 0; } - @Override - public int hashCode() { - return Objects.hash(srid, x, y, z); - } - @Override public String toString() { return "Point{" + "srid=" + srid + ", x=" + x + ", y=" + y + ", z=" + z + '}'; diff --git a/driver/src/main/java/org/neo4j/driver/internal/InternalRecord.java b/driver/src/main/java/org/neo4j/driver/internal/InternalRecord.java index d66b9c2778..4e296928c5 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/InternalRecord.java +++ b/driver/src/main/java/org/neo4j/driver/internal/InternalRecord.java @@ -127,8 +127,7 @@ public String toString() { public boolean equals(Object other) { if (this == other) { return true; - } else if (other instanceof Record) { - var otherRecord = (Record) other; + } else if (other instanceof Record otherRecord) { var size = size(); if (!(size == otherRecord.size())) { return false; diff --git a/driver/src/main/java/org/neo4j/driver/internal/Scheme.java b/driver/src/main/java/org/neo4j/driver/internal/Scheme.java index d447a35d70..2db390a272 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/Scheme.java +++ b/driver/src/main/java/org/neo4j/driver/internal/Scheme.java @@ -31,15 +31,15 @@ public static void validateScheme(String scheme) { throw new IllegalArgumentException("Scheme must not be null"); } switch (scheme) { - case BOLT_URI_SCHEME: - case BOLT_LOW_TRUST_URI_SCHEME: - case BOLT_HIGH_TRUST_URI_SCHEME: - case NEO4J_URI_SCHEME: - case NEO4J_LOW_TRUST_URI_SCHEME: - case NEO4J_HIGH_TRUST_URI_SCHEME: + case BOLT_URI_SCHEME, + BOLT_LOW_TRUST_URI_SCHEME, + BOLT_HIGH_TRUST_URI_SCHEME, + NEO4J_URI_SCHEME, + NEO4J_LOW_TRUST_URI_SCHEME, + NEO4J_HIGH_TRUST_URI_SCHEME -> { return; - default: - throw new IllegalArgumentException("Invalid address format " + scheme); + } + default -> throw new IllegalArgumentException("Invalid address format " + scheme); } } diff --git a/driver/src/main/java/org/neo4j/driver/internal/SecuritySettings.java b/driver/src/main/java/org/neo4j/driver/internal/SecuritySettings.java index 2d83716413..c22c436a28 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/SecuritySettings.java +++ b/driver/src/main/java/org/neo4j/driver/internal/SecuritySettings.java @@ -21,28 +21,18 @@ import java.io.Serializable; import org.neo4j.driver.Config; -public class SecuritySettings implements Serializable { +public record SecuritySettings(boolean encrypted, Config.TrustStrategy trustStrategy) implements Serializable { private static final long serialVersionUID = 4494615367164106576L; private static final boolean DEFAULT_ENCRYPTED = false; private static final Config.TrustStrategy DEFAULT_TRUST_STRATEGY = Config.TrustStrategy.trustSystemCertificates(); public static final SecuritySettings DEFAULT = new SecuritySettings(DEFAULT_ENCRYPTED, DEFAULT_TRUST_STRATEGY); - private final boolean encrypted; - private final Config.TrustStrategy trustStrategy; public SecuritySettings(boolean encrypted, Config.TrustStrategy trustStrategy) { this.encrypted = encrypted; this.trustStrategy = trustStrategy == null ? DEFAULT_TRUST_STRATEGY : trustStrategy; } - public boolean encrypted() { - return encrypted; - } - - public Config.TrustStrategy trustStrategy() { - return trustStrategy; - } - public static class SecuritySettingsBuilder { private boolean isCustomized = false; private boolean encrypted; diff --git a/driver/src/main/java/org/neo4j/driver/internal/SessionFactoryImpl.java b/driver/src/main/java/org/neo4j/driver/internal/SessionFactoryImpl.java index 3f33bd3f29..f6f632bebb 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/SessionFactoryImpl.java +++ b/driver/src/main/java/org/neo4j/driver/internal/SessionFactoryImpl.java @@ -43,7 +43,6 @@ public class SessionFactoryImpl implements SessionFactory { private final Logging logging; private final boolean leakedSessionsLoggingEnabled; private final long defaultFetchSize; - private final NotificationConfig driverNotificationConfig; SessionFactoryImpl(ConnectionProvider connectionProvider, RetryLogic retryLogic, Config config) { this.connectionProvider = connectionProvider; @@ -51,7 +50,6 @@ public class SessionFactoryImpl implements SessionFactory { this.retryLogic = retryLogic; this.logging = config.logging(); this.defaultFetchSize = config.fetchSize(); - this.driverNotificationConfig = config.notificationConfig(); } @Override diff --git a/driver/src/main/java/org/neo4j/driver/internal/async/connection/NettyDomainNameResolverGroup.java b/driver/src/main/java/org/neo4j/driver/internal/async/connection/NettyDomainNameResolverGroup.java index 2afdd25a21..fda568e229 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/async/connection/NettyDomainNameResolverGroup.java +++ b/driver/src/main/java/org/neo4j/driver/internal/async/connection/NettyDomainNameResolverGroup.java @@ -32,7 +32,7 @@ public NettyDomainNameResolverGroup(DomainNameResolver domainNameResolver) { } @Override - protected AddressResolver newResolver(EventExecutor executor) throws Exception { + protected AddressResolver newResolver(EventExecutor executor) { return new NettyDomainNameResolver(executor, domainNameResolver).asAddressResolver(); } } diff --git a/driver/src/main/java/org/neo4j/driver/internal/async/pool/PoolSettings.java b/driver/src/main/java/org/neo4j/driver/internal/async/pool/PoolSettings.java index 6ac5b1b5c7..849cdd965a 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/async/pool/PoolSettings.java +++ b/driver/src/main/java/org/neo4j/driver/internal/async/pool/PoolSettings.java @@ -20,7 +20,11 @@ import java.util.concurrent.TimeUnit; -public class PoolSettings { +public record PoolSettings( + int maxConnectionPoolSize, + long connectionAcquisitionTimeout, + long maxConnectionLifetime, + long idleTimeBeforeConnectionTest) { public static final int NOT_CONFIGURED = -1; public static final int DEFAULT_MAX_CONNECTION_POOL_SIZE = 100; @@ -28,43 +32,11 @@ public class PoolSettings { public static final long DEFAULT_MAX_CONNECTION_LIFETIME = TimeUnit.HOURS.toMillis(1); public static final long DEFAULT_CONNECTION_ACQUISITION_TIMEOUT = TimeUnit.SECONDS.toMillis(60); - private final int maxConnectionPoolSize; - private final long connectionAcquisitionTimeout; - private final long maxConnectionLifetime; - private final long idleTimeBeforeConnectionTest; - - public PoolSettings( - int maxConnectionPoolSize, - long connectionAcquisitionTimeout, - long maxConnectionLifetime, - long idleTimeBeforeConnectionTest) { - this.maxConnectionPoolSize = maxConnectionPoolSize; - this.connectionAcquisitionTimeout = connectionAcquisitionTimeout; - this.maxConnectionLifetime = maxConnectionLifetime; - this.idleTimeBeforeConnectionTest = idleTimeBeforeConnectionTest; - } - - public long idleTimeBeforeConnectionTest() { - return idleTimeBeforeConnectionTest; - } - public boolean idleTimeBeforeConnectionTestEnabled() { return idleTimeBeforeConnectionTest >= 0; } - public long maxConnectionLifetime() { - return maxConnectionLifetime; - } - public boolean maxConnectionLifetimeEnabled() { return maxConnectionLifetime > 0; } - - public int maxConnectionPoolSize() { - return maxConnectionPoolSize; - } - - public long connectionAcquisitionTimeout() { - return connectionAcquisitionTimeout; - } } diff --git a/driver/src/main/java/org/neo4j/driver/internal/cluster/ClusterComposition.java b/driver/src/main/java/org/neo4j/driver/internal/cluster/ClusterComposition.java index ae3658084d..c9f16fd561 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/cluster/ClusterComposition.java +++ b/driver/src/main/java/org/neo4j/driver/internal/cluster/ClusterComposition.java @@ -144,15 +144,11 @@ private static long expirationTimestamp(long now, Record record) { } private Set servers(String role) { - switch (role) { - case "READ": - return readers; - case "WRITE": - return writers; - case "ROUTE": - return routers; - default: - throw new IllegalArgumentException("invalid server role: " + role); - } + return switch (role) { + case "READ" -> readers; + case "WRITE" -> writers; + case "ROUTE" -> routers; + default -> throw new IllegalArgumentException("invalid server role: " + role); + }; } } diff --git a/driver/src/main/java/org/neo4j/driver/internal/cluster/RoutingContext.java b/driver/src/main/java/org/neo4j/driver/internal/cluster/RoutingContext.java index 98fdf3fa19..63bd411824 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/cluster/RoutingContext.java +++ b/driver/src/main/java/org/neo4j/driver/internal/cluster/RoutingContext.java @@ -86,7 +86,7 @@ private static Map parseParameters(URI uri) { } var previousValue = - parameters.put(trimAndVerifyKey(keyValue[0], "key", uri), trimAndVerify(keyValue[1], "value", uri)); + parameters.put(trimAndVerifyKey(keyValue[0], uri), trimAndVerify(keyValue[1], "value", uri)); if (previousValue != null) { throw new IllegalArgumentException( "Duplicated query parameters with key '" + previousValue + "' in URI '" + uri + "'"); @@ -95,8 +95,8 @@ private static Map parseParameters(URI uri) { return parameters; } - private static String trimAndVerifyKey(String s, String key, URI uri) { - var trimmed = trimAndVerify(s, key, uri); + private static String trimAndVerifyKey(String s, URI uri) { + var trimmed = trimAndVerify(s, "key", uri); if (trimmed.equals(ROUTING_ADDRESS_KEY)) { throw new IllegalArgumentException("The key 'address' is reserved for routing context."); diff --git a/driver/src/main/java/org/neo4j/driver/internal/cluster/RoutingTableRegistryImpl.java b/driver/src/main/java/org/neo4j/driver/internal/cluster/RoutingTableRegistryImpl.java index aa3f311206..71f3a74ec8 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/cluster/RoutingTableRegistryImpl.java +++ b/driver/src/main/java/org/neo4j/driver/internal/cluster/RoutingTableRegistryImpl.java @@ -86,9 +86,9 @@ public RoutingTableRegistryImpl( @Override public CompletionStage ensureRoutingTable(ConnectionContext context) { return ensureDatabaseNameIsCompleted(context).thenCompose(ctxAndHandler -> { - var completedContext = ctxAndHandler.getContext(); - var handler = ctxAndHandler.getHandler() != null - ? ctxAndHandler.getHandler() + var completedContext = ctxAndHandler.context(); + var handler = ctxAndHandler.handler() != null + ? ctxAndHandler.handler() : getOrCreate(Futures.joinNowOrElseThrow( completedContext.databaseNameFuture(), PENDING_DATABASE_NAME_EXCEPTION_SUPPLIER)); return handler.ensureRoutingTable(completedContext).thenApply(ignored -> handler); @@ -235,12 +235,7 @@ RoutingTableHandler newInstance(DatabaseName databaseName, RoutingTableRegistry } } - private static class Principal { - private final String id; - - private Principal(String id) { - this.id = id; - } + private record Principal(String id) { @Override public boolean equals(Object o) { @@ -253,28 +248,7 @@ public boolean equals(Object o) { var principal = (Principal) o; return Objects.equals(id, principal.id); } - - @Override - public int hashCode() { - return Objects.hash(id); - } } - private static class ConnectionContextAndHandler { - private final ConnectionContext context; - private final RoutingTableHandler handler; - - private ConnectionContextAndHandler(ConnectionContext context, RoutingTableHandler handler) { - this.context = context; - this.handler = handler; - } - - public ConnectionContext getContext() { - return context; - } - - public RoutingTableHandler getHandler() { - return handler; - } - } + private record ConnectionContextAndHandler(ConnectionContext context, RoutingTableHandler handler) {} } diff --git a/driver/src/main/java/org/neo4j/driver/internal/cluster/loadbalancing/LoadBalancer.java b/driver/src/main/java/org/neo4j/driver/internal/cluster/loadbalancing/LoadBalancer.java index a030d396f8..a3d4590f4b 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/cluster/loadbalancing/LoadBalancer.java +++ b/driver/src/main/java/org/neo4j/driver/internal/cluster/loadbalancing/LoadBalancer.java @@ -241,25 +241,19 @@ private void acquire( } private static List getAddressesByMode(AccessMode mode, RoutingTable routingTable) { - switch (mode) { - case READ: - return routingTable.readers(); - case WRITE: - return routingTable.writers(); - default: - throw unknownMode(mode); - } + return switch (mode) { + case READ -> routingTable.readers(); + case WRITE -> routingTable.writers(); + default -> throw unknownMode(mode); + }; } private BoltServerAddress selectAddress(AccessMode mode, List addresses) { - switch (mode) { - case READ: - return loadBalancingStrategy.selectReader(addresses); - case WRITE: - return loadBalancingStrategy.selectWriter(addresses); - default: - throw unknownMode(mode); - } + return switch (mode) { + case READ -> loadBalancingStrategy.selectReader(addresses); + case WRITE -> loadBalancingStrategy.selectWriter(addresses); + default -> throw unknownMode(mode); + }; } private static RoutingTableRegistry createRoutingTables( diff --git a/driver/src/main/java/org/neo4j/driver/internal/handlers/RoutingResponseHandler.java b/driver/src/main/java/org/neo4j/driver/internal/handlers/RoutingResponseHandler.java index 48576ce6bd..5d59135902 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/handlers/RoutingResponseHandler.java +++ b/driver/src/main/java/org/neo4j/driver/internal/handlers/RoutingResponseHandler.java @@ -108,13 +108,14 @@ private Throwable handledClientException(ClientException e) { // The server is unaware of the session mode, so we have to implement this logic in the driver. // In the future, we might be able to move this logic to the server. switch (accessMode) { - case READ: + case READ -> { return new ClientException("Write queries cannot be performed in READ access mode."); - case WRITE: + } + case WRITE -> { errorHandler.onWriteFailure(address); return new SessionExpiredException(format("Server at %s no longer accepts writes", address)); - default: - throw new IllegalArgumentException(accessMode + " not supported."); + } + default -> throw new IllegalArgumentException(accessMode + " not supported."); } } return e; diff --git a/driver/src/main/java/org/neo4j/driver/internal/logging/ConsoleLogging.java b/driver/src/main/java/org/neo4j/driver/internal/logging/ConsoleLogging.java index 844cd7ab86..0dc358b813 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/logging/ConsoleLogging.java +++ b/driver/src/main/java/org/neo4j/driver/internal/logging/ConsoleLogging.java @@ -53,7 +53,6 @@ public Logger getLog(String name) { } public static class ConsoleLogger extends JULogger { - private final ConsoleHandler handler; public ConsoleLogger(String name, Level level) { super(name, level); @@ -66,7 +65,7 @@ public ConsoleLogger(String name, Level level) { logger.removeHandler(handlerToRemove); } - handler = new ConsoleHandler(); + var handler = new ConsoleHandler(); handler.setFormatter(new ConsoleFormatter()); handler.setLevel(level); logger.addHandler(handler); diff --git a/driver/src/main/java/org/neo4j/driver/internal/messaging/BoltProtocolVersion.java b/driver/src/main/java/org/neo4j/driver/internal/messaging/BoltProtocolVersion.java index 754ff0f39a..35130bb97b 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/messaging/BoltProtocolVersion.java +++ b/driver/src/main/java/org/neo4j/driver/internal/messaging/BoltProtocolVersion.java @@ -77,10 +77,9 @@ public int hashCode() { public boolean equals(Object o) { if (o == this) { return true; - } else if (!(o instanceof BoltProtocolVersion)) { + } else if (!(o instanceof BoltProtocolVersion other)) { return false; } else { - var other = (BoltProtocolVersion) o; return this.getMajorVersion() == other.getMajorVersion() && this.getMinorVersion() == other.getMinorVersion(); } diff --git a/driver/src/main/java/org/neo4j/driver/internal/messaging/ResponseMessageHandler.java b/driver/src/main/java/org/neo4j/driver/internal/messaging/ResponseMessageHandler.java index ac6796b6b9..0de3125d71 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/messaging/ResponseMessageHandler.java +++ b/driver/src/main/java/org/neo4j/driver/internal/messaging/ResponseMessageHandler.java @@ -18,16 +18,15 @@ */ package org.neo4j.driver.internal.messaging; -import java.io.IOException; import java.util.Map; import org.neo4j.driver.Value; public interface ResponseMessageHandler { - void handleSuccessMessage(Map meta) throws IOException; + void handleSuccessMessage(Map meta); - void handleRecordMessage(Value[] fields) throws IOException; + void handleRecordMessage(Value[] fields); - void handleFailureMessage(String code, String message) throws IOException; + void handleFailureMessage(String code, String message); - void handleIgnoredMessage() throws IOException; + void handleIgnoredMessage(); } diff --git a/driver/src/main/java/org/neo4j/driver/internal/messaging/common/CommonMessageReader.java b/driver/src/main/java/org/neo4j/driver/internal/messaging/common/CommonMessageReader.java index 39cf510253..762ec49454 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/messaging/common/CommonMessageReader.java +++ b/driver/src/main/java/org/neo4j/driver/internal/messaging/common/CommonMessageReader.java @@ -44,20 +44,11 @@ public void read(ResponseMessageHandler handler) throws IOException { unpacker.unpackStructHeader(); var type = unpacker.unpackStructSignature(); switch (type) { - case SuccessMessage.SIGNATURE: - unpackSuccessMessage(handler); - break; - case FailureMessage.SIGNATURE: - unpackFailureMessage(handler); - break; - case IgnoredMessage.SIGNATURE: - unpackIgnoredMessage(handler); - break; - case RecordMessage.SIGNATURE: - unpackRecordMessage(handler); - break; - default: - throw new IOException("Unknown message type: " + type); + case SuccessMessage.SIGNATURE -> unpackSuccessMessage(handler); + case FailureMessage.SIGNATURE -> unpackFailureMessage(handler); + case IgnoredMessage.SIGNATURE -> unpackIgnoredMessage(handler); + case RecordMessage.SIGNATURE -> unpackRecordMessage(handler); + default -> throw new IOException("Unknown message type: " + type); } } @@ -73,7 +64,7 @@ private void unpackFailureMessage(ResponseMessageHandler output) throws IOExcept output.handleFailureMessage(code, message); } - private void unpackIgnoredMessage(ResponseMessageHandler output) throws IOException { + private void unpackIgnoredMessage(ResponseMessageHandler output) { output.handleIgnoredMessage(); } diff --git a/driver/src/main/java/org/neo4j/driver/internal/messaging/common/CommonValuePacker.java b/driver/src/main/java/org/neo4j/driver/internal/messaging/common/CommonValuePacker.java index e253434dff..93313c2334 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/messaging/common/CommonValuePacker.java +++ b/driver/src/main/java/org/neo4j/driver/internal/messaging/common/CommonValuePacker.java @@ -109,72 +109,39 @@ public final void pack(Map map) throws IOException { protected void packInternalValue(InternalValue value) throws IOException { switch (value.typeConstructor()) { - case DATE: - packDate(value.asLocalDate()); - break; - case TIME: - packTime(value.asOffsetTime()); - break; - case LOCAL_TIME: - packLocalTime(value.asLocalTime()); - break; - case LOCAL_DATE_TIME: - packLocalDateTime(value.asLocalDateTime()); - break; - case DATE_TIME: + case DATE -> packDate(value.asLocalDate()); + case TIME -> packTime(value.asOffsetTime()); + case LOCAL_TIME -> packLocalTime(value.asLocalTime()); + case LOCAL_DATE_TIME -> packLocalDateTime(value.asLocalDateTime()); + case DATE_TIME -> { if (dateTimeUtcEnabled) { packZonedDateTimeUsingUtcBaseline(value.asZonedDateTime()); } else { packZonedDateTime(value.asZonedDateTime()); } - break; - case DURATION: - packDuration(value.asIsoDuration()); - break; - case POINT: - packPoint(value.asPoint()); - break; - case NULL: - packer.packNull(); - break; - - case BYTES: - packer.pack(value.asByteArray()); - break; - - case STRING: - packer.pack(value.asString()); - break; - - case BOOLEAN: - packer.pack(value.asBoolean()); - break; - - case INTEGER: - packer.pack(value.asLong()); - break; - - case FLOAT: - packer.pack(value.asDouble()); - break; - - case MAP: + } + case DURATION -> packDuration(value.asIsoDuration()); + case POINT -> packPoint(value.asPoint()); + case NULL -> packer.packNull(); + case BYTES -> packer.pack(value.asByteArray()); + case STRING -> packer.pack(value.asString()); + case BOOLEAN -> packer.pack(value.asBoolean()); + case INTEGER -> packer.pack(value.asLong()); + case FLOAT -> packer.pack(value.asDouble()); + case MAP -> { packer.packMapHeader(value.size()); for (var s : value.keys()) { packer.pack(s); pack(value.get(s)); } - break; - - case LIST: + } + case LIST -> { packer.packListHeader(value.size()); for (var item : value.values()) { pack(item); } - break; - - default: - throw new IOException("Unknown type: " + value.type().name()); + } + default -> throw new IOException("Unknown type: " + value.type().name()); } } diff --git a/driver/src/main/java/org/neo4j/driver/internal/messaging/common/CommonValueUnpacker.java b/driver/src/main/java/org/neo4j/driver/internal/messaging/common/CommonValueUnpacker.java index 1727534bad..bf8671302e 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/messaging/common/CommonValueUnpacker.java +++ b/driver/src/main/java/org/neo4j/driver/internal/messaging/common/CommonValueUnpacker.java @@ -141,22 +141,28 @@ public Value[] unpackArray() throws IOException { protected Value unpack() throws IOException { var type = unpacker.peekNextType(); switch (type) { - case NULL: + case NULL -> { return value(unpacker.unpackNull()); - case BOOLEAN: + } + case BOOLEAN -> { return value(unpacker.unpackBoolean()); - case INTEGER: + } + case INTEGER -> { return value(unpacker.unpackLong()); - case FLOAT: + } + case FLOAT -> { return value(unpacker.unpackDouble()); - case BYTES: + } + case BYTES -> { return value(unpacker.unpackBytes()); - case STRING: + } + case STRING -> { return value(unpacker.unpackString()); - case MAP: { + } + case MAP -> { return new MapValue(unpackMap()); } - case LIST: { + case LIST -> { var size = (int) unpacker.unpackListHeader(); var vals = new Value[size]; for (var j = 0; j < size; j++) { @@ -164,7 +170,7 @@ protected Value unpack() throws IOException { } return new ListValue(vals); } - case STRUCT: { + case STRUCT -> { var size = unpacker.unpackStructHeader(); var structType = unpacker.unpackStructSignature(); return unpackStruct(size, structType); @@ -175,67 +181,80 @@ protected Value unpack() throws IOException { private Value unpackStruct(long size, byte type) throws IOException { switch (type) { - case DATE: + case DATE -> { ensureCorrectStructSize(TypeConstructor.DATE, DATE_STRUCT_SIZE, size); return unpackDate(); - case TIME: + } + case TIME -> { ensureCorrectStructSize(TypeConstructor.TIME, TIME_STRUCT_SIZE, size); return unpackTime(); - case LOCAL_TIME: + } + case LOCAL_TIME -> { ensureCorrectStructSize(TypeConstructor.LOCAL_TIME, LOCAL_TIME_STRUCT_SIZE, size); return unpackLocalTime(); - case LOCAL_DATE_TIME: + } + case LOCAL_DATE_TIME -> { ensureCorrectStructSize(TypeConstructor.LOCAL_DATE_TIME, LOCAL_DATE_TIME_STRUCT_SIZE, size); return unpackLocalDateTime(); - case DATE_TIME_WITH_ZONE_OFFSET: + } + case DATE_TIME_WITH_ZONE_OFFSET -> { if (!dateTimeUtcEnabled) { ensureCorrectStructSize(TypeConstructor.DATE_TIME, DATE_TIME_STRUCT_SIZE, size); return unpackDateTime(ZoneMode.OFFSET, BaselineMode.LEGACY); } else { throw instantiateExceptionForUnknownType(type); } - case DATE_TIME_WITH_ZONE_OFFSET_UTC: + } + case DATE_TIME_WITH_ZONE_OFFSET_UTC -> { if (dateTimeUtcEnabled) { ensureCorrectStructSize(TypeConstructor.DATE_TIME, DATE_TIME_STRUCT_SIZE, size); return unpackDateTime(ZoneMode.OFFSET, BaselineMode.UTC); } else { throw instantiateExceptionForUnknownType(type); } - case DATE_TIME_WITH_ZONE_ID: + } + case DATE_TIME_WITH_ZONE_ID -> { if (!dateTimeUtcEnabled) { ensureCorrectStructSize(TypeConstructor.DATE_TIME, DATE_TIME_STRUCT_SIZE, size); return unpackDateTime(ZoneMode.ZONE_ID, BaselineMode.LEGACY); } else { throw instantiateExceptionForUnknownType(type); } - case DATE_TIME_WITH_ZONE_ID_UTC: + } + case DATE_TIME_WITH_ZONE_ID_UTC -> { if (dateTimeUtcEnabled) { ensureCorrectStructSize(TypeConstructor.DATE_TIME, DATE_TIME_STRUCT_SIZE, size); return unpackDateTime(ZoneMode.ZONE_ID, BaselineMode.UTC); } else { throw instantiateExceptionForUnknownType(type); } - case DURATION: + } + case DURATION -> { ensureCorrectStructSize(TypeConstructor.DURATION, DURATION_TIME_STRUCT_SIZE, size); return unpackDuration(); - case POINT_2D_STRUCT_TYPE: + } + case POINT_2D_STRUCT_TYPE -> { ensureCorrectStructSize(TypeConstructor.POINT, POINT_2D_STRUCT_SIZE, size); return unpackPoint2D(); - case POINT_3D_STRUCT_TYPE: + } + case POINT_3D_STRUCT_TYPE -> { ensureCorrectStructSize(TypeConstructor.POINT, POINT_3D_STRUCT_SIZE, size); return unpackPoint3D(); - case NODE: + } + case NODE -> { ensureCorrectStructSize(TypeConstructor.NODE, getNodeFields(), size); var adapted = unpackNode(); return new NodeValue(adapted); - case RELATIONSHIP: + } + case RELATIONSHIP -> { ensureCorrectStructSize(TypeConstructor.RELATIONSHIP, getRelationshipFields(), size); return unpackRelationship(); - case PATH: + } + case PATH -> { ensureCorrectStructSize(TypeConstructor.PATH, 3, size); return unpackPath(); - default: - throw instantiateExceptionForUnknownType(type); + } + default -> throw instantiateExceptionForUnknownType(type); } } diff --git a/driver/src/main/java/org/neo4j/driver/internal/messaging/encode/RouteMessageEncoder.java b/driver/src/main/java/org/neo4j/driver/internal/messaging/encode/RouteMessageEncoder.java index 90a3a38db1..90d6c6689d 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/messaging/encode/RouteMessageEncoder.java +++ b/driver/src/main/java/org/neo4j/driver/internal/messaging/encode/RouteMessageEncoder.java @@ -37,8 +37,8 @@ public void encode(Message message, ValuePacker packer) throws IOException { checkArgument(message, RouteMessage.class); var routeMessage = (RouteMessage) message; packer.packStructHeader(3, message.signature()); - packer.pack(routeMessage.getRoutingContext()); - packer.pack(value(routeMessage.getBookmarks().stream().map(Bookmark::value))); - packer.pack(routeMessage.getDatabaseName()); + packer.pack(routeMessage.routingContext()); + packer.pack(value(routeMessage.bookmarks().stream().map(Bookmark::value))); + packer.pack(routeMessage.databaseName()); } } diff --git a/driver/src/main/java/org/neo4j/driver/internal/messaging/encode/RouteV44MessageEncoder.java b/driver/src/main/java/org/neo4j/driver/internal/messaging/encode/RouteV44MessageEncoder.java index fc98c8f9d2..a97188f71a 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/messaging/encode/RouteV44MessageEncoder.java +++ b/driver/src/main/java/org/neo4j/driver/internal/messaging/encode/RouteV44MessageEncoder.java @@ -40,14 +40,14 @@ public void encode(Message message, ValuePacker packer) throws IOException { checkArgument(message, RouteMessage.class); var routeMessage = (RouteMessage) message; packer.packStructHeader(3, message.signature()); - packer.pack(routeMessage.getRoutingContext()); - packer.pack(value(routeMessage.getBookmarks().stream().map(Bookmark::value))); + packer.pack(routeMessage.routingContext()); + packer.pack(value(routeMessage.bookmarks().stream().map(Bookmark::value))); Map params; - if (routeMessage.getImpersonatedUser() != null && routeMessage.getDatabaseName() == null) { - params = Collections.singletonMap("imp_user", value(routeMessage.getImpersonatedUser())); - } else if (routeMessage.getDatabaseName() != null) { - params = Collections.singletonMap("db", value(routeMessage.getDatabaseName())); + if (routeMessage.impersonatedUser() != null && routeMessage.databaseName() == null) { + params = Collections.singletonMap("imp_user", value(routeMessage.impersonatedUser())); + } else if (routeMessage.databaseName() != null) { + params = Collections.singletonMap("db", value(routeMessage.databaseName())); } else { params = Collections.emptyMap(); } diff --git a/driver/src/main/java/org/neo4j/driver/internal/messaging/request/RouteMessage.java b/driver/src/main/java/org/neo4j/driver/internal/messaging/request/RouteMessage.java index e35ac9bb35..a792c70a58 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/messaging/request/RouteMessage.java +++ b/driver/src/main/java/org/neo4j/driver/internal/messaging/request/RouteMessage.java @@ -33,12 +33,10 @@ *

* This message is used to fetch this routing information. */ -public class RouteMessage implements Message { +public record RouteMessage( + Map routingContext, Set bookmarks, String databaseName, String impersonatedUser) + implements Message { public static final byte SIGNATURE = 0x66; - private final Map routingContext; - private final Set bookmarks; - private final String databaseName; - private final String impersonatedUser; /** * Constructor @@ -56,22 +54,6 @@ public RouteMessage( this.impersonatedUser = impersonatedUser; } - public Map getRoutingContext() { - return routingContext; - } - - public Set getBookmarks() { - return bookmarks; - } - - public String getDatabaseName() { - return databaseName; - } - - public String getImpersonatedUser() { - return impersonatedUser; - } - @Override public byte signature() { return SIGNATURE; diff --git a/driver/src/main/java/org/neo4j/driver/internal/messaging/response/FailureMessage.java b/driver/src/main/java/org/neo4j/driver/internal/messaging/response/FailureMessage.java index 75fa3a8817..abf40cef17 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/messaging/response/FailureMessage.java +++ b/driver/src/main/java/org/neo4j/driver/internal/messaging/response/FailureMessage.java @@ -28,26 +28,9 @@ * Sent by the server to signal a failed operation. * Terminates response sequence. */ -public class FailureMessage implements Message { +public record FailureMessage(String code, String message) implements Message { public static final byte SIGNATURE = 0x7F; - private final String code; - private final String message; - - public FailureMessage(String code, String message) { - super(); - this.code = code; - this.message = message; - } - - public String code() { - return code; - } - - public String message() { - return message; - } - @Override public byte signature() { return SIGNATURE; @@ -72,11 +55,4 @@ public boolean equals(Object o) { return !(code != null ? !code.equals(that.code) : that.code != null) && !(message != null ? !message.equals(that.message) : that.message != null); } - - @Override - public int hashCode() { - var result = code != null ? code.hashCode() : 0; - result = 31 * result + (message != null ? message.hashCode() : 0); - return result; - } } diff --git a/driver/src/main/java/org/neo4j/driver/internal/messaging/response/RecordMessage.java b/driver/src/main/java/org/neo4j/driver/internal/messaging/response/RecordMessage.java index dfc87469fb..34f46d7694 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/messaging/response/RecordMessage.java +++ b/driver/src/main/java/org/neo4j/driver/internal/messaging/response/RecordMessage.java @@ -22,19 +22,9 @@ import org.neo4j.driver.Value; import org.neo4j.driver.internal.messaging.Message; -public class RecordMessage implements Message { +public record RecordMessage(Value[] fields) implements Message { public static final byte SIGNATURE = 0x71; - private final Value[] fields; - - public RecordMessage(Value[] fields) { - this.fields = fields; - } - - public Value[] fields() { - return fields; - } - @Override public byte signature() { return SIGNATURE; diff --git a/driver/src/main/java/org/neo4j/driver/internal/messaging/response/SuccessMessage.java b/driver/src/main/java/org/neo4j/driver/internal/messaging/response/SuccessMessage.java index 1319b631ea..51d6472c92 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/messaging/response/SuccessMessage.java +++ b/driver/src/main/java/org/neo4j/driver/internal/messaging/response/SuccessMessage.java @@ -30,19 +30,9 @@ * Sent by the server to signal a successful operation. * Terminates response sequence. */ -public class SuccessMessage implements Message { +public record SuccessMessage(Map metadata) implements Message { public static final byte SIGNATURE = 0x70; - private final Map metadata; - - public SuccessMessage(Map metadata) { - this.metadata = metadata; - } - - public Map metadata() { - return metadata; - } - @Override public byte signature() { return SIGNATURE; diff --git a/driver/src/main/java/org/neo4j/driver/internal/messaging/v41/BoltProtocolV41.java b/driver/src/main/java/org/neo4j/driver/internal/messaging/v41/BoltProtocolV41.java index 7b5a3b1891..11c065380f 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/messaging/v41/BoltProtocolV41.java +++ b/driver/src/main/java/org/neo4j/driver/internal/messaging/v41/BoltProtocolV41.java @@ -18,57 +18,14 @@ */ package org.neo4j.driver.internal.messaging.v41; -import static org.neo4j.driver.internal.handlers.PullHandlers.newBoltV4AutoPullHandler; -import static org.neo4j.driver.internal.handlers.PullHandlers.newBoltV4BasicPullHandler; - -import java.util.concurrent.CompletableFuture; -import java.util.function.Consumer; -import org.neo4j.driver.Query; -import org.neo4j.driver.internal.DatabaseBookmark; -import org.neo4j.driver.internal.DatabaseName; -import org.neo4j.driver.internal.async.UnmanagedTransaction; -import org.neo4j.driver.internal.cursor.ResultCursorFactory; -import org.neo4j.driver.internal.cursor.ResultCursorFactoryImpl; -import org.neo4j.driver.internal.handlers.RunResponseHandler; import org.neo4j.driver.internal.messaging.BoltProtocol; import org.neo4j.driver.internal.messaging.BoltProtocolVersion; -import org.neo4j.driver.internal.messaging.MessageFormat; -import org.neo4j.driver.internal.messaging.request.RunWithMetadataMessage; import org.neo4j.driver.internal.messaging.v4.BoltProtocolV4; -import org.neo4j.driver.internal.messaging.v4.MessageFormatV4; -import org.neo4j.driver.internal.spi.Connection; public class BoltProtocolV41 extends BoltProtocolV4 { public static final BoltProtocolVersion VERSION = new BoltProtocolVersion(4, 1); public static final BoltProtocol INSTANCE = new BoltProtocolV41(); - @Override - public MessageFormat createMessageFormat() { - return new MessageFormatV4(); - } - - @Override - protected ResultCursorFactory buildResultCursorFactory( - Connection connection, - Query query, - Consumer bookmarkConsumer, - UnmanagedTransaction tx, - RunWithMetadataMessage runMessage, - long fetchSize) { - var runFuture = new CompletableFuture(); - var runHandler = new RunResponseHandler(runFuture, METADATA_EXTRACTOR, connection, tx); - - var pullAllHandler = newBoltV4AutoPullHandler(query, runHandler, connection, bookmarkConsumer, tx, fetchSize); - var pullHandler = newBoltV4BasicPullHandler(query, runHandler, connection, bookmarkConsumer, tx); - - return new ResultCursorFactoryImpl(connection, runMessage, runHandler, runFuture, pullHandler, pullAllHandler); - } - - @Override - protected void verifyDatabaseNameBeforeTransaction(DatabaseName databaseName) { - // Bolt V4.1 accepts database name - } - @Override public BoltProtocolVersion version() { return VERSION; 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 ffc53f67c5..0b12e4e3ee 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 @@ -351,14 +351,11 @@ public long unpackStructHeader() throws IOException { if (markerHighNibble == TINY_STRUCT) { return markerLowNibble; } - switch (markerByte) { - case STRUCT_8: - return unpackUINT8(); - case STRUCT_16: - return unpackUINT16(); - default: - throw new Unexpected("Expected a struct, but got: " + toHexString(markerByte)); - } + return switch (markerByte) { + case STRUCT_8 -> unpackUINT8(); + case STRUCT_16 -> unpackUINT16(); + default -> throw new Unexpected("Expected a struct, but got: " + toHexString(markerByte)); + }; } public byte unpackStructSignature() throws IOException { @@ -373,16 +370,12 @@ public long unpackListHeader() throws IOException { if (markerHighNibble == TINY_LIST) { return markerLowNibble; } - switch (markerByte) { - case LIST_8: - return unpackUINT8(); - case LIST_16: - return unpackUINT16(); - case LIST_32: - return unpackUINT32(); - default: - throw new Unexpected("Expected a list, but got: " + toHexString(markerByte & 0xFF)); - } + return switch (markerByte) { + case LIST_8 -> unpackUINT8(); + case LIST_16 -> unpackUINT16(); + case LIST_32 -> unpackUINT32(); + default -> throw new Unexpected("Expected a list, but got: " + toHexString(markerByte & 0xFF)); + }; } public long unpackMapHeader() throws IOException { @@ -393,16 +386,12 @@ public long unpackMapHeader() throws IOException { if (markerHighNibble == TINY_MAP) { return markerLowNibble; } - switch (markerByte) { - case MAP_8: - return unpackUINT8(); - case MAP_16: - return unpackUINT16(); - case MAP_32: - return unpackUINT32(); - default: - throw new Unexpected("Expected a map, but got: " + toHexString(markerByte)); - } + return switch (markerByte) { + case MAP_8 -> unpackUINT8(); + case MAP_16 -> unpackUINT16(); + case MAP_32 -> unpackUINT32(); + default -> throw new Unexpected("Expected a map, but got: " + toHexString(markerByte)); + }; } public long unpackLong() throws IOException { @@ -410,18 +399,13 @@ public long unpackLong() throws IOException { if (markerByte >= MINUS_2_TO_THE_4) { return markerByte; } - switch (markerByte) { - case INT_8: - return in.readByte(); - case INT_16: - return in.readShort(); - case INT_32: - return in.readInt(); - case INT_64: - return in.readLong(); - default: - throw new Unexpected("Expected an integer, but got: " + toHexString(markerByte)); - } + return switch (markerByte) { + case INT_8 -> in.readByte(); + case INT_16 -> in.readShort(); + case INT_32 -> in.readInt(); + case INT_64 -> in.readLong(); + default -> throw new Unexpected("Expected an integer, but got: " + toHexString(markerByte)); + }; } public double unpackDouble() throws IOException { @@ -435,11 +419,13 @@ public double unpackDouble() throws IOException { public byte[] unpackBytes() throws IOException { final var markerByte = in.readByte(); switch (markerByte) { - case BYTES_8: + case BYTES_8 -> { return unpackRawBytes(unpackUINT8()); - case BYTES_16: + } + case BYTES_16 -> { return unpackRawBytes(unpackUINT16()); - case BYTES_32: { + } + case BYTES_32 -> { var size = unpackUINT32(); if (size <= Integer.MAX_VALUE) { return unpackRawBytes((int) size); @@ -447,8 +433,7 @@ public byte[] unpackBytes() throws IOException { throw new Overflow("BYTES_32 too long for Java"); } } - default: - throw new Unexpected("Expected bytes, but got: 0x" + toHexString(markerByte & 0xFF)); + default -> throw new Unexpected("Expected bytes, but got: 0x" + toHexString(markerByte & 0xFF)); } } @@ -485,11 +470,13 @@ private byte[] unpackUtf8(byte markerByte) throws IOException { return unpackRawBytes(markerLowNibble); } switch (markerByte) { - case STRING_8: + case STRING_8 -> { return unpackRawBytes(unpackUINT8()); - case STRING_16: + } + case STRING_16 -> { return unpackRawBytes(unpackUINT16()); - case STRING_32: { + } + case STRING_32 -> { var size = unpackUINT32(); if (size <= Integer.MAX_VALUE) { return unpackRawBytes((int) size); @@ -497,21 +484,17 @@ private byte[] unpackUtf8(byte markerByte) throws IOException { throw new Overflow("STRING_32 too long for Java"); } } - default: - throw new Unexpected("Expected a string, but got: 0x" + toHexString(markerByte & 0xFF)); + default -> throw new Unexpected("Expected a string, but got: 0x" + toHexString(markerByte & 0xFF)); } } public boolean unpackBoolean() throws IOException { final var markerByte = in.readByte(); - switch (markerByte) { - case TRUE: - return true; - case FALSE: - return false; - default: - throw new Unexpected("Expected a boolean, but got: 0x" + toHexString(markerByte & 0xFF)); - } + return switch (markerByte) { + case TRUE -> true; + case FALSE -> false; + default -> throw new Unexpected("Expected a boolean, but got: 0x" + toHexString(markerByte & 0xFF)); + }; } private int unpackUINT8() throws IOException { @@ -539,47 +522,23 @@ public PackType peekNextType() throws IOException { final var markerByte = in.peekByte(); final var markerHighNibble = (byte) (markerByte & 0xF0); - switch (markerHighNibble) { - case TINY_STRING: - return PackType.STRING; - case TINY_LIST: - return PackType.LIST; - case TINY_MAP: - return PackType.MAP; - case TINY_STRUCT: - return PackType.STRUCT; - } - - switch (markerByte) { - case NULL: - return PackType.NULL; - case TRUE: - case FALSE: - return PackType.BOOLEAN; - case FLOAT_64: - return PackType.FLOAT; - case BYTES_8: - case BYTES_16: - case BYTES_32: - return PackType.BYTES; - case STRING_8: - case STRING_16: - case STRING_32: - return PackType.STRING; - case LIST_8: - case LIST_16: - case LIST_32: - return PackType.LIST; - case MAP_8: - case MAP_16: - case MAP_32: - return PackType.MAP; - case STRUCT_8: - case STRUCT_16: - return PackType.STRUCT; - default: - return PackType.INTEGER; - } + return switch (markerHighNibble) { + case TINY_STRING -> PackType.STRING; + case TINY_LIST -> PackType.LIST; + case TINY_MAP -> PackType.MAP; + case TINY_STRUCT -> PackType.STRUCT; + default -> switch (markerByte) { + case NULL -> PackType.NULL; + case TRUE, FALSE -> PackType.BOOLEAN; + case FLOAT_64 -> PackType.FLOAT; + case BYTES_8, BYTES_16, BYTES_32 -> PackType.BYTES; + case STRING_8, STRING_16, STRING_32 -> PackType.STRING; + case LIST_8, LIST_16, LIST_32 -> PackType.LIST; + case MAP_8, MAP_16, MAP_32 -> PackType.MAP; + case STRUCT_8, STRUCT_16 -> PackType.STRUCT; + default -> PackType.INTEGER; + }; + }; } } diff --git a/driver/src/main/java/org/neo4j/driver/internal/retry/RetrySettings.java b/driver/src/main/java/org/neo4j/driver/internal/retry/RetrySettings.java index 99cbc56f37..071325b63a 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/retry/RetrySettings.java +++ b/driver/src/main/java/org/neo4j/driver/internal/retry/RetrySettings.java @@ -20,19 +20,9 @@ import java.io.Serializable; -public final class RetrySettings implements Serializable { +public record RetrySettings(long maxRetryTimeMs) implements Serializable { private static final long serialVersionUID = -2895062473220745239L; public static final RetrySettings DEFAULT = new RetrySettings(ExponentialBackoffRetryLogic.DEFAULT_MAX_RETRY_TIME_MS); - - private final long maxRetryTimeMs; - - public RetrySettings(long maxRetryTimeMs) { - this.maxRetryTimeMs = maxRetryTimeMs; - } - - public long maxRetryTimeMs() { - return maxRetryTimeMs; - } } diff --git a/driver/src/main/java/org/neo4j/driver/internal/security/SecurityPlanImpl.java b/driver/src/main/java/org/neo4j/driver/internal/security/SecurityPlanImpl.java index 9ab97f8655..c9df66411e 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/security/SecurityPlanImpl.java +++ b/driver/src/main/java/org/neo4j/driver/internal/security/SecurityPlanImpl.java @@ -124,7 +124,7 @@ private static PKIXBuilderParameters configurePKIXBuilderParameters( return pkixBuilderParameters; } - private static void loadSystemCertificates(KeyStore trustedKeyStore) throws GeneralSecurityException, IOException { + private static void loadSystemCertificates(KeyStore trustedKeyStore) throws GeneralSecurityException { // To customize the PKIXParameters we need to get hold of the default KeyStore, no other elegant way available var tempFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); tempFactory.init((KeyStore) null); @@ -191,7 +191,7 @@ public void checkClientTrusted(X509Certificate[] chain, String authType) throws throw new CertificateException("All client connections to this client are forbidden."); } - public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { + public void checkServerTrusted(X509Certificate[] chain, String authType) { // all fine, pass through } diff --git a/driver/src/main/java/org/neo4j/driver/internal/security/SecurityPlans.java b/driver/src/main/java/org/neo4j/driver/internal/security/SecurityPlans.java index 45cbee1b77..70cae39124 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/security/SecurityPlans.java +++ b/driver/src/main/java/org/neo4j/driver/internal/security/SecurityPlans.java @@ -88,19 +88,16 @@ private static SecurityPlan createSecurityPlanImpl(boolean encrypted, Config.Tru if (encrypted) { var hostnameVerificationEnabled = trustStrategy.isHostnameVerificationEnabled(); var revocationCheckingStrategy = trustStrategy.revocationCheckingStrategy(); - switch (trustStrategy.strategy()) { - case TRUST_CUSTOM_CA_SIGNED_CERTIFICATES: - return SecurityPlanImpl.forCustomCASignedCertificates( - trustStrategy.certFiles(), hostnameVerificationEnabled, revocationCheckingStrategy); - case TRUST_SYSTEM_CA_SIGNED_CERTIFICATES: - return SecurityPlanImpl.forSystemCASignedCertificates( - hostnameVerificationEnabled, revocationCheckingStrategy); - case TRUST_ALL_CERTIFICATES: - return SecurityPlanImpl.forAllCertificates(hostnameVerificationEnabled, revocationCheckingStrategy); - default: - throw new ClientException("Unknown TLS authentication strategy: " - + trustStrategy.strategy().name()); - } + return switch (trustStrategy.strategy()) { + case TRUST_CUSTOM_CA_SIGNED_CERTIFICATES -> SecurityPlanImpl.forCustomCASignedCertificates( + trustStrategy.certFiles(), hostnameVerificationEnabled, revocationCheckingStrategy); + case TRUST_SYSTEM_CA_SIGNED_CERTIFICATES -> SecurityPlanImpl.forSystemCASignedCertificates( + hostnameVerificationEnabled, revocationCheckingStrategy); + case TRUST_ALL_CERTIFICATES -> SecurityPlanImpl.forAllCertificates( + hostnameVerificationEnabled, revocationCheckingStrategy); + default -> throw new ClientException("Unknown TLS authentication strategy: " + + trustStrategy.strategy().name()); + }; } else { return insecure(); } diff --git a/driver/src/main/java/org/neo4j/driver/internal/summary/InternalDatabaseInfo.java b/driver/src/main/java/org/neo4j/driver/internal/summary/InternalDatabaseInfo.java index c1c4636c0b..c8c1fc3dc9 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/summary/InternalDatabaseInfo.java +++ b/driver/src/main/java/org/neo4j/driver/internal/summary/InternalDatabaseInfo.java @@ -21,20 +21,9 @@ import java.util.Objects; import org.neo4j.driver.summary.DatabaseInfo; -public class InternalDatabaseInfo implements DatabaseInfo { +public record InternalDatabaseInfo(String name) implements DatabaseInfo { public static final DatabaseInfo DEFAULT_DATABASE_INFO = new InternalDatabaseInfo(null); - private final String name; - - public InternalDatabaseInfo(String name) { - this.name = name; - } - - @Override - public String name() { - return this.name; - } - @Override public boolean equals(Object o) { if (this == o) { @@ -47,11 +36,6 @@ public boolean equals(Object o) { return Objects.equals(name, that.name); } - @Override - public int hashCode() { - return Objects.hash(name); - } - @Override public String toString() { return "InternalDatabaseInfo{" + "name='" + name + '\'' + '}'; diff --git a/driver/src/main/java/org/neo4j/driver/internal/summary/InternalInputPosition.java b/driver/src/main/java/org/neo4j/driver/internal/summary/InternalInputPosition.java index d50a69b8dc..b52ab81013 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/summary/InternalInputPosition.java +++ b/driver/src/main/java/org/neo4j/driver/internal/summary/InternalInputPosition.java @@ -18,44 +18,20 @@ */ package org.neo4j.driver.internal.summary; -import java.util.Objects; import org.neo4j.driver.summary.InputPosition; /** * An input position refers to a specific point in a query string. */ -public class InternalInputPosition implements InputPosition { - private final int offset; - private final int line; - private final int column; - +public record InternalInputPosition(int offset, int line, int column) implements InputPosition { /** * Creating a position from and offset, line number and a column number. * * @param offset the offset from the start of the string, starting from 0. - * @param line the line number, starting from 1. + * @param line the line number, starting from 1. * @param column the column number, starting from 1. */ - public InternalInputPosition(int offset, int line, int column) { - this.offset = offset; - this.line = line; - this.column = column; - } - - @Override - public int offset() { - return offset; - } - - @Override - public int line() { - return line; - } - - @Override - public int column() { - return column; - } + public InternalInputPosition {} @Override public boolean equals(Object o) { @@ -69,11 +45,6 @@ public boolean equals(Object o) { return offset == that.offset && line == that.line && column == that.column; } - @Override - public int hashCode() { - return Objects.hash(offset, line, column); - } - @Override public String toString() { return "offset=" + offset + ", line=" + line + ", column=" + column; diff --git a/driver/src/main/java/org/neo4j/driver/internal/summary/InternalSummaryCounters.java b/driver/src/main/java/org/neo4j/driver/internal/summary/InternalSummaryCounters.java index 7d2cbbae09..25dc5176d5 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/summary/InternalSummaryCounters.java +++ b/driver/src/main/java/org/neo4j/driver/internal/summary/InternalSummaryCounters.java @@ -20,48 +20,22 @@ import org.neo4j.driver.summary.SummaryCounters; -public class InternalSummaryCounters implements SummaryCounters { +public record InternalSummaryCounters( + int nodesCreated, + int nodesDeleted, + int relationshipsCreated, + int relationshipsDeleted, + int propertiesSet, + int labelsAdded, + int labelsRemoved, + int indexesAdded, + int indexesRemoved, + int constraintsAdded, + int constraintsRemoved, + int systemUpdates) + implements SummaryCounters { public static final InternalSummaryCounters EMPTY_STATS = new InternalSummaryCounters(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); - private final int nodesCreated; - private final int nodesDeleted; - private final int relationshipsCreated; - private final int relationshipsDeleted; - private final int propertiesSet; - private final int labelsAdded; - private final int labelsRemoved; - private final int indexesAdded; - private final int indexesRemoved; - private final int constraintsAdded; - private final int constraintsRemoved; - private final int systemUpdates; - - public InternalSummaryCounters( - int nodesCreated, - int nodesDeleted, - int relationshipsCreated, - int relationshipsDeleted, - int propertiesSet, - int labelsAdded, - int labelsRemoved, - int indexesAdded, - int indexesRemoved, - int constraintsAdded, - int constraintsRemoved, - int systemUpdates) { - this.nodesCreated = nodesCreated; - this.nodesDeleted = nodesDeleted; - this.relationshipsCreated = relationshipsCreated; - this.relationshipsDeleted = relationshipsDeleted; - this.propertiesSet = propertiesSet; - this.labelsAdded = labelsAdded; - this.labelsRemoved = labelsRemoved; - this.indexesAdded = indexesAdded; - this.indexesRemoved = indexesRemoved; - this.constraintsAdded = constraintsAdded; - this.constraintsRemoved = constraintsRemoved; - this.systemUpdates = systemUpdates; - } @Override public boolean containsUpdates() { @@ -78,71 +52,11 @@ public boolean containsUpdates() { || isPositive(constraintsRemoved); } - @Override - public int nodesCreated() { - return nodesCreated; - } - - @Override - public int nodesDeleted() { - return nodesDeleted; - } - - @Override - public int relationshipsCreated() { - return relationshipsCreated; - } - - @Override - public int relationshipsDeleted() { - return relationshipsDeleted; - } - - @Override - public int propertiesSet() { - return propertiesSet; - } - - @Override - public int labelsAdded() { - return labelsAdded; - } - - @Override - public int labelsRemoved() { - return labelsRemoved; - } - - @Override - public int indexesAdded() { - return indexesAdded; - } - - @Override - public int indexesRemoved() { - return indexesRemoved; - } - - @Override - public int constraintsAdded() { - return constraintsAdded; - } - - @Override - public int constraintsRemoved() { - return constraintsRemoved; - } - @Override public boolean containsSystemUpdates() { return isPositive(systemUpdates); } - @Override - public int systemUpdates() { - return systemUpdates; - } - @Override public boolean equals(Object o) { if (this == o) { @@ -168,23 +82,6 @@ public boolean equals(Object o) { && systemUpdates == that.systemUpdates; } - @Override - public int hashCode() { - var result = nodesCreated; - result = 31 * result + nodesDeleted; - result = 31 * result + relationshipsCreated; - result = 31 * result + relationshipsDeleted; - result = 31 * result + propertiesSet; - result = 31 * result + labelsAdded; - result = 31 * result + labelsRemoved; - result = 31 * result + indexesAdded; - result = 31 * result + indexesRemoved; - result = 31 * result + constraintsAdded; - result = 31 * result + constraintsRemoved; - result = 31 * result + systemUpdates; - return result; - } - private boolean isPositive(int value) { return value > 0; } diff --git a/driver/src/main/java/org/neo4j/driver/internal/svm/MicrometerSubstitutions.java b/driver/src/main/java/org/neo4j/driver/internal/svm/MicrometerSubstitutions.java index 40497c1575..21e4b699fc 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/svm/MicrometerSubstitutions.java +++ b/driver/src/main/java/org/neo4j/driver/internal/svm/MicrometerSubstitutions.java @@ -47,11 +47,13 @@ protected static MetricsProvider getOrCreateMetricsProvider(Config config, Clock metricsAdapter = config.isMetricsEnabled() ? MetricsAdapter.DEFAULT : MetricsAdapter.DEV_NULL; } switch (metricsAdapter) { - case DEV_NULL: + case DEV_NULL -> { return DevNullMetricsProvider.INSTANCE; - case DEFAULT: + } + case DEFAULT -> { return new InternalMetricsProvider(clock, config.logging()); - case MICROMETER: + } + case MICROMETER -> { try { @SuppressWarnings("unused") var metricsClass = Class.forName("io.micrometer.core.instrument.Metrics"); @@ -59,6 +61,7 @@ protected static MetricsProvider getOrCreateMetricsProvider(Config config, Clock } catch (ClassNotFoundException e) { return DevNullMetricsProvider.INSTANCE; } + } } throw new IllegalStateException("Unknown or unsupported MetricsAdapter: " + metricsAdapter); } 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 fde26f2a00..e2b7878e41 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 @@ -135,8 +135,7 @@ public static void loadX509Cert(List certFiles, KeyStore keyStore) } } - public static void loadX509Cert(X509Certificate[] certificates, KeyStore keyStore) - throws GeneralSecurityException, IOException { + public static void loadX509Cert(X509Certificate[] certificates, KeyStore keyStore) throws GeneralSecurityException { for (var i = 0; i < certificates.length; i++) { loadX509Cert(certificates[i], "neo4j.javadriver.trustedcert." + i, keyStore); } 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 b55fc9da03..1c0fe0bd24 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 @@ -59,7 +59,7 @@ public static ResultConsumedException newResultConsumedError() { public static Neo4jException newNeo4jError(String code, String message) { switch (extractErrorClass(code)) { - case "ClientError": + case "ClientError" -> { if ("Security".equals(extractErrorSubClass(code))) { if (code.equalsIgnoreCase("Neo.ClientError.Security.Unauthorized")) { return new AuthenticationException(code, message); @@ -79,7 +79,8 @@ public static Neo4jException newNeo4jError(String code, String message) { return new ClientException(code, message); } } - case "TransientError": + } + case "TransientError" -> { // Since 5.0 these 2 errors have been moved to ClientError class. // This mapping is required if driver is connection to earlier server versions. if ("Neo.TransientError.Transaction.Terminated".equals(code)) { @@ -89,8 +90,10 @@ public static Neo4jException newNeo4jError(String code, String message) { } else { return new TransientException(code, message); } - default: + } + default -> { return new DatabaseException(code, message); + } } } diff --git a/driver/src/main/java/org/neo4j/driver/internal/util/Extract.java b/driver/src/main/java/org/neo4j/driver/internal/util/Extract.java index ea84df5e05..a257b136ba 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/util/Extract.java +++ b/driver/src/main/java/org/neo4j/driver/internal/util/Extract.java @@ -28,7 +28,6 @@ import static org.neo4j.driver.internal.util.Iterables.newHashMapWithSize; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.function.Function; @@ -54,29 +53,29 @@ private Extract() { } public static List list(Value[] values) { - switch (values.length) { - case 0: - return emptyList(); - case 1: - return singletonList(values[0]); - default: - return unmodifiableList(Arrays.asList(values)); - } + return switch (values.length) { + case 0 -> emptyList(); + case 1 -> singletonList(values[0]); + default -> List.of(values); + }; } public static List list(Value[] data, Function mapFunction) { var size = data.length; switch (size) { - case 0: + case 0 -> { return emptyList(); - case 1: + } + case 1 -> { return singletonList(mapFunction.apply(data[0])); - default: + } + default -> { List result = new ArrayList<>(size); for (var value : data) { result.add(mapFunction.apply(value)); } return unmodifiableList(result); + } } } @@ -101,19 +100,20 @@ public static Map map(Map data, Function public static Map map(Record record, Function mapFunction) { var size = record.size(); switch (size) { - case 0: + case 0 -> { return emptyMap(); - - case 1: + } + case 1 -> { return singletonMap(record.keys().get(0), mapFunction.apply(record.get(0))); - - default: + } + default -> { Map map = Iterables.newLinkedHashMapWithSize(size); var keys = record.keys(); for (var i = 0; i < size; i++) { map.put(keys.get(i), mapFunction.apply(record.get(i))); } return unmodifiableMap(map); + } } } @@ -121,16 +121,15 @@ public static Iterable> properties( final MapAccessor map, final Function mapFunction) { var size = map.size(); switch (size) { - case 0: + case 0 -> { return emptyList(); - - case 1: { + } + case 1 -> { var key = map.keys().iterator().next(); var value = map.get(key); return singletonList(InternalPair.of(key, mapFunction.apply(value))); } - - default: { + default -> { List> list = new ArrayList<>(size); for (var key : map.keys()) { var value = map.get(key); @@ -144,16 +143,15 @@ public static Iterable> properties( public static List> fields(final Record map, final Function mapFunction) { var size = map.keys().size(); switch (size) { - case 0: + case 0 -> { return emptyList(); - - case 1: { + } + case 1 -> { var key = map.keys().iterator().next(); var value = map.get(key); return singletonList(InternalPair.of(key, mapFunction.apply(value))); } - - default: { + default -> { List> list = new ArrayList<>(size); var keys = map.keys(); for (var i = 0; i < size; i++) { diff --git a/driver/src/main/java/org/neo4j/driver/internal/util/Format.java b/driver/src/main/java/org/neo4j/driver/internal/util/Format.java index 46365c1b1f..815c1f4291 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/util/Format.java +++ b/driver/src/main/java/org/neo4j/driver/internal/util/Format.java @@ -30,14 +30,13 @@ private Format() { public static String formatPairs(Map entries) { var iterator = entries.entrySet().iterator(); switch (entries.size()) { - case 0: + case 0 -> { return "{}"; - - case 1: { + } + case 1 -> { return String.format("{%s}", keyValueString(iterator.next())); } - - default: { + default -> { var builder = new StringBuilder(); builder.append("{"); builder.append(keyValueString(iterator.next())); 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 09a866ad5b..4afe536293 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 @@ -225,15 +225,7 @@ public static BiConsumer futureCompletingConsumer(CompletableF }; } - private static class CompletionResult { - final T value; - final Throwable error; - - CompletionResult(T value, Throwable error) { - this.value = value; - this.error = error; - } - } + private record CompletionResult(T value, Throwable error) {} private static void safeRun(Runnable runnable) { try { @@ -242,5 +234,6 @@ private static void safeRun(Runnable runnable) { } } + @SuppressWarnings("EmptyMethod") private static void noOpInterruptHandler() {} } diff --git a/driver/src/main/java/org/neo4j/driver/internal/value/BooleanValue.java b/driver/src/main/java/org/neo4j/driver/internal/value/BooleanValue.java index 943ee8420a..930fac234c 100644 --- a/driver/src/main/java/org/neo4j/driver/internal/value/BooleanValue.java +++ b/driver/src/main/java/org/neo4j/driver/internal/value/BooleanValue.java @@ -64,11 +64,6 @@ public boolean isTrue() { return true; } - @Override - public boolean isFalse() { - return false; - } - @SuppressWarnings("EqualsWhichDoesntCheckParameterClass") @Override public boolean equals(Object obj) { @@ -92,11 +87,6 @@ public boolean asBoolean() { return false; } - @Override - public boolean isTrue() { - return false; - } - @Override public boolean isFalse() { return true; diff --git a/driver/src/test/java/org/neo4j/driver/integration/BookmarkIT.java b/driver/src/test/java/org/neo4j/driver/integration/BookmarkIT.java index 7b7d6e0288..11633df417 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/BookmarkIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/BookmarkIT.java @@ -57,7 +57,7 @@ void assumeBookmarkSupport() { @Test @DisabledOnNeo4jWith(Neo4jFeature.BOLT_V4) @SuppressWarnings("deprecation") - void shouldReceiveBookmarkOnSuccessfulCommit() throws Throwable { + void shouldReceiveBookmarkOnSuccessfulCommit() { // Given assertBookmarkIsEmpty(session.lastBookmark()); @@ -71,7 +71,7 @@ void shouldReceiveBookmarkOnSuccessfulCommit() throws Throwable { @Test @EnabledOnNeo4jWith(Neo4jFeature.BOLT_V4) @SuppressWarnings("deprecation") - void shouldReceiveNewBookmarkOnSuccessfulCommit() throws Throwable { + void shouldReceiveNewBookmarkOnSuccessfulCommit() { // Given var initialBookmark = session.lastBookmark(); assertBookmarkIsEmpty(initialBookmark); 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 8cf10b3c2d..0ee8a05efb 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/ConnectionPoolIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/ConnectionPoolIT.java @@ -81,7 +81,7 @@ void shouldRecoverFromDownedServer() throws Throwable { neo4j.startProxy(); // Then we accept a hump with failing sessions, but demand that failures stop as soon as the server is back up. - sessionGrabber.assertSessionsAvailableWithin(120); + sessionGrabber.assertSessionsAvailableWithin(); } @Test @@ -105,7 +105,7 @@ void shouldDisposeChannelsBasedOnMaxLifetime() throws Exception { assertTrue(channels1.get(0).isActive()); // await channel to be returned to the pool - awaitNoActiveChannels(driverFactory, 20, SECONDS); + awaitNoActiveChannels(driverFactory); // move the clock forward so that idle channel seem too old clock.progress(TimeUnit.HOURS.toMillis(maxConnLifetimeHours + 1)); @@ -170,9 +170,8 @@ private static void startAndCloseTransactions(Driver driver, int txCount) { } } - private void awaitNoActiveChannels(ChannelTrackingDriverFactory driverFactory, long value, TimeUnit unit) - throws InterruptedException { - var deadline = System.currentTimeMillis() + unit.toMillis(value); + private void awaitNoActiveChannels(ChannelTrackingDriverFactory driverFactory) throws InterruptedException { + var deadline = System.currentTimeMillis() + TimeUnit.SECONDS.toMillis(20); var activeChannels = -1; while (System.currentTimeMillis() < deadline) { activeChannels = driverFactory.activeChannels(neo4j.address()); @@ -191,7 +190,7 @@ private void awaitNoActiveChannels(ChannelTrackingDriverFactory driverFactory, l * * This can thus be used to judge the state of the driver - is it currently healthy or not? */ - private class SessionGrabber implements Runnable { + private static class SessionGrabber implements Runnable { private final Driver driver; private final CountDownLatch stopped = new CountDownLatch(1); private volatile boolean sessionsAreAvailable = false; @@ -232,8 +231,8 @@ public void run() { } } - void assertSessionsAvailableWithin(int timeoutSeconds) throws InterruptedException { - var deadline = System.currentTimeMillis() + 1000 * timeoutSeconds; + void assertSessionsAvailableWithin() throws InterruptedException { + var deadline = System.currentTimeMillis() + 1000 * 120; while (System.currentTimeMillis() < deadline) { if (sessionsAreAvailable) { // Success! diff --git a/driver/src/test/java/org/neo4j/driver/integration/LoadCSVIT.java b/driver/src/test/java/org/neo4j/driver/integration/LoadCSVIT.java index ff8a093a93..59dfeb2d60 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/LoadCSVIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/LoadCSVIT.java @@ -44,18 +44,20 @@ void shouldLoadCSV() throws Throwable { // When var query = neo4j.isNeo4j44OrEarlier() - ? "USING PERIODIC COMMIT 40\n" + "LOAD CSV WITH HEADERS FROM $csvFileUrl AS l\n" - + "MATCH (c:Class {name: l.class_name})\n" - + "CREATE (s:Sample {sepal_length: l.sepal_length, sepal_width: l.sepal_width, petal_length: l.petal_length, petal_width: l.petal_width})\n" - + "CREATE (c)<-[:HAS_CLASS]-(s) " - + "RETURN count(*) AS c" - : "LOAD CSV WITH HEADERS FROM $csvFileUrl AS l\n" + "CALL {\n" - + "WITH l\n" - + "MATCH (c:Class {name: l.class_name})\n" - + "CREATE (s:Sample {sepal_length: l.sepal_length, sepal_width: l.sepal_width, petal_length: l.petal_length, petal_width: l.petal_width})\n" - + "CREATE (c)<-[:HAS_CLASS]-(s)" - + "} IN TRANSACTIONS\n" - + "RETURN count(*) AS c"; + ? """ + USING PERIODIC COMMIT 40 + LOAD CSV WITH HEADERS FROM $csvFileUrl AS l + MATCH (c:Class {name: l.class_name}) + CREATE (s:Sample {sepal_length: l.sepal_length, sepal_width: l.sepal_width, petal_length: l.petal_length, petal_width: l.petal_width}) + CREATE (c)<-[:HAS_CLASS]-(s) RETURN count(*) AS c""" + : """ + LOAD CSV WITH HEADERS FROM $csvFileUrl AS l + CALL { + WITH l + MATCH (c:Class {name: l.class_name}) + CREATE (s:Sample {sepal_length: l.sepal_length, sepal_width: l.sepal_width, petal_length: l.petal_length, petal_width: l.petal_width}) + CREATE (c)<-[:HAS_CLASS]-(s)} IN TRANSACTIONS + RETURN count(*) AS c"""; var result = session.run(query, parameters("csvFileUrl", csvFileUrl)); @@ -76,155 +78,158 @@ private String createLocalIrisData(Session session) throws IOException { private static final String[] IRIS_CLASS_NAMES = new String[] {"Iris-setosa", "Iris-versicolor", "Iris-virginica"}; private static final String IRIS_DATA = - "sepal_length,sepal_width,petal_length,petal_width,class_name\n" + "5.1,3.5,1.4,0.2,Iris-setosa\n" - + "4.9,3.0,1.4,0.2,Iris-setosa\n" - + "4.7,3.2,1.3,0.2,Iris-setosa\n" - + "4.6,3.1,1.5,0.2,Iris-setosa\n" - + "5.0,3.6,1.4,0.2,Iris-setosa\n" - + "5.4,3.9,1.7,0.4,Iris-setosa\n" - + "4.6,3.4,1.4,0.3,Iris-setosa\n" - + "5.0,3.4,1.5,0.2,Iris-setosa\n" - + "4.4,2.9,1.4,0.2,Iris-setosa\n" - + "4.9,3.1,1.5,0.1,Iris-setosa\n" - + "5.4,3.7,1.5,0.2,Iris-setosa\n" - + "4.8,3.4,1.6,0.2,Iris-setosa\n" - + "4.8,3.0,1.4,0.1,Iris-setosa\n" - + "4.3,3.0,1.1,0.1,Iris-setosa\n" - + "5.8,4.0,1.2,0.2,Iris-setosa\n" - + "5.7,4.4,1.5,0.4,Iris-setosa\n" - + "5.4,3.9,1.3,0.4,Iris-setosa\n" - + "5.1,3.5,1.4,0.3,Iris-setosa\n" - + "5.7,3.8,1.7,0.3,Iris-setosa\n" - + "5.1,3.8,1.5,0.3,Iris-setosa\n" - + "5.4,3.4,1.7,0.2,Iris-setosa\n" - + "5.1,3.7,1.5,0.4,Iris-setosa\n" - + "4.6,3.6,1.0,0.2,Iris-setosa\n" - + "5.1,3.3,1.7,0.5,Iris-setosa\n" - + "4.8,3.4,1.9,0.2,Iris-setosa\n" - + "5.0,3.0,1.6,0.2,Iris-setosa\n" - + "5.0,3.4,1.6,0.4,Iris-setosa\n" - + "5.2,3.5,1.5,0.2,Iris-setosa\n" - + "5.2,3.4,1.4,0.2,Iris-setosa\n" - + "4.7,3.2,1.6,0.2,Iris-setosa\n" - + "4.8,3.1,1.6,0.2,Iris-setosa\n" - + "5.4,3.4,1.5,0.4,Iris-setosa\n" - + "5.2,4.1,1.5,0.1,Iris-setosa\n" - + "5.5,4.2,1.4,0.2,Iris-setosa\n" - + "4.9,3.1,1.5,0.2,Iris-setosa\n" - + "5.0,3.2,1.2,0.2,Iris-setosa\n" - + "5.5,3.5,1.3,0.2,Iris-setosa\n" - + "4.9,3.6,1.4,0.1,Iris-setosa\n" - + "4.4,3.0,1.3,0.2,Iris-setosa\n" - + "5.1,3.4,1.5,0.2,Iris-setosa\n" - + "5.0,3.5,1.3,0.3,Iris-setosa\n" - + "4.5,2.3,1.3,0.3,Iris-setosa\n" - + "4.4,3.2,1.3,0.2,Iris-setosa\n" - + "5.0,3.5,1.6,0.6,Iris-setosa\n" - + "5.1,3.8,1.9,0.4,Iris-setosa\n" - + "4.8,3.0,1.4,0.3,Iris-setosa\n" - + "5.1,3.8,1.6,0.2,Iris-setosa\n" - + "4.6,3.2,1.4,0.2,Iris-setosa\n" - + "5.3,3.7,1.5,0.2,Iris-setosa\n" - + "5.0,3.3,1.4,0.2,Iris-setosa\n" - + "7.0,3.2,4.7,1.4,Iris-versicolor\n" - + "6.4,3.2,4.5,1.5,Iris-versicolor\n" - + "6.9,3.1,4.9,1.5,Iris-versicolor\n" - + "5.5,2.3,4.0,1.3,Iris-versicolor\n" - + "6.5,2.8,4.6,1.5,Iris-versicolor\n" - + "5.7,2.8,4.5,1.3,Iris-versicolor\n" - + "6.3,3.3,4.7,1.6,Iris-versicolor\n" - + "4.9,2.4,3.3,1.0,Iris-versicolor\n" - + "6.6,2.9,4.6,1.3,Iris-versicolor\n" - + "5.2,2.7,3.9,1.4,Iris-versicolor\n" - + "5.0,2.0,3.5,1.0,Iris-versicolor\n" - + "5.9,3.0,4.2,1.5,Iris-versicolor\n" - + "6.0,2.2,4.0,1.0,Iris-versicolor\n" - + "6.1,2.9,4.7,1.4,Iris-versicolor\n" - + "5.6,2.9,3.6,1.3,Iris-versicolor\n" - + "6.7,3.1,4.4,1.4,Iris-versicolor\n" - + "5.6,3.0,4.5,1.5,Iris-versicolor\n" - + "5.8,2.7,4.1,1.0,Iris-versicolor\n" - + "6.2,2.2,4.5,1.5,Iris-versicolor\n" - + "5.6,2.5,3.9,1.1,Iris-versicolor\n" - + "5.9,3.2,4.8,1.8,Iris-versicolor\n" - + "6.1,2.8,4.0,1.3,Iris-versicolor\n" - + "6.3,2.5,4.9,1.5,Iris-versicolor\n" - + "6.1,2.8,4.7,1.2,Iris-versicolor\n" - + "6.4,2.9,4.3,1.3,Iris-versicolor\n" - + "6.6,3.0,4.4,1.4,Iris-versicolor\n" - + "6.8,2.8,4.8,1.4,Iris-versicolor\n" - + "6.7,3.0,5.0,1.7,Iris-versicolor\n" - + "6.0,2.9,4.5,1.5,Iris-versicolor\n" - + "5.7,2.6,3.5,1.0,Iris-versicolor\n" - + "5.5,2.4,3.8,1.1,Iris-versicolor\n" - + "5.5,2.4,3.7,1.0,Iris-versicolor\n" - + "5.8,2.7,3.9,1.2,Iris-versicolor\n" - + "6.0,2.7,5.1,1.6,Iris-versicolor\n" - + "5.4,3.0,4.5,1.5,Iris-versicolor\n" - + "6.0,3.4,4.5,1.6,Iris-versicolor\n" - + "6.7,3.1,4.7,1.5,Iris-versicolor\n" - + "6.3,2.3,4.4,1.3,Iris-versicolor\n" - + "5.6,3.0,4.1,1.3,Iris-versicolor\n" - + "5.5,2.5,4.0,1.3,Iris-versicolor\n" - + "5.5,2.6,4.4,1.2,Iris-versicolor\n" - + "6.1,3.0,4.6,1.4,Iris-versicolor\n" - + "5.8,2.6,4.0,1.2,Iris-versicolor\n" - + "5.0,2.3,3.3,1.0,Iris-versicolor\n" - + "5.6,2.7,4.2,1.3,Iris-versicolor\n" - + "5.7,3.0,4.2,1.2,Iris-versicolor\n" - + "5.7,2.9,4.2,1.3,Iris-versicolor\n" - + "6.2,2.9,4.3,1.3,Iris-versicolor\n" - + "5.1,2.5,3.0,1.1,Iris-versicolor\n" - + "5.7,2.8,4.1,1.3,Iris-versicolor\n" - + "6.3,3.3,6.0,2.5,Iris-virginica\n" - + "5.8,2.7,5.1,1.9,Iris-virginica\n" - + "7.1,3.0,5.9,2.1,Iris-virginica\n" - + "6.3,2.9,5.6,1.8,Iris-virginica\n" - + "6.5,3.0,5.8,2.2,Iris-virginica\n" - + "7.6,3.0,6.6,2.1,Iris-virginica\n" - + "4.9,2.5,4.5,1.7,Iris-virginica\n" - + "7.3,2.9,6.3,1.8,Iris-virginica\n" - + "6.7,2.5,5.8,1.8,Iris-virginica\n" - + "7.2,3.6,6.1,2.5,Iris-virginica\n" - + "6.5,3.2,5.1,2.0,Iris-virginica\n" - + "6.4,2.7,5.3,1.9,Iris-virginica\n" - + "6.8,3.0,5.5,2.1,Iris-virginica\n" - + "5.7,2.5,5.0,2.0,Iris-virginica\n" - + "5.8,2.8,5.1,2.4,Iris-virginica\n" - + "6.4,3.2,5.3,2.3,Iris-virginica\n" - + "6.5,3.0,5.5,1.8,Iris-virginica\n" - + "7.7,3.8,6.7,2.2,Iris-virginica\n" - + "7.7,2.6,6.9,2.3,Iris-virginica\n" - + "6.0,2.2,5.0,1.5,Iris-virginica\n" - + "6.9,3.2,5.7,2.3,Iris-virginica\n" - + "5.6,2.8,4.9,2.0,Iris-virginica\n" - + "7.7,2.8,6.7,2.0,Iris-virginica\n" - + "6.3,2.7,4.9,1.8,Iris-virginica\n" - + "6.7,3.3,5.7,2.1,Iris-virginica\n" - + "7.2,3.2,6.0,1.8,Iris-virginica\n" - + "6.2,2.8,4.8,1.8,Iris-virginica\n" - + "6.1,3.0,4.9,1.8,Iris-virginica\n" - + "6.4,2.8,5.6,2.1,Iris-virginica\n" - + "7.2,3.0,5.8,1.6,Iris-virginica\n" - + "7.4,2.8,6.1,1.9,Iris-virginica\n" - + "7.9,3.8,6.4,2.0,Iris-virginica\n" - + "6.4,2.8,5.6,2.2,Iris-virginica\n" - + "6.3,2.8,5.1,1.5,Iris-virginica\n" - + "6.1,2.6,5.6,1.4,Iris-virginica\n" - + "7.7,3.0,6.1,2.3,Iris-virginica\n" - + "6.3,3.4,5.6,2.4,Iris-virginica\n" - + "6.4,3.1,5.5,1.8,Iris-virginica\n" - + "6.0,3.0,4.8,1.8,Iris-virginica\n" - + "6.9,3.1,5.4,2.1,Iris-virginica\n" - + "6.7,3.1,5.6,2.4,Iris-virginica\n" - + "6.9,3.1,5.1,2.3,Iris-virginica\n" - + "5.8,2.7,5.1,1.9,Iris-virginica\n" - + "6.8,3.2,5.9,2.3,Iris-virginica\n" - + "6.7,3.3,5.7,2.5,Iris-virginica\n" - + "6.7,3.0,5.2,2.3,Iris-virginica\n" - + "6.3,2.5,5.0,1.9,Iris-virginica\n" - + "6.5,3.0,5.2,2.0,Iris-virginica\n" - + "6.2,3.4,5.4,2.3,Iris-virginica\n" - + "5.9,3.0,5.1,1.8,Iris-virginica\n" - + "\n"; + """ + sepal_length,sepal_width,petal_length,petal_width,class_name + 5.1,3.5,1.4,0.2,Iris-setosa + 4.9,3.0,1.4,0.2,Iris-setosa + 4.7,3.2,1.3,0.2,Iris-setosa + 4.6,3.1,1.5,0.2,Iris-setosa + 5.0,3.6,1.4,0.2,Iris-setosa + 5.4,3.9,1.7,0.4,Iris-setosa + 4.6,3.4,1.4,0.3,Iris-setosa + 5.0,3.4,1.5,0.2,Iris-setosa + 4.4,2.9,1.4,0.2,Iris-setosa + 4.9,3.1,1.5,0.1,Iris-setosa + 5.4,3.7,1.5,0.2,Iris-setosa + 4.8,3.4,1.6,0.2,Iris-setosa + 4.8,3.0,1.4,0.1,Iris-setosa + 4.3,3.0,1.1,0.1,Iris-setosa + 5.8,4.0,1.2,0.2,Iris-setosa + 5.7,4.4,1.5,0.4,Iris-setosa + 5.4,3.9,1.3,0.4,Iris-setosa + 5.1,3.5,1.4,0.3,Iris-setosa + 5.7,3.8,1.7,0.3,Iris-setosa + 5.1,3.8,1.5,0.3,Iris-setosa + 5.4,3.4,1.7,0.2,Iris-setosa + 5.1,3.7,1.5,0.4,Iris-setosa + 4.6,3.6,1.0,0.2,Iris-setosa + 5.1,3.3,1.7,0.5,Iris-setosa + 4.8,3.4,1.9,0.2,Iris-setosa + 5.0,3.0,1.6,0.2,Iris-setosa + 5.0,3.4,1.6,0.4,Iris-setosa + 5.2,3.5,1.5,0.2,Iris-setosa + 5.2,3.4,1.4,0.2,Iris-setosa + 4.7,3.2,1.6,0.2,Iris-setosa + 4.8,3.1,1.6,0.2,Iris-setosa + 5.4,3.4,1.5,0.4,Iris-setosa + 5.2,4.1,1.5,0.1,Iris-setosa + 5.5,4.2,1.4,0.2,Iris-setosa + 4.9,3.1,1.5,0.2,Iris-setosa + 5.0,3.2,1.2,0.2,Iris-setosa + 5.5,3.5,1.3,0.2,Iris-setosa + 4.9,3.6,1.4,0.1,Iris-setosa + 4.4,3.0,1.3,0.2,Iris-setosa + 5.1,3.4,1.5,0.2,Iris-setosa + 5.0,3.5,1.3,0.3,Iris-setosa + 4.5,2.3,1.3,0.3,Iris-setosa + 4.4,3.2,1.3,0.2,Iris-setosa + 5.0,3.5,1.6,0.6,Iris-setosa + 5.1,3.8,1.9,0.4,Iris-setosa + 4.8,3.0,1.4,0.3,Iris-setosa + 5.1,3.8,1.6,0.2,Iris-setosa + 4.6,3.2,1.4,0.2,Iris-setosa + 5.3,3.7,1.5,0.2,Iris-setosa + 5.0,3.3,1.4,0.2,Iris-setosa + 7.0,3.2,4.7,1.4,Iris-versicolor + 6.4,3.2,4.5,1.5,Iris-versicolor + 6.9,3.1,4.9,1.5,Iris-versicolor + 5.5,2.3,4.0,1.3,Iris-versicolor + 6.5,2.8,4.6,1.5,Iris-versicolor + 5.7,2.8,4.5,1.3,Iris-versicolor + 6.3,3.3,4.7,1.6,Iris-versicolor + 4.9,2.4,3.3,1.0,Iris-versicolor + 6.6,2.9,4.6,1.3,Iris-versicolor + 5.2,2.7,3.9,1.4,Iris-versicolor + 5.0,2.0,3.5,1.0,Iris-versicolor + 5.9,3.0,4.2,1.5,Iris-versicolor + 6.0,2.2,4.0,1.0,Iris-versicolor + 6.1,2.9,4.7,1.4,Iris-versicolor + 5.6,2.9,3.6,1.3,Iris-versicolor + 6.7,3.1,4.4,1.4,Iris-versicolor + 5.6,3.0,4.5,1.5,Iris-versicolor + 5.8,2.7,4.1,1.0,Iris-versicolor + 6.2,2.2,4.5,1.5,Iris-versicolor + 5.6,2.5,3.9,1.1,Iris-versicolor + 5.9,3.2,4.8,1.8,Iris-versicolor + 6.1,2.8,4.0,1.3,Iris-versicolor + 6.3,2.5,4.9,1.5,Iris-versicolor + 6.1,2.8,4.7,1.2,Iris-versicolor + 6.4,2.9,4.3,1.3,Iris-versicolor + 6.6,3.0,4.4,1.4,Iris-versicolor + 6.8,2.8,4.8,1.4,Iris-versicolor + 6.7,3.0,5.0,1.7,Iris-versicolor + 6.0,2.9,4.5,1.5,Iris-versicolor + 5.7,2.6,3.5,1.0,Iris-versicolor + 5.5,2.4,3.8,1.1,Iris-versicolor + 5.5,2.4,3.7,1.0,Iris-versicolor + 5.8,2.7,3.9,1.2,Iris-versicolor + 6.0,2.7,5.1,1.6,Iris-versicolor + 5.4,3.0,4.5,1.5,Iris-versicolor + 6.0,3.4,4.5,1.6,Iris-versicolor + 6.7,3.1,4.7,1.5,Iris-versicolor + 6.3,2.3,4.4,1.3,Iris-versicolor + 5.6,3.0,4.1,1.3,Iris-versicolor + 5.5,2.5,4.0,1.3,Iris-versicolor + 5.5,2.6,4.4,1.2,Iris-versicolor + 6.1,3.0,4.6,1.4,Iris-versicolor + 5.8,2.6,4.0,1.2,Iris-versicolor + 5.0,2.3,3.3,1.0,Iris-versicolor + 5.6,2.7,4.2,1.3,Iris-versicolor + 5.7,3.0,4.2,1.2,Iris-versicolor + 5.7,2.9,4.2,1.3,Iris-versicolor + 6.2,2.9,4.3,1.3,Iris-versicolor + 5.1,2.5,3.0,1.1,Iris-versicolor + 5.7,2.8,4.1,1.3,Iris-versicolor + 6.3,3.3,6.0,2.5,Iris-virginica + 5.8,2.7,5.1,1.9,Iris-virginica + 7.1,3.0,5.9,2.1,Iris-virginica + 6.3,2.9,5.6,1.8,Iris-virginica + 6.5,3.0,5.8,2.2,Iris-virginica + 7.6,3.0,6.6,2.1,Iris-virginica + 4.9,2.5,4.5,1.7,Iris-virginica + 7.3,2.9,6.3,1.8,Iris-virginica + 6.7,2.5,5.8,1.8,Iris-virginica + 7.2,3.6,6.1,2.5,Iris-virginica + 6.5,3.2,5.1,2.0,Iris-virginica + 6.4,2.7,5.3,1.9,Iris-virginica + 6.8,3.0,5.5,2.1,Iris-virginica + 5.7,2.5,5.0,2.0,Iris-virginica + 5.8,2.8,5.1,2.4,Iris-virginica + 6.4,3.2,5.3,2.3,Iris-virginica + 6.5,3.0,5.5,1.8,Iris-virginica + 7.7,3.8,6.7,2.2,Iris-virginica + 7.7,2.6,6.9,2.3,Iris-virginica + 6.0,2.2,5.0,1.5,Iris-virginica + 6.9,3.2,5.7,2.3,Iris-virginica + 5.6,2.8,4.9,2.0,Iris-virginica + 7.7,2.8,6.7,2.0,Iris-virginica + 6.3,2.7,4.9,1.8,Iris-virginica + 6.7,3.3,5.7,2.1,Iris-virginica + 7.2,3.2,6.0,1.8,Iris-virginica + 6.2,2.8,4.8,1.8,Iris-virginica + 6.1,3.0,4.9,1.8,Iris-virginica + 6.4,2.8,5.6,2.1,Iris-virginica + 7.2,3.0,5.8,1.6,Iris-virginica + 7.4,2.8,6.1,1.9,Iris-virginica + 7.9,3.8,6.4,2.0,Iris-virginica + 6.4,2.8,5.6,2.2,Iris-virginica + 6.3,2.8,5.1,1.5,Iris-virginica + 6.1,2.6,5.6,1.4,Iris-virginica + 7.7,3.0,6.1,2.3,Iris-virginica + 6.3,3.4,5.6,2.4,Iris-virginica + 6.4,3.1,5.5,1.8,Iris-virginica + 6.0,3.0,4.8,1.8,Iris-virginica + 6.9,3.1,5.4,2.1,Iris-virginica + 6.7,3.1,5.6,2.4,Iris-virginica + 6.9,3.1,5.1,2.3,Iris-virginica + 5.8,2.7,5.1,1.9,Iris-virginica + 6.8,3.2,5.9,2.3,Iris-virginica + 6.7,3.3,5.7,2.5,Iris-virginica + 6.7,3.0,5.2,2.3,Iris-virginica + 6.3,2.5,5.0,1.9,Iris-virginica + 6.5,3.0,5.2,2.0,Iris-virginica + 6.2,3.4,5.4,2.3,Iris-virginica + 5.9,3.0,5.1,1.8,Iris-virginica + + """; } diff --git a/driver/src/test/java/org/neo4j/driver/integration/MetricsIT.java b/driver/src/test/java/org/neo4j/driver/integration/MetricsIT.java index f700348d86..51ddbfa21c 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/MetricsIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/MetricsIT.java @@ -59,7 +59,7 @@ void closeDriver() { @Test void driverMetricsUpdatedWithDriverUse() { - var result = createNodesInNewSession(12); + var result = createNodesInNewSession(); // assert in use var acquisitionTimer = meterRegistry.get("neo4j.driver.connections.acquisition").timer(); @@ -77,8 +77,8 @@ void driverMetricsUpdatedWithDriverUse() { assertEquals(1, usageTimer.count()); } - private Result createNodesInNewSession(int nodesToCreate) { - return createNodes(nodesToCreate, driver.session()); + private Result createNodesInNewSession() { + return createNodes(12, driver.session()); } private Result createNodes(int nodesToCreate, QueryRunner queryRunner) { diff --git a/driver/src/test/java/org/neo4j/driver/integration/RoutingDriverIT.java b/driver/src/test/java/org/neo4j/driver/integration/RoutingDriverIT.java index 9eda6125b4..96a9285b30 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/RoutingDriverIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/RoutingDriverIT.java @@ -40,7 +40,7 @@ class RoutingDriverIT { static final DatabaseExtension neo4j = new DatabaseExtension(); @Test - void shouldBeAbleToConnectSingleInstanceWithNeo4jScheme() throws Throwable { + void shouldBeAbleToConnectSingleInstanceWithNeo4jScheme() { var uri = URI.create(String.format( "neo4j://%s:%s", neo4j.uri().getHost(), neo4j.uri().getPort())); @@ -54,7 +54,7 @@ void shouldBeAbleToConnectSingleInstanceWithNeo4jScheme() throws Throwable { } @Test - void shouldBeAbleToRunQueryOnNeo4j() throws Throwable { + void shouldBeAbleToRunQueryOnNeo4j() { var uri = URI.create(String.format( "neo4j://%s:%s", neo4j.uri().getHost(), neo4j.uri().getPort())); try (var driver = GraphDatabase.driver(uri, neo4j.authTokenManager()); diff --git a/driver/src/test/java/org/neo4j/driver/integration/ScalarTypeIT.java b/driver/src/test/java/org/neo4j/driver/integration/ScalarTypeIT.java index 8b535f0b5a..55da821286 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/ScalarTypeIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/ScalarTypeIT.java @@ -174,7 +174,7 @@ void shouldEchoList(Value input) { } @Test - void shouldEchoNestedList() throws Throwable { + void shouldEchoNestedList() { var input = Values.value(toValueStream(listToTest())); // When & Then @@ -201,7 +201,7 @@ void shouldEchoMap(Value input) { } @Test - void shouldEchoNestedMap() throws Throwable { + void shouldEchoNestedMap() { var input = new MapValue( toValueStream(mapToTest()).collect(Collectors.toMap(Object::toString, Function.identity()))); diff --git a/driver/src/test/java/org/neo4j/driver/integration/SessionIT.java b/driver/src/test/java/org/neo4j/driver/integration/SessionIT.java index 297092e207..7f4709d3c0 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/SessionIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/SessionIT.java @@ -260,7 +260,7 @@ void writeTxRetriedUntilFailure() { @Test @SuppressWarnings("deprecation") void writeTxRetryErrorsAreCollected() { - try (var driver = newDriverWithLimitedRetries(5, TimeUnit.SECONDS)) { + try (var driver = newDriverWithLimitedRetries(5)) { var work = newThrowingWorkSpy("CREATE (:Person {name: 'Ronan'})", Integer.MAX_VALUE); int suppressedErrors; try (var session = driver.session()) { @@ -281,7 +281,7 @@ void writeTxRetryErrorsAreCollected() { @Test @SuppressWarnings("deprecation") void readTxRetryErrorsAreCollected() { - try (var driver = newDriverWithLimitedRetries(4, TimeUnit.SECONDS)) { + try (var driver = newDriverWithLimitedRetries(4)) { var work = newThrowingWorkSpy("MATCH (n) RETURN n.name", Integer.MAX_VALUE); int suppressedErrors; try (var session = driver.session()) { @@ -1068,7 +1068,7 @@ void shouldSupportNestedQueries() { @Test @DisabledOnNeo4jWith(BOLT_V4) @SuppressWarnings("deprecation") - void shouldErrorWhenTryingToUseRxAPIWithoutBoltV4() throws Throwable { + void shouldErrorWhenTryingToUseRxAPIWithoutBoltV4() { // Given var session = neo4j.driver().rxSession(); var result = session.run("RETURN 1"); @@ -1088,7 +1088,7 @@ void shouldErrorWhenTryingToUseRxAPIWithoutBoltV4() throws Throwable { @Test @DisabledOnNeo4jWith(BOLT_V4) - void shouldErrorWhenTryingToUseDatabaseNameWithoutBoltV4() throws Throwable { + void shouldErrorWhenTryingToUseDatabaseNameWithoutBoltV4() { // Given var session = neo4j.driver().session(forDatabase("foo")); @@ -1101,7 +1101,7 @@ void shouldErrorWhenTryingToUseDatabaseNameWithoutBoltV4() throws Throwable { @Test @DisabledOnNeo4jWith(BOLT_V4) - void shouldErrorWhenTryingToUseDatabaseNameWithoutBoltV4UsingTx() throws Throwable { + void shouldErrorWhenTryingToUseDatabaseNameWithoutBoltV4UsingTx() { // Given var session = neo4j.driver().session(forDatabase("foo")); @@ -1114,7 +1114,7 @@ void shouldErrorWhenTryingToUseDatabaseNameWithoutBoltV4UsingTx() throws Throwab @Test @EnabledOnNeo4jWith(BOLT_V4) - void shouldAllowDatabaseName() throws Throwable { + void shouldAllowDatabaseName() { // Given try (var session = neo4j.driver().session(forDatabase("neo4j"))) { var result = session.run("RETURN 1"); @@ -1124,7 +1124,7 @@ void shouldAllowDatabaseName() throws Throwable { @Test @EnabledOnNeo4jWith(BOLT_V4) - void shouldAllowDatabaseNameUsingTx() throws Throwable { + void shouldAllowDatabaseNameUsingTx() { try (var session = neo4j.driver().session(forDatabase("neo4j")); var transaction = session.beginTransaction()) { var result = transaction.run("RETURN 1"); @@ -1135,7 +1135,7 @@ void shouldAllowDatabaseNameUsingTx() throws Throwable { @Test @EnabledOnNeo4jWith(BOLT_V4) @SuppressWarnings("deprecation") - void shouldAllowDatabaseNameUsingTxWithRetries() throws Throwable { + void shouldAllowDatabaseNameUsingTxWithRetries() { try (var session = neo4j.driver().session(forDatabase("neo4j"))) { int num = session.readTransaction( tx -> tx.run("RETURN 1").single().get(0).asInt()); @@ -1145,7 +1145,7 @@ void shouldAllowDatabaseNameUsingTxWithRetries() throws Throwable { @Test @EnabledOnNeo4jWith(BOLT_V4) - void shouldErrorDatabaseWhenDatabaseIsAbsent() throws Throwable { + void shouldErrorDatabaseWhenDatabaseIsAbsent() { var session = neo4j.driver().session(forDatabase("foo")); var error = assertThrows(ClientException.class, () -> { @@ -1159,7 +1159,7 @@ void shouldErrorDatabaseWhenDatabaseIsAbsent() throws Throwable { @Test @EnabledOnNeo4jWith(BOLT_V4) - void shouldErrorDatabaseNameUsingTxWhenDatabaseIsAbsent() throws Throwable { + void shouldErrorDatabaseNameUsingTxWhenDatabaseIsAbsent() { // Given var session = neo4j.driver().session(forDatabase("foo")); @@ -1176,7 +1176,7 @@ void shouldErrorDatabaseNameUsingTxWhenDatabaseIsAbsent() throws Throwable { @Test @EnabledOnNeo4jWith(BOLT_V4) @SuppressWarnings("deprecation") - void shouldErrorDatabaseNameUsingTxWithRetriesWhenDatabaseIsAbsent() throws Throwable { + void shouldErrorDatabaseNameUsingTxWithRetriesWhenDatabaseIsAbsent() { // Given var session = neo4j.driver().session(forDatabase("foo")); @@ -1296,10 +1296,10 @@ private Driver newDriverWithFixedRetries(int maxRetriesCount) { neo4j.uri(), neo4j.authTokenManager(), noLoggingConfig(), SecurityPlanImpl.insecure(), null, null); } - private Driver newDriverWithLimitedRetries(int maxTxRetryTime, TimeUnit unit) { + private Driver newDriverWithLimitedRetries(int maxTxRetryTime) { var config = Config.builder() .withLogging(DEV_NULL_LOGGING) - .withMaxTransactionRetryTime(maxTxRetryTime, unit) + .withMaxTransactionRetryTime(maxTxRetryTime, TimeUnit.SECONDS) .build(); return GraphDatabase.driver(neo4j.uri(), neo4j.authTokenManager(), config); } diff --git a/driver/src/test/java/org/neo4j/driver/integration/SessionMixIT.java b/driver/src/test/java/org/neo4j/driver/integration/SessionMixIT.java index 5714002ae9..67e74e4434 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/SessionMixIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/SessionMixIT.java @@ -162,7 +162,7 @@ void shouldAllowBlockingOperationInCommonPoolWhenChaining() { var node = await(nodeStage); assertEquals(42, node.get("value").asInt()); - assertEquals(1, countNodesByLabel("Node")); + assertEquals(1, countNodes()); } private void runNestedQueries( @@ -205,9 +205,9 @@ private void runNestedQuery( }); } - private long countNodesByLabel(String label) { + private long countNodes() { var countStage = asyncSession - .runAsync("MATCH (n:" + label + ") RETURN count(n)") + .runAsync("MATCH (n:Node) RETURN count(n)") .thenCompose(ResultCursor::singleAsync) .thenApply(record -> record.get(0).asLong()); 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 6281f27738..ed280c18b4 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/SessionResetIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/SessionResetIT.java @@ -101,12 +101,12 @@ void tearDown() { @Test void shouldTerminateAutoCommitQuery() { - testQueryTermination(LONG_QUERY, true); + testQueryTermination(true); } @Test void shouldTerminateQueryInUnmanagedTransaction() { - testQueryTermination(LONG_QUERY, false); + testQueryTermination(false); } @Test @@ -433,8 +433,8 @@ private void runRandomQuery( } } - private void testQueryTermination(String query, boolean autoCommit) { - var queryResult = runQueryInDifferentThreadAndResetSession(query, autoCommit); + private void testQueryTermination(boolean autoCommit) { + var queryResult = runQueryInDifferentThreadAndResetSession(SessionResetIT.LONG_QUERY, autoCommit); var e = assertThrows(ExecutionException.class, () -> queryResult.get(10, SECONDS)); assertThat(e.getCause(), instanceOf(Neo4jException.class)); awaitNoActiveQueries(); diff --git a/driver/src/test/java/org/neo4j/driver/integration/SummaryIT.java b/driver/src/test/java/org/neo4j/driver/integration/SummaryIT.java index 44f98c6999..da893aa534 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/SummaryIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/SummaryIT.java @@ -250,7 +250,7 @@ void shouldContainNotifications() { } @Test - void shouldContainNoNotifications() throws Throwable { + void shouldContainNoNotifications() { // When var summary = session.run("RETURN 1").consume(); diff --git a/driver/src/test/java/org/neo4j/driver/integration/TransactionIT.java b/driver/src/test/java/org/neo4j/driver/integration/TransactionIT.java index 7d6ebe109d..308238f385 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/TransactionIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/TransactionIT.java @@ -379,7 +379,7 @@ void shouldThrowWhenConnectionKilledDuringTransaction() { } @Test - void shouldFailToCommitAfterFailure() throws Throwable { + void shouldFailToCommitAfterFailure() { try (var tx = session.beginTransaction()) { var xs = tx.run("UNWIND [1,2,3] AS x CREATE (:Node) RETURN x") .list(record -> record.get(0).asInt()); 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 b2a2392a9e..e452b217e5 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/UnmanagedTransactionIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/UnmanagedTransactionIT.java @@ -175,7 +175,7 @@ void shouldBePossibleToRunMoreTransactionsAfterOneIsTerminated() { .thenApply(ignore -> tx)) .thenCompose(UnmanagedTransaction::commitAsync)); - assertEquals(1, countNodes(42)); + assertEquals(1, countNodesWithId(42)); } @Test @@ -188,7 +188,8 @@ void shouldPropagateRollbackFailureAfterFatalError() { testCommitAndRollbackFailurePropagation(false); } - private int countNodes(Object id) { + @SuppressWarnings("SameParameterValue") + private int countNodesWithId(Object id) { var query = new Query("MATCH (n:Node {id: $id}) RETURN count(n)", parameters("id", id)); var cursor = sessionRun(session, query); return await(cursor.singleAsync()).get(0).asInt(); diff --git a/driver/src/test/java/org/neo4j/driver/integration/reactive/RxNestedQueriesIT.java b/driver/src/test/java/org/neo4j/driver/integration/reactive/RxNestedQueriesIT.java index 16c339e81c..157b1a134b 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/reactive/RxNestedQueriesIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/reactive/RxNestedQueriesIT.java @@ -133,7 +133,7 @@ void shouldErrorForNestingQueriesAmongTransactionFunctionAndSessionRun() { } @Test - void shouldHandleNestedQueriesInTheSameTransaction() throws Throwable { + void shouldHandleNestedQueriesInTheSameTransaction() { var size = 12555; var session = neo4j.driver().rxSession(); diff --git a/driver/src/test/java/org/neo4j/driver/integration/reactive/RxResultIT.java b/driver/src/test/java/org/neo4j/driver/integration/reactive/RxResultIT.java index 9bda057284..8693335e52 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/reactive/RxResultIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/reactive/RxResultIT.java @@ -89,7 +89,7 @@ void shouldReturnKeysRecordsAndSummaryInOrder() { } @Test - void shouldSecondVisitOfRecordReceiveEmptyRecordStream() throws Throwable { + void shouldSecondVisitOfRecordReceiveEmptyRecordStream() { // When var res = sessionRunUnwind(); @@ -118,7 +118,7 @@ void shouldAllowOnlySummary() { } @Test - void shouldAllowAccessKeysAndSummaryAfterRecord() throws Throwable { + void shouldAllowAccessKeysAndSummaryAfterRecord() { // Given var res = sessionRunUnwind(); @@ -226,7 +226,7 @@ void shouldOnlyErrorRecordAfterFailure() { } @Test - void shouldErrorOnSummaryIfNoRecord() throws Throwable { + void shouldErrorOnSummaryIfNoRecord() { // Given var session = neo4j.driver().rxSession(); var result = session.run("INVALID"); diff --git a/driver/src/test/java/org/neo4j/driver/integration/reactive/RxTransactionIT.java b/driver/src/test/java/org/neo4j/driver/integration/reactive/RxTransactionIT.java index d670013026..bfeec943dd 100644 --- a/driver/src/test/java/org/neo4j/driver/integration/reactive/RxTransactionIT.java +++ b/driver/src/test/java/org/neo4j/driver/integration/reactive/RxTransactionIT.java @@ -672,7 +672,7 @@ void shouldUpdateSessionBookmarkAfterCommit() { } @Test - void shouldFailToCommitWhenQueriesFailAndErrorNotConsumed() throws InterruptedException { + void shouldFailToCommitWhenQueriesFailAndErrorNotConsumed() { var tx = await(Mono.from(session.beginTransaction())); var result1 = tx.run("CREATE (:TestNode)"); @@ -690,7 +690,7 @@ void shouldFailToCommitWhenQueriesFailAndErrorNotConsumed() throws InterruptedEx } @Test - void shouldNotRunUntilPublisherIsConnected() throws Throwable { + void shouldNotRunUntilPublisherIsConnected() { var tx = await(Mono.from(session.beginTransaction())); var result1 = tx.run("RETURN 1"); diff --git a/driver/src/test/java/org/neo4j/driver/internal/DatabaseNameUtilTest.java b/driver/src/test/java/org/neo4j/driver/internal/DatabaseNameUtilTest.java index 8b849dac38..3e75b4cf9d 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/DatabaseNameUtilTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/DatabaseNameUtilTest.java @@ -29,7 +29,7 @@ class DatabaseNameUtilTest { @Test - void shouldDatabaseNameBeEqual() throws Throwable { + void shouldDatabaseNameBeEqual() { assertEquals(defaultDatabase(), defaultDatabase()); assertEquals(defaultDatabase(), database(null)); assertEquals(defaultDatabase(), database(DEFAULT_DATABASE_NAME)); @@ -42,7 +42,7 @@ void shouldDatabaseNameBeEqual() throws Throwable { } @Test - void shouldReturnDatabaseNameInDescription() throws Throwable { + void shouldReturnDatabaseNameInDescription() { assertEquals("", defaultDatabase().description()); assertEquals("system", systemDatabase().description()); assertEquals("hello", database("hello").description()); diff --git a/driver/src/test/java/org/neo4j/driver/internal/DirectConnectionProviderTest.java b/driver/src/test/java/org/neo4j/driver/internal/DirectConnectionProviderTest.java index e5c2b00cdd..dc314b4518 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/DirectConnectionProviderTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/DirectConnectionProviderTest.java @@ -98,7 +98,7 @@ void returnsCorrectAddress() { } @Test - void shouldIgnoreDatabaseNameAndAccessModeWhenObtainConnectionFromPool() throws Throwable { + void shouldIgnoreDatabaseNameAndAccessModeWhenObtainConnectionFromPool() { var address = BoltServerAddress.LOCAL_DEFAULT; var connection = mock(Connection.class); @@ -114,7 +114,7 @@ void shouldIgnoreDatabaseNameAndAccessModeWhenObtainConnectionFromPool() throws @ParameterizedTest @ValueSource(strings = {"", "foo", "data"}) - void shouldObtainDatabaseNameOnConnection(String databaseName) throws Throwable { + void shouldObtainDatabaseNameOnConnection(String databaseName) { var address = BoltServerAddress.LOCAL_DEFAULT; var pool = poolMock(address, mock(Connection.class)); var provider = new DirectConnectionProvider(address, pool); diff --git a/driver/src/test/java/org/neo4j/driver/internal/InternalDriverTest.java b/driver/src/test/java/org/neo4j/driver/internal/InternalDriverTest.java index 9e7fdb03e9..a2bfbbe029 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/InternalDriverTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/InternalDriverTest.java @@ -87,7 +87,7 @@ void shouldThrowWhenUnableToVerifyConnectivity() { } @Test - void shouldThrowClientExceptionIfMetricsNotEnabled() throws Throwable { + void shouldThrowClientExceptionIfMetricsNotEnabled() { // Given var driver = newDriver(false); diff --git a/driver/src/test/java/org/neo4j/driver/internal/InternalSessionTest.java b/driver/src/test/java/org/neo4j/driver/internal/InternalSessionTest.java index 5ee9f55459..c7aa0e9052 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/InternalSessionTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/InternalSessionTest.java @@ -110,15 +110,5 @@ static List executeVariations() { new ExecuteVariation(true, true, true)); } - private static class ExecuteVariation { - private final boolean readOnly; - private final boolean explicitTxConfig; - private final boolean hasResult; - - private ExecuteVariation(boolean readOnly, boolean explicitTxConfig, boolean hasResult) { - this.readOnly = readOnly; - this.explicitTxConfig = explicitTxConfig; - this.hasResult = hasResult; - } - } + private record ExecuteVariation(boolean readOnly, boolean explicitTxConfig, boolean hasResult) {} } diff --git a/driver/src/test/java/org/neo4j/driver/internal/async/InternalAsyncSessionTest.java b/driver/src/test/java/org/neo4j/driver/internal/async/InternalAsyncSessionTest.java index d6227b7ca1..ff867841e8 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/async/InternalAsyncSessionTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/async/InternalAsyncSessionTest.java @@ -280,7 +280,7 @@ private void testTxIsRetriedUntilSuccessWhenFunctionThrows(AccessMode mode) { session = newSession(connectionProvider, retryLogic); asyncSession = new InternalAsyncSession(session); - var work = spy(new TxWork(42, failures, new SessionExpiredException(""))); + var work = spy(new TxWork(failures, new SessionExpiredException(""))); int answer = executeTransaction(asyncSession, mode, work); assertEquals(42, answer); @@ -314,7 +314,7 @@ private void testTxIsRetriedUntilFailureWhenFunctionThrows(AccessMode mode) { session = newSession(connectionProvider, retryLogic); asyncSession = new InternalAsyncSession(session); - var work = spy(new TxWork(42, failures, new SessionExpiredException("Oh!"))); + var work = spy(new TxWork(failures, new SessionExpiredException("Oh!"))); var e = assertThrows(Exception.class, () -> executeTransaction(asyncSession, mode, work)); @@ -370,18 +370,18 @@ private static class TxWork implements AsyncTransactionWork error; } - TxWork(int result, int timesToThrow, Supplier errorSupplier) { + TxWork(int result, Supplier errorSupplier) { this.result = result; - this.timesToThrow = timesToThrow; + this.timesToThrow = 0; this.errorSupplier = errorSupplier; } @@ -402,13 +402,5 @@ static List executeVariations() { new ExecuteVariation(true, true)); } - private static class ExecuteVariation { - private final boolean readOnly; - private final boolean explicitTxConfig; - - private ExecuteVariation(boolean readOnly, boolean explicitTxConfig) { - this.readOnly = readOnly; - this.explicitTxConfig = explicitTxConfig; - } - } + private record ExecuteVariation(boolean readOnly, boolean explicitTxConfig) {} } diff --git a/driver/src/test/java/org/neo4j/driver/internal/async/InternalAsyncTransactionTest.java b/driver/src/test/java/org/neo4j/driver/internal/async/InternalAsyncTransactionTest.java index 077349b51e..32ba78fbae 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/async/InternalAsyncTransactionTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/async/InternalAsyncTransactionTest.java @@ -63,7 +63,6 @@ class InternalAsyncTransactionTest { private static final String DATABASE = "neo4j"; private Connection connection; - private NetworkSession networkSession; private InternalAsyncTransaction tx; @BeforeEach @@ -75,7 +74,7 @@ void setUp() { context.databaseNameFuture().complete(DatabaseNameUtil.database(DATABASE)); return completedFuture(connection); }); - networkSession = newSession(connectionProvider); + var networkSession = newSession(connectionProvider); var session = new InternalAsyncSession(networkSession); tx = (InternalAsyncTransaction) await(session.beginTransactionAsync()); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/async/connection/EventLoopGroupFactoryTest.java b/driver/src/test/java/org/neo4j/driver/internal/async/connection/EventLoopGroupFactoryTest.java index b1dbb5b1bf..2e32f8a786 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/async/connection/EventLoopGroupFactoryTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/async/connection/EventLoopGroupFactoryTest.java @@ -58,7 +58,7 @@ void shouldCreateEventLoopGroupWithSpecifiedThreadCount() { } @Test - void shouldAssertNotInEventLoopThread() throws Exception { + void shouldAssertNotInEventLoopThread() { eventLoopGroup = EventLoopGroupFactory.newEventLoopGroup(1); // current thread is not an event loop thread, assertion should not throw diff --git a/driver/src/test/java/org/neo4j/driver/internal/async/connection/HandshakeCompletedListenerTest.java b/driver/src/test/java/org/neo4j/driver/internal/async/connection/HandshakeCompletedListenerTest.java index f8f9dc4e8a..0e5b72f067 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/async/connection/HandshakeCompletedListenerTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/async/connection/HandshakeCompletedListenerTest.java @@ -47,7 +47,6 @@ import org.neo4j.driver.internal.async.pool.AuthContext; import org.neo4j.driver.internal.cluster.RoutingContext; import org.neo4j.driver.internal.handlers.HelloResponseHandler; -import org.neo4j.driver.internal.messaging.BoltProtocolVersion; import org.neo4j.driver.internal.messaging.Message; import org.neo4j.driver.internal.messaging.request.HelloMessage; import org.neo4j.driver.internal.messaging.v3.BoltProtocolV3; @@ -96,9 +95,7 @@ void shouldWriteInitializationMessageInBoltV3WhenHandshakeCompleted() { given(authContext.getAuthTokenManager()).willReturn(authTokenManager); setAuthContext(channel, authContext); testWritingOfInitializationMessage( - BoltProtocolV3.VERSION, - new HelloMessage(USER_AGENT, null, authToken().toMap(), Collections.emptyMap(), false, null), - HelloResponseHandler.class); + new HelloMessage(USER_AGENT, null, authToken().toMap(), Collections.emptyMap(), false, null)); then(authContext).should().initiateAuth(authToken); } @@ -134,12 +131,9 @@ void shouldFailPromiseWhenTokenStageCompletesExceptionally() { assertEquals(exception, actualException); } - private void testWritingOfInitializationMessage( - BoltProtocolVersion protocolVersion, - Message expectedMessage, - Class handlerType) { + private void testWritingOfInitializationMessage(Message expectedMessage) { var messageDispatcher = mock(InboundMessageDispatcher.class); - setProtocolVersion(channel, protocolVersion); + setProtocolVersion(channel, BoltProtocolV3.VERSION); setMessageDispatcher(channel, messageDispatcher); var channelInitializedPromise = channel.newPromise(); @@ -157,7 +151,7 @@ private void testWritingOfInitializationMessage( listener.operationComplete(handshakeCompletedPromise); assertTrue(channel.finish()); - verify(messageDispatcher).enqueue(any(handlerType)); + verify(messageDispatcher).enqueue(any((Class) HelloResponseHandler.class)); var outboundMessage = channel.readOutbound(); assertEquals(expectedMessage, outboundMessage); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/async/pool/ConnectionPoolImplIT.java b/driver/src/test/java/org/neo4j/driver/internal/async/pool/ConnectionPoolImplIT.java index 02c4095a2c..3a28722e13 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/async/pool/ConnectionPoolImplIT.java +++ b/driver/src/test/java/org/neo4j/driver/internal/async/pool/ConnectionPoolImplIT.java @@ -84,7 +84,7 @@ void shouldAcquireIdleConnection() { } @Test - void shouldBeAbleToClosePoolInIOWorkerThread() throws Throwable { + void shouldBeAbleToClosePoolInIOWorkerThread() { // In the IO worker thread of a channel obtained from a pool, we shall be able to close the pool. var future = pool.acquire(neo4j.address(), null) .thenCompose(Connection::release) diff --git a/driver/src/test/java/org/neo4j/driver/internal/async/pool/NettyChannelPoolIT.java b/driver/src/test/java/org/neo4j/driver/internal/async/pool/NettyChannelPoolIT.java index 9f8f7259f3..765c3a716d 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/async/pool/NettyChannelPoolIT.java +++ b/driver/src/test/java/org/neo4j/driver/internal/async/pool/NettyChannelPoolIT.java @@ -130,7 +130,7 @@ void shouldFailToAcquireWithWrongCredentials() { } @Test - void shouldAllowAcquireAfterFailures() throws Exception { + void shouldAllowAcquireAfterFailures() { var maxConnections = 2; Map authTokenMap = new HashMap<>(); @@ -151,7 +151,7 @@ void shouldAllowAcquireAfterFailures() throws Exception { } @Test - void shouldLimitNumberOfConcurrentConnections() throws Exception { + void shouldLimitNumberOfConcurrentConnections() { var maxConnections = 5; pool = newPool(neo4j.authTokenManager(), maxConnections); @@ -164,7 +164,7 @@ void shouldLimitNumberOfConcurrentConnections() throws Exception { } @Test - void shouldTrackActiveChannels() throws Exception { + void shouldTrackActiveChannels() { var tracker = new NettyChannelTracker( DevNullMetricsListener.INSTANCE, new ImmediateSchedulingEventExecutor(), DEV_NULL_LOGGING); diff --git a/driver/src/test/java/org/neo4j/driver/internal/cluster/AbstractRoutingProcedureRunnerTest.java b/driver/src/test/java/org/neo4j/driver/internal/cluster/AbstractRoutingProcedureRunnerTest.java index 4f32bab6f9..68b0baaeff 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/cluster/AbstractRoutingProcedureRunnerTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/cluster/AbstractRoutingProcedureRunnerTest.java @@ -44,7 +44,7 @@ abstract class AbstractRoutingProcedureRunnerTest { @Test void shouldReturnFailedResponseOnClientException() { var error = new ClientException("Hi"); - var runner = singleDatabaseRoutingProcedureRunner(RoutingContext.EMPTY, failedFuture(error)); + var runner = singleDatabaseRoutingProcedureRunner(failedFuture(error)); var response = await(runner.run(connection(), defaultDatabase(), Collections.emptySet(), null)); @@ -55,7 +55,7 @@ void shouldReturnFailedResponseOnClientException() { @Test void shouldReturnFailedStageOnError() { var error = new Exception("Hi"); - var runner = singleDatabaseRoutingProcedureRunner(RoutingContext.EMPTY, failedFuture(error)); + var runner = singleDatabaseRoutingProcedureRunner(failedFuture(error)); var e = assertThrows( Exception.class, @@ -65,7 +65,7 @@ void shouldReturnFailedStageOnError() { @Test void shouldReleaseConnectionOnSuccess() { - var runner = singleDatabaseRoutingProcedureRunner(RoutingContext.EMPTY); + var runner = singleDatabaseRoutingProcedureRunner(); var connection = connection(); var response = await(runner.run(connection, defaultDatabase(), Collections.emptySet(), null)); @@ -76,7 +76,7 @@ void shouldReleaseConnectionOnSuccess() { @Test void shouldPropagateReleaseError() { - var runner = singleDatabaseRoutingProcedureRunner(RoutingContext.EMPTY); + var runner = singleDatabaseRoutingProcedureRunner(); var releaseError = new RuntimeException("Release failed"); var connection = connection(failedFuture(releaseError)); @@ -88,10 +88,10 @@ void shouldPropagateReleaseError() { verify(connection).release(); } - abstract SingleDatabaseRoutingProcedureRunner singleDatabaseRoutingProcedureRunner(RoutingContext context); + abstract SingleDatabaseRoutingProcedureRunner singleDatabaseRoutingProcedureRunner(); abstract SingleDatabaseRoutingProcedureRunner singleDatabaseRoutingProcedureRunner( - RoutingContext context, CompletionStage> runProcedureResult); + CompletionStage> runProcedureResult); static Connection connection() { return connection(completedWithNull()); diff --git a/driver/src/test/java/org/neo4j/driver/internal/cluster/ClusterRoutingTableTest.java b/driver/src/test/java/org/neo4j/driver/internal/cluster/ClusterRoutingTableTest.java index 971bfe68d6..ba2ff644aa 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/cluster/ClusterRoutingTableTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/cluster/ClusterRoutingTableTest.java @@ -203,25 +203,25 @@ void shouldTreatOneRouterAsValid() { } @Test - void shouldHaveBeStaleForExpiredTime() throws Throwable { + void shouldHaveBeStaleForExpiredTime() { var routingTable = newRoutingTable(Clock.systemUTC()); assertTrue(routingTable.hasBeenStaleFor(0)); } @Test - void shouldNotHaveBeStaleForUnexpiredTime() throws Throwable { + void shouldNotHaveBeStaleForUnexpiredTime() { var routingTable = newRoutingTable(Clock.systemUTC()); assertFalse(routingTable.hasBeenStaleFor(Duration.ofSeconds(30).toMillis())); } @Test - void shouldDefaultToPreferInitialRouter() throws Throwable { + void shouldDefaultToPreferInitialRouter() { var routingTable = newRoutingTable(); assertTrue(routingTable.preferInitialRouter()); } @Test - void shouldPreferInitialRouterIfNoWriter() throws Throwable { + void shouldPreferInitialRouterIfNoWriter() { var routingTable = newRoutingTable(); routingTable.update(createClusterComposition(EMPTY, EMPTY, EMPTY)); assertTrue(routingTable.preferInitialRouter()); @@ -240,7 +240,7 @@ void shouldPreferInitialRouterIfNoWriter() throws Throwable { } @Test - void shouldNotPreferInitialRouterIfHasWriter() throws Throwable { + void shouldNotPreferInitialRouterIfHasWriter() { var routingTable = newRoutingTable(); routingTable.update(createClusterComposition(EMPTY, singletonList(A), EMPTY)); assertFalse(routingTable.preferInitialRouter()); diff --git a/driver/src/test/java/org/neo4j/driver/internal/cluster/MultiDatabasesRoutingProcedureRunnerTest.java b/driver/src/test/java/org/neo4j/driver/internal/cluster/MultiDatabasesRoutingProcedureRunnerTest.java index bfef6de05d..a92abb4ca9 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/cluster/MultiDatabasesRoutingProcedureRunnerTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/cluster/MultiDatabasesRoutingProcedureRunnerTest.java @@ -90,14 +90,14 @@ void shouldCallGetRoutingTableWithParamOnSystemDatabaseForDatabase(String db) { } @Override - SingleDatabaseRoutingProcedureRunner singleDatabaseRoutingProcedureRunner(RoutingContext context) { - return new TestRoutingProcedureRunner(context); + SingleDatabaseRoutingProcedureRunner singleDatabaseRoutingProcedureRunner() { + return new TestRoutingProcedureRunner(RoutingContext.EMPTY); } @Override SingleDatabaseRoutingProcedureRunner singleDatabaseRoutingProcedureRunner( - RoutingContext context, CompletionStage> runProcedureResult) { - return new TestRoutingProcedureRunner(context, runProcedureResult); + CompletionStage> runProcedureResult) { + return new TestRoutingProcedureRunner(RoutingContext.EMPTY, runProcedureResult); } private static Query generateMultiDatabaseRoutingQuery(Map context, String db) { diff --git a/driver/src/test/java/org/neo4j/driver/internal/cluster/RouteMessageRoutingProcedureRunnerTest.java b/driver/src/test/java/org/neo4j/driver/internal/cluster/RouteMessageRoutingProcedureRunnerTest.java index 2100517220..4a467ae585 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/cluster/RouteMessageRoutingProcedureRunnerTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/cluster/RouteMessageRoutingProcedureRunnerTest.java @@ -33,7 +33,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Set; import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -41,7 +40,6 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; -import org.neo4j.driver.Bookmark; import org.neo4j.driver.Value; import org.neo4j.driver.Values; import org.neo4j.driver.internal.DatabaseName; @@ -88,7 +86,7 @@ var record = response.records().get(0); assertEquals(routingTable.get("ttl"), record.get("ttl")); assertEquals(routingTable.get("servers"), record.get("servers")); - verifyMessageWasWrittenAndFlushed(connection, completableFuture, routingContext, null, databaseName); + verifyMessageWasWrittenAndFlushed(connection, completableFuture, routingContext, databaseName); verify(connection).release(); } @@ -111,7 +109,7 @@ void shouldReturnFailureWhenSomethingHappensGettingTheRoutingTable() { assertThrows(IllegalStateException.class, () -> response.records().size()); verifyMessageWasWrittenAndFlushed( - connection, completableFuture, RoutingContext.EMPTY, null, DatabaseNameUtil.defaultDatabase()); + connection, completableFuture, RoutingContext.EMPTY, DatabaseNameUtil.defaultDatabase()); verify(connection).release(); } @@ -119,7 +117,6 @@ private void verifyMessageWasWrittenAndFlushed( Connection connection, CompletableFuture> completableFuture, RoutingContext routingContext, - Set bookmarks, DatabaseName databaseName) { var context = routingContext.toMap().entrySet().stream() .collect(Collectors.toMap(Map.Entry::getKey, entry -> Values.value(entry.getValue()))); @@ -127,7 +124,7 @@ private void verifyMessageWasWrittenAndFlushed( verify(connection) .writeAndFlush( eq(new RouteMessage( - context, bookmarks, databaseName.databaseName().orElse(null), null)), + context, null, databaseName.databaseName().orElse(null), null)), eq(new RouteMessageResponseHandler(completableFuture))); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/cluster/RoutingProcedureClusterCompositionProviderTest.java b/driver/src/test/java/org/neo4j/driver/internal/cluster/RoutingProcedureClusterCompositionProviderTest.java index 1951ff5ed6..04759351e1 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/cluster/RoutingProcedureClusterCompositionProviderTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/cluster/RoutingProcedureClusterCompositionProviderTest.java @@ -311,7 +311,7 @@ void shouldReturnFailureWhenProcedureRunnerFails() { } @Test - void shouldUseMultiDBProcedureRunnerWhenConnectingWith40Server() throws Throwable { + void shouldUseMultiDBProcedureRunnerWhenConnectingWith40Server() { var procedureRunner = newMultiDBProcedureRunnerMock(); var connection = mock(Connection.class); @@ -325,7 +325,7 @@ void shouldUseMultiDBProcedureRunnerWhenConnectingWith40Server() throws Throwabl } @Test - void shouldUseProcedureRunnerWhenConnectingWith35AndPreviousServers() throws Throwable { + void shouldUseProcedureRunnerWhenConnectingWith35AndPreviousServers() { var procedureRunner = newProcedureRunnerMock(); var connection = mock(Connection.class); @@ -339,7 +339,7 @@ void shouldUseProcedureRunnerWhenConnectingWith35AndPreviousServers() throws Thr } @Test - void shouldUseRouteMessageProcedureRunnerWhenConnectingWithProtocol43() throws Throwable { + void shouldUseRouteMessageProcedureRunnerWhenConnectingWithProtocol43() { var procedureRunner = newRouteMessageRoutingProcedureRunnerMock(); var connection = mock(Connection.class); diff --git a/driver/src/test/java/org/neo4j/driver/internal/cluster/RoutingTableHandlerTest.java b/driver/src/test/java/org/neo4j/driver/internal/cluster/RoutingTableHandlerTest.java index bf83c110b8..451bf41762 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/cluster/RoutingTableHandlerTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/cluster/RoutingTableHandlerTest.java @@ -188,7 +188,7 @@ public Optional getRoutingTableHandler(DatabaseName databas } @Test - void shouldRemoveRoutingTableHandlerIfFailedToLookup() throws Throwable { + void shouldRemoveRoutingTableHandlerIfFailedToLookup() { // Given RoutingTable routingTable = new ClusterRoutingTable(defaultDatabase(), new FakeClock()); diff --git a/driver/src/test/java/org/neo4j/driver/internal/cluster/SingleDatabaseRoutingProcedureRunnerTest.java b/driver/src/test/java/org/neo4j/driver/internal/cluster/SingleDatabaseRoutingProcedureRunnerTest.java index 22d8a9ead1..70fa4ebb82 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/cluster/SingleDatabaseRoutingProcedureRunnerTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/cluster/SingleDatabaseRoutingProcedureRunnerTest.java @@ -91,20 +91,20 @@ void shouldCallGetRoutingTableWithParam() { @ParameterizedTest @MethodSource("invalidDatabaseNames") - void shouldErrorWhenDatabaseIsNotAbsent(String db) throws Throwable { + void shouldErrorWhenDatabaseIsNotAbsent(String db) { var runner = new TestRoutingProcedureRunner(RoutingContext.EMPTY); assertThrows( FatalDiscoveryException.class, () -> await(runner.run(connection(), database(db), Collections.emptySet(), null))); } - SingleDatabaseRoutingProcedureRunner singleDatabaseRoutingProcedureRunner(RoutingContext context) { - return new TestRoutingProcedureRunner(context); + SingleDatabaseRoutingProcedureRunner singleDatabaseRoutingProcedureRunner() { + return new TestRoutingProcedureRunner(RoutingContext.EMPTY); } SingleDatabaseRoutingProcedureRunner singleDatabaseRoutingProcedureRunner( - RoutingContext context, CompletionStage> runProcedureResult) { - return new TestRoutingProcedureRunner(context, runProcedureResult); + CompletionStage> runProcedureResult) { + return new TestRoutingProcedureRunner(RoutingContext.EMPTY, runProcedureResult); } private static Stream invalidDatabaseNames() { diff --git a/driver/src/test/java/org/neo4j/driver/internal/handlers/ChannelReleasingResetResponseHandlerTest.java b/driver/src/test/java/org/neo4j/driver/internal/handlers/ChannelReleasingResetResponseHandlerTest.java index b089f7aa37..5b4f35382a 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/handlers/ChannelReleasingResetResponseHandlerTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/handlers/ChannelReleasingResetResponseHandlerTest.java @@ -58,7 +58,7 @@ void shouldReleaseChannelOnSuccess() { handler.onSuccess(emptyMap()); - verifyLastUsedTimestamp(5); + verifyLastUsedTimestamp(); verify(pool).release(eq(channel)); assertTrue(releaseFuture.isDone()); assertFalse(releaseFuture.isCompletedExceptionally()); @@ -80,8 +80,8 @@ void shouldCloseAndReleaseChannelOnFailure() { assertFalse(releaseFuture.isCompletedExceptionally()); } - private void verifyLastUsedTimestamp(int expectedValue) { - assertEquals(expectedValue, lastUsedTimestamp(channel).intValue()); + private void verifyLastUsedTimestamp() { + assertEquals(5, lastUsedTimestamp(channel).intValue()); } private ChannelReleasingResetResponseHandler newHandler( diff --git a/driver/src/test/java/org/neo4j/driver/internal/handlers/RouteMessageResponseHandlerTest.java b/driver/src/test/java/org/neo4j/driver/internal/handlers/RouteMessageResponseHandlerTest.java index 3bff40f60e..4139fcede6 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/handlers/RouteMessageResponseHandlerTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/handlers/RouteMessageResponseHandlerTest.java @@ -35,7 +35,7 @@ class RouteMessageResponseHandlerTest { @Test - void onSuccessShouldSuccessFullyCompleteFutureWithRoutingTable() throws Exception { + void onSuccessShouldSuccessFullyCompleteFutureWithRoutingTable() { var completableFuture = new CompletableFuture>(); var responseHandler = new RouteMessageResponseHandler(completableFuture); var routingTable = getRoutingTable(); @@ -47,7 +47,7 @@ void onSuccessShouldSuccessFullyCompleteFutureWithRoutingTable() throws Exceptio } @Test - void onSuccessShouldExceptionallyCompleteFutureWhenMetadataDoesNotHaveRoutingTable() throws Exception { + void onSuccessShouldExceptionallyCompleteFutureWhenMetadataDoesNotHaveRoutingTable() { var completableFuture = new CompletableFuture>(); var responseHandler = new RouteMessageResponseHandler(completableFuture); Map metadata = new HashMap<>(); 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 f28ed8f777..710fda1530 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 @@ -120,7 +120,7 @@ void shouldReturnKeysWhenSucceeded() { @Test void shouldReturnResultAvailableAfterWhenSucceededV3() { - testResultAvailableAfterOnSuccess("t_first", BoltProtocolV3.METADATA_EXTRACTOR); + testResultAvailableAfterOnSuccess(); } @Test @@ -192,10 +192,10 @@ void shouldReleaseConnectionImmediatelyAndFailOnConnectionReadTimeoutExceptionFa verify(connection, never()).release(); } - private static void testResultAvailableAfterOnSuccess(String key, MetadataExtractor metadataExtractor) { - var handler = newHandler(metadataExtractor); + private static void testResultAvailableAfterOnSuccess() { + var handler = newHandler(BoltProtocolV3.METADATA_EXTRACTOR); - handler.onSuccess(singletonMap(key, value(42))); + handler.onSuccess(singletonMap("t_first", value(42))); assertEquals(42L, handler.resultAvailableAfter()); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/handlers/pulln/BasicPullResponseHandlerTestBase.java b/driver/src/test/java/org/neo4j/driver/internal/handlers/pulln/BasicPullResponseHandlerTestBase.java index d052449271..6c58fd1f44 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/handlers/pulln/BasicPullResponseHandlerTestBase.java +++ b/driver/src/test/java/org/neo4j/driver/internal/handlers/pulln/BasicPullResponseHandlerTestBase.java @@ -57,13 +57,13 @@ protected abstract BasicPullResponseHandler newResponseHandlerWithStatus( // on success with summary @ParameterizedTest @MethodSource("allStatus") - void shouldSuccessWithSummary(BasicPullResponseHandler.State state) throws Throwable { + void shouldSuccessWithSummary(BasicPullResponseHandler.State state) { shouldHandleSuccessWithSummary(state); } // on success with has_more @Test - void shouldRequestMoreWithHasMore() throws Throwable { + void shouldRequestMoreWithHasMore() { // Given a handler in streaming state var conn = mockConnection(); var handler = newResponseHandlerWithStatus(conn, BasicPullResponseHandler.State.STREAMING_STATE); @@ -79,7 +79,7 @@ void shouldRequestMoreWithHasMore() throws Throwable { } @Test - void shouldInformSummaryConsumerSuccessWithHasMore() throws Throwable { + void shouldInformSummaryConsumerSuccessWithHasMore() { // Given var conn = mockConnection(); @SuppressWarnings("unchecked") @@ -100,7 +100,7 @@ void shouldInformSummaryConsumerSuccessWithHasMore() throws Throwable { } @Test - void shouldDiscardIfStreamingIsCanceled() throws Throwable { + void shouldDiscardIfStreamingIsCanceled() { // Given a handler in streaming state var conn = mockConnection(); var handler = newResponseHandlerWithStatus(conn, BasicPullResponseHandler.State.CANCELLED_STATE); @@ -114,13 +114,13 @@ void shouldDiscardIfStreamingIsCanceled() throws Throwable { // on failure @ParameterizedTest @MethodSource("allStatus") - void shouldErrorToRecordAndSummaryConsumer(BasicPullResponseHandler.State state) throws Throwable { + void shouldErrorToRecordAndSummaryConsumer(BasicPullResponseHandler.State state) { shouldHandleFailure(state); } // on record @Test - void shouldReportRecordInStreaming() throws Throwable { + void shouldReportRecordInStreaming() { // Given a handler in streaming state var conn = mockConnection(); @SuppressWarnings("unchecked") @@ -142,7 +142,7 @@ void shouldReportRecordInStreaming() throws Throwable { @ParameterizedTest @MethodSource("allStatusExceptStreaming") - void shouldNotReportRecordWhenNotStreaming(BasicPullResponseHandler.State state) throws Throwable { + void shouldNotReportRecordWhenNotStreaming(BasicPullResponseHandler.State state) { // Given a handler in streaming state var conn = mockConnection(); @SuppressWarnings("unchecked") @@ -162,7 +162,7 @@ void shouldNotReportRecordWhenNotStreaming(BasicPullResponseHandler.State state) // request @Test - void shouldStayInStreaming() throws Throwable { + void shouldStayInStreaming() { // Given var conn = mockConnection(); var handler = newResponseHandlerWithStatus(conn, BasicPullResponseHandler.State.STREAMING_STATE); @@ -175,7 +175,7 @@ void shouldStayInStreaming() throws Throwable { } @Test - void shouldPullAndSwitchStreamingInReady() throws Throwable { + void shouldPullAndSwitchStreamingInReady() { // Given var conn = mockConnection(); var handler = newResponseHandlerWithStatus(conn, BasicPullResponseHandler.State.READY_STATE); @@ -190,7 +190,7 @@ void shouldPullAndSwitchStreamingInReady() throws Throwable { // cancel @Test - void shouldStayInCancel() throws Throwable { + void shouldStayInCancel() { // Given var conn = mockConnection(); var handler = newResponseHandlerWithStatus(conn, BasicPullResponseHandler.State.CANCELLED_STATE); @@ -204,7 +204,7 @@ void shouldStayInCancel() throws Throwable { } @Test - void shouldSwitchFromStreamingToCancel() throws Throwable { + void shouldSwitchFromStreamingToCancel() { // Given var conn = mockConnection(); var handler = newResponseHandlerWithStatus(conn, BasicPullResponseHandler.State.STREAMING_STATE); @@ -218,7 +218,7 @@ void shouldSwitchFromStreamingToCancel() throws Throwable { } @Test - void shouldSwitchFromReadyToCancel() throws Throwable { + void shouldSwitchFromReadyToCancel() { // Given var conn = mockConnection(); var handler = newResponseHandlerWithStatus(conn, BasicPullResponseHandler.State.READY_STATE); diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/v3/BoltProtocolV3Test.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/v3/BoltProtocolV3Test.java index 5513eb0e04..1f0a69750b 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/v3/BoltProtocolV3Test.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/v3/BoltProtocolV3Test.java @@ -328,14 +328,13 @@ void shouldRunInAutoCommitTransactionWithBookmarkAndConfigAndWaitForSuccessRunRe @ParameterizedTest @EnumSource(AccessMode.class) - void shouldRunInAutoCommitTransactionAndWaitForFailureRunResponse(AccessMode mode) throws Exception { + void shouldRunInAutoCommitTransactionAndWaitForFailureRunResponse(AccessMode mode) { testFailedRunInAutoCommitTxWithWaitingForResponse(Collections.emptySet(), TransactionConfig.empty(), mode); } @ParameterizedTest @EnumSource(AccessMode.class) - void shouldRunInAutoCommitTransactionWithBookmarkAndConfigAndWaitForFailureRunResponse(AccessMode mode) - throws Exception { + void shouldRunInAutoCommitTransactionWithBookmarkAndConfigAndWaitForFailureRunResponse(AccessMode mode) { testFailedRunInAutoCommitTxWithWaitingForResponse( Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx163")), txConfig, mode); } @@ -525,7 +524,7 @@ protected void testSuccessfulRunInAutoCommitTxWithWaitingForResponse( } protected void testFailedRunInAutoCommitTxWithWaitingForResponse( - Set bookmarks, TransactionConfig config, AccessMode mode) throws Exception { + Set bookmarks, TransactionConfig config, AccessMode mode) { var connection = connectionMock(mode, protocol); @SuppressWarnings("unchecked") Consumer bookmarkConsumer = mock(Consumer.class); @@ -584,13 +583,5 @@ private static ResponseHandlers verifyRunInvoked( return new ResponseHandlers(runHandlerCaptor.getValue(), pullAllHandlerCaptor.getValue()); } - private static class ResponseHandlers { - final ResponseHandler runHandler; - final ResponseHandler pullAllHandler; - - ResponseHandlers(ResponseHandler runHandler, ResponseHandler pullAllHandler) { - this.runHandler = runHandler; - this.pullAllHandler = pullAllHandler; - } - } + private record ResponseHandlers(ResponseHandler runHandler, ResponseHandler pullAllHandler) {} } diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/v4/BoltProtocolV4Test.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/v4/BoltProtocolV4Test.java index f9d1fc624e..aefd1dc04e 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/v4/BoltProtocolV4Test.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/v4/BoltProtocolV4Test.java @@ -322,14 +322,13 @@ void shouldRunInAutoCommitTransactionWithBookmarkAndConfigAndWaitForSuccessRunRe @ParameterizedTest @EnumSource(AccessMode.class) - void shouldRunInAutoCommitTransactionAndWaitForFailureRunResponse(AccessMode mode) throws Exception { + void shouldRunInAutoCommitTransactionAndWaitForFailureRunResponse(AccessMode mode) { testFailedRunInAutoCommitTxWithWaitingForResponse(Collections.emptySet(), TransactionConfig.empty(), mode); } @ParameterizedTest @EnumSource(AccessMode.class) - void shouldRunInAutoCommitTransactionWithBookmarkAndConfigAndWaitForFailureRunResponse(AccessMode mode) - throws Exception { + void shouldRunInAutoCommitTransactionWithBookmarkAndConfigAndWaitForFailureRunResponse(AccessMode mode) { testFailedRunInAutoCommitTxWithWaitingForResponse( Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx163")), txConfig, mode); } @@ -401,7 +400,7 @@ private static InternalAuthToken dummyAuthToken() { } private void testFailedRunInAutoCommitTxWithWaitingForResponse( - Set bookmarks, TransactionConfig config, AccessMode mode) throws Exception { + Set bookmarks, TransactionConfig config, AccessMode mode) { // Given var connection = connectionMock(mode, protocol); @SuppressWarnings("unchecked") @@ -554,8 +553,7 @@ private void testDatabaseNameSupport(boolean autoCommitTx) { var txStage = protocol.beginTransaction( connection, Collections.emptySet(), TransactionConfig.empty(), null, null, Logging.none()); await(txStage); - verifyBeginInvoked( - connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); + verifyBeginInvoked(connection, Collections.emptySet(), TransactionConfig.empty(), database("foo")); } } @@ -588,13 +586,10 @@ private ResponseHandler verifyRunInvoked(Connection connection, RunWithMetadataM } private void verifyBeginInvoked( - Connection connection, - Set bookmarks, - TransactionConfig config, - AccessMode mode, - DatabaseName databaseName) { + Connection connection, Set bookmarks, TransactionConfig config, DatabaseName databaseName) { var beginHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); - var beginMessage = new BeginMessage(bookmarks, config, databaseName, mode, null, null, null, Logging.none()); + var beginMessage = + new BeginMessage(bookmarks, config, databaseName, AccessMode.WRITE, null, null, null, Logging.none()); verify(connection).writeAndFlush(eq(beginMessage), beginHandlerCaptor.capture()); assertThat(beginHandlerCaptor.getValue(), instanceOf(BeginTxResponseHandler.class)); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/v41/BoltProtocolV41Test.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/v41/BoltProtocolV41Test.java index 8048ec9cb9..f1e5894cf4 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/v41/BoltProtocolV41Test.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/v41/BoltProtocolV41Test.java @@ -326,14 +326,13 @@ void shouldRunInAutoCommitTransactionWithBookmarkAndConfigAndWaitForSuccessRunRe @ParameterizedTest @EnumSource(AccessMode.class) - void shouldRunInAutoCommitTransactionAndWaitForFailureRunResponse(AccessMode mode) throws Exception { + void shouldRunInAutoCommitTransactionAndWaitForFailureRunResponse(AccessMode mode) { testFailedRunInAutoCommitTxWithWaitingForResponse(Collections.emptySet(), TransactionConfig.empty(), mode); } @ParameterizedTest @EnumSource(AccessMode.class) - void shouldRunInAutoCommitTransactionWithBookmarkAndConfigAndWaitForFailureRunResponse(AccessMode mode) - throws Exception { + void shouldRunInAutoCommitTransactionWithBookmarkAndConfigAndWaitForFailureRunResponse(AccessMode mode) { testFailedRunInAutoCommitTxWithWaitingForResponse( Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx163")), txConfig, mode); } @@ -397,7 +396,7 @@ private Class expectedMessageFormatType() { } private void testFailedRunInAutoCommitTxWithWaitingForResponse( - Set bookmarks, TransactionConfig config, AccessMode mode) throws Exception { + Set bookmarks, TransactionConfig config, AccessMode mode) { // Given var connection = connectionMock(mode, protocol); @SuppressWarnings("unchecked") @@ -550,8 +549,7 @@ private void testDatabaseNameSupport(boolean autoCommitTx) { var txStage = protocol.beginTransaction( connection, Collections.emptySet(), TransactionConfig.empty(), null, null, Logging.none()); await(txStage); - verifyBeginInvoked( - connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); + verifyBeginInvoked(connection, Collections.emptySet(), TransactionConfig.empty(), database("foo")); } } @@ -584,13 +582,10 @@ private ResponseHandler verifyRunInvoked(Connection connection, RunWithMetadataM } private void verifyBeginInvoked( - Connection connection, - Set bookmarks, - TransactionConfig config, - AccessMode mode, - DatabaseName databaseName) { + Connection connection, Set bookmarks, TransactionConfig config, DatabaseName databaseName) { var beginHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); - var beginMessage = new BeginMessage(bookmarks, config, databaseName, mode, null, null, null, Logging.none()); + var beginMessage = + new BeginMessage(bookmarks, config, databaseName, AccessMode.WRITE, null, null, null, Logging.none()); verify(connection).writeAndFlush(eq(beginMessage), beginHandlerCaptor.capture()); assertThat(beginHandlerCaptor.getValue(), instanceOf(BeginTxResponseHandler.class)); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/v42/BoltProtocolV42Test.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/v42/BoltProtocolV42Test.java index f09e6e9f09..d23becca0d 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/v42/BoltProtocolV42Test.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/v42/BoltProtocolV42Test.java @@ -326,14 +326,13 @@ void shouldRunInAutoCommitTransactionWithBookmarkAndConfigAndWaitForSuccessRunRe @ParameterizedTest @EnumSource(AccessMode.class) - void shouldRunInAutoCommitTransactionAndWaitForFailureRunResponse(AccessMode mode) throws Exception { + void shouldRunInAutoCommitTransactionAndWaitForFailureRunResponse(AccessMode mode) { testFailedRunInAutoCommitTxWithWaitingForResponse(Collections.emptySet(), TransactionConfig.empty(), mode); } @ParameterizedTest @EnumSource(AccessMode.class) - void shouldRunInAutoCommitTransactionWithBookmarkAndConfigAndWaitForFailureRunResponse(AccessMode mode) - throws Exception { + void shouldRunInAutoCommitTransactionWithBookmarkAndConfigAndWaitForFailureRunResponse(AccessMode mode) { testFailedRunInAutoCommitTxWithWaitingForResponse( Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx163")), txConfig, mode); } @@ -397,7 +396,7 @@ private Class expectedMessageFormatType() { } private void testFailedRunInAutoCommitTxWithWaitingForResponse( - Set bookmarks, TransactionConfig config, AccessMode mode) throws Exception { + Set bookmarks, TransactionConfig config, AccessMode mode) { // Given var connection = connectionMock(mode, protocol); @SuppressWarnings("unchecked") @@ -551,8 +550,7 @@ private void testDatabaseNameSupport(boolean autoCommitTx) { var txStage = protocol.beginTransaction( connection, Collections.emptySet(), TransactionConfig.empty(), null, null, Logging.none()); await(txStage); - verifyBeginInvoked( - connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); + verifyBeginInvoked(connection, Collections.emptySet(), TransactionConfig.empty(), database("foo")); } } @@ -585,13 +583,10 @@ private ResponseHandler verifyRunInvoked(Connection connection, RunWithMetadataM } private void verifyBeginInvoked( - Connection connection, - Set bookmarks, - TransactionConfig config, - AccessMode mode, - DatabaseName databaseName) { + Connection connection, Set bookmarks, TransactionConfig config, DatabaseName databaseName) { var beginHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); - var beginMessage = new BeginMessage(bookmarks, config, databaseName, mode, null, null, null, Logging.none()); + var beginMessage = + new BeginMessage(bookmarks, config, databaseName, AccessMode.WRITE, null, null, null, Logging.none()); verify(connection).writeAndFlush(eq(beginMessage), beginHandlerCaptor.capture()); assertThat(beginHandlerCaptor.getValue(), instanceOf(BeginTxResponseHandler.class)); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/v43/BoltProtocolV43Test.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/v43/BoltProtocolV43Test.java index 6b3981fb7b..0be8bbad0e 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/v43/BoltProtocolV43Test.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/v43/BoltProtocolV43Test.java @@ -325,14 +325,13 @@ void shouldRunInAutoCommitTransactionWithBookmarkAndConfigAndWaitForSuccessRunRe @ParameterizedTest @EnumSource(AccessMode.class) - void shouldRunInAutoCommitTransactionAndWaitForFailureRunResponse(AccessMode mode) throws Exception { + void shouldRunInAutoCommitTransactionAndWaitForFailureRunResponse(AccessMode mode) { testFailedRunInAutoCommitTxWithWaitingForResponse(Collections.emptySet(), TransactionConfig.empty(), mode); } @ParameterizedTest @EnumSource(AccessMode.class) - void shouldRunInAutoCommitTransactionWithBookmarkAndConfigAndWaitForFailureRunResponse(AccessMode mode) - throws Exception { + void shouldRunInAutoCommitTransactionWithBookmarkAndConfigAndWaitForFailureRunResponse(AccessMode mode) { testFailedRunInAutoCommitTxWithWaitingForResponse( Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx163")), txConfig, mode); } @@ -396,7 +395,7 @@ private Class expectedMessageFormatType() { } private void testFailedRunInAutoCommitTxWithWaitingForResponse( - Set bookmarks, TransactionConfig config, AccessMode mode) throws Exception { + Set bookmarks, TransactionConfig config, AccessMode mode) { // Given var connection = connectionMock(mode, protocol); @SuppressWarnings("unchecked") @@ -553,8 +552,7 @@ private void testDatabaseNameSupport(boolean autoCommitTx) { var txStage = protocol.beginTransaction( connection, Collections.emptySet(), TransactionConfig.empty(), null, null, Logging.none()); await(txStage); - verifyBeginInvoked( - connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); + verifyBeginInvoked(connection, Collections.emptySet(), TransactionConfig.empty(), database("foo")); } } @@ -587,13 +585,10 @@ private ResponseHandler verifyRunInvoked(Connection connection, RunWithMetadataM } private void verifyBeginInvoked( - Connection connection, - Set bookmarks, - TransactionConfig config, - AccessMode mode, - DatabaseName databaseName) { + Connection connection, Set bookmarks, TransactionConfig config, DatabaseName databaseName) { var beginHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); - var beginMessage = new BeginMessage(bookmarks, config, databaseName, mode, null, null, null, Logging.none()); + var beginMessage = + new BeginMessage(bookmarks, config, databaseName, AccessMode.WRITE, null, null, null, Logging.none()); verify(connection).writeAndFlush(eq(beginMessage), beginHandlerCaptor.capture()); assertThat(beginHandlerCaptor.getValue(), instanceOf(BeginTxResponseHandler.class)); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/v44/BoltProtocolV44Test.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/v44/BoltProtocolV44Test.java index 55bf9593ef..86f581d289 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/v44/BoltProtocolV44Test.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/v44/BoltProtocolV44Test.java @@ -325,14 +325,13 @@ void shouldRunInAutoCommitTransactionWithBookmarkAndConfigAndWaitForSuccessRunRe @ParameterizedTest @EnumSource(AccessMode.class) - void shouldRunInAutoCommitTransactionAndWaitForFailureRunResponse(AccessMode mode) throws Exception { + void shouldRunInAutoCommitTransactionAndWaitForFailureRunResponse(AccessMode mode) { testFailedRunInAutoCommitTxWithWaitingForResponse(Collections.emptySet(), TransactionConfig.empty(), mode); } @ParameterizedTest @EnumSource(AccessMode.class) - void shouldRunInAutoCommitTransactionWithBookmarkAndConfigAndWaitForFailureRunResponse(AccessMode mode) - throws Exception { + void shouldRunInAutoCommitTransactionWithBookmarkAndConfigAndWaitForFailureRunResponse(AccessMode mode) { testFailedRunInAutoCommitTxWithWaitingForResponse( Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx163")), txConfig, mode); } @@ -551,8 +550,7 @@ private void testDatabaseNameSupport(boolean autoCommitTx) { var txStage = protocol.beginTransaction( connection, Collections.emptySet(), TransactionConfig.empty(), null, null, Logging.none()); await(txStage); - verifyBeginInvoked( - connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); + verifyBeginInvoked(connection, Collections.emptySet(), TransactionConfig.empty(), database("foo")); } } @@ -585,13 +583,10 @@ private ResponseHandler verifyRunInvoked(Connection connection, RunWithMetadataM } private void verifyBeginInvoked( - Connection connection, - Set bookmarks, - TransactionConfig config, - AccessMode mode, - DatabaseName databaseName) { + Connection connection, Set bookmarks, TransactionConfig config, DatabaseName databaseName) { var beginHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); - var beginMessage = new BeginMessage(bookmarks, config, databaseName, mode, null, null, null, Logging.none()); + var beginMessage = + new BeginMessage(bookmarks, config, databaseName, AccessMode.WRITE, null, null, null, Logging.none()); verify(connection).writeAndFlush(eq(beginMessage), beginHandlerCaptor.capture()); assertThat(beginHandlerCaptor.getValue(), instanceOf(BeginTxResponseHandler.class)); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/v5/BoltProtocolV5Test.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/v5/BoltProtocolV5Test.java index 927de14464..e952133ddc 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/v5/BoltProtocolV5Test.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/v5/BoltProtocolV5Test.java @@ -325,14 +325,13 @@ void shouldRunInAutoCommitTransactionWithBookmarkAndConfigAndWaitForSuccessRunRe @ParameterizedTest @EnumSource(AccessMode.class) - void shouldRunInAutoCommitTransactionAndWaitForFailureRunResponse(AccessMode mode) throws Exception { + void shouldRunInAutoCommitTransactionAndWaitForFailureRunResponse(AccessMode mode) { testFailedRunInAutoCommitTxWithWaitingForResponse(Collections.emptySet(), TransactionConfig.empty(), mode); } @ParameterizedTest @EnumSource(AccessMode.class) - void shouldRunInAutoCommitTransactionWithBookmarkAndConfigAndWaitForFailureRunResponse(AccessMode mode) - throws Exception { + void shouldRunInAutoCommitTransactionWithBookmarkAndConfigAndWaitForFailureRunResponse(AccessMode mode) { testFailedRunInAutoCommitTxWithWaitingForResponse( Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx163")), txConfig, mode); } @@ -396,7 +395,7 @@ private Class expectedMessageFormatType() { } private void testFailedRunInAutoCommitTxWithWaitingForResponse( - Set bookmarks, TransactionConfig config, AccessMode mode) throws Exception { + Set bookmarks, TransactionConfig config, AccessMode mode) { // Given var connection = connectionMock(mode, protocol); @SuppressWarnings("unchecked") @@ -551,8 +550,7 @@ private void testDatabaseNameSupport(boolean autoCommitTx) { var txStage = protocol.beginTransaction( connection, Collections.emptySet(), TransactionConfig.empty(), null, null, Logging.none()); await(txStage); - verifyBeginInvoked( - connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); + verifyBeginInvoked(connection, Collections.emptySet(), TransactionConfig.empty(), database("foo")); } } @@ -585,13 +583,10 @@ private ResponseHandler verifyRunInvoked(Connection connection, RunWithMetadataM } private void verifyBeginInvoked( - Connection connection, - Set bookmarks, - TransactionConfig config, - AccessMode mode, - DatabaseName databaseName) { + Connection connection, Set bookmarks, TransactionConfig config, DatabaseName databaseName) { var beginHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); - var beginMessage = new BeginMessage(bookmarks, config, databaseName, mode, null, null, null, Logging.none()); + var beginMessage = + new BeginMessage(bookmarks, config, databaseName, AccessMode.WRITE, null, null, null, Logging.none()); verify(connection).writeAndFlush(eq(beginMessage), beginHandlerCaptor.capture()); assertThat(beginHandlerCaptor.getValue(), instanceOf(BeginTxResponseHandler.class)); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/v51/BoltProtocolV51Test.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/v51/BoltProtocolV51Test.java index ecf8cdd245..6abb530e15 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/v51/BoltProtocolV51Test.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/v51/BoltProtocolV51Test.java @@ -297,14 +297,13 @@ void shouldRunInAutoCommitTransactionWithBookmarkAndConfigAndWaitForSuccessRunRe @ParameterizedTest @EnumSource(AccessMode.class) - void shouldRunInAutoCommitTransactionAndWaitForFailureRunResponse(AccessMode mode) throws Exception { + void shouldRunInAutoCommitTransactionAndWaitForFailureRunResponse(AccessMode mode) { testFailedRunInAutoCommitTxWithWaitingForResponse(Collections.emptySet(), TransactionConfig.empty(), mode); } @ParameterizedTest @EnumSource(AccessMode.class) - void shouldRunInAutoCommitTransactionWithBookmarkAndConfigAndWaitForFailureRunResponse(AccessMode mode) - throws Exception { + void shouldRunInAutoCommitTransactionWithBookmarkAndConfigAndWaitForFailureRunResponse(AccessMode mode) { testFailedRunInAutoCommitTxWithWaitingForResponse( Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx163")), txConfig, mode); } @@ -368,7 +367,7 @@ private Class expectedMessageFormatType() { } private void testFailedRunInAutoCommitTxWithWaitingForResponse( - Set bookmarks, TransactionConfig config, AccessMode mode) throws Exception { + Set bookmarks, TransactionConfig config, AccessMode mode) { // Given var connection = connectionMock(mode, protocol); @SuppressWarnings("unchecked") @@ -523,8 +522,7 @@ private void testDatabaseNameSupport(boolean autoCommitTx) { var txStage = protocol.beginTransaction( connection, Collections.emptySet(), TransactionConfig.empty(), null, null, Logging.none()); await(txStage); - verifyBeginInvoked( - connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); + verifyBeginInvoked(connection, Collections.emptySet(), TransactionConfig.empty(), database("foo")); } } @@ -557,13 +555,10 @@ private ResponseHandler verifyRunInvoked(Connection connection, RunWithMetadataM } private void verifyBeginInvoked( - Connection connection, - Set bookmarks, - TransactionConfig config, - AccessMode mode, - DatabaseName databaseName) { + Connection connection, Set bookmarks, TransactionConfig config, DatabaseName databaseName) { var beginHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); - var beginMessage = new BeginMessage(bookmarks, config, databaseName, mode, null, null, null, Logging.none()); + var beginMessage = + new BeginMessage(bookmarks, config, databaseName, AccessMode.WRITE, null, null, null, Logging.none()); verify(connection).writeAndFlush(eq(beginMessage), beginHandlerCaptor.capture()); assertThat(beginHandlerCaptor.getValue(), instanceOf(BeginTxResponseHandler.class)); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/v52/BoltProtocolV52Test.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/v52/BoltProtocolV52Test.java index 9618d2a7dd..a286e4ef4a 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/v52/BoltProtocolV52Test.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/v52/BoltProtocolV52Test.java @@ -298,14 +298,13 @@ void shouldRunInAutoCommitTransactionWithBookmarkAndConfigAndWaitForSuccessRunRe @ParameterizedTest @EnumSource(AccessMode.class) - void shouldRunInAutoCommitTransactionAndWaitForFailureRunResponse(AccessMode mode) throws Exception { + void shouldRunInAutoCommitTransactionAndWaitForFailureRunResponse(AccessMode mode) { testFailedRunInAutoCommitTxWithWaitingForResponse(Collections.emptySet(), TransactionConfig.empty(), mode); } @ParameterizedTest @EnumSource(AccessMode.class) - void shouldRunInAutoCommitTransactionWithBookmarkAndConfigAndWaitForFailureRunResponse(AccessMode mode) - throws Exception { + void shouldRunInAutoCommitTransactionWithBookmarkAndConfigAndWaitForFailureRunResponse(AccessMode mode) { testFailedRunInAutoCommitTxWithWaitingForResponse( Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx163")), txConfig, mode); } @@ -369,7 +368,7 @@ private Class expectedMessageFormatType() { } private void testFailedRunInAutoCommitTxWithWaitingForResponse( - Set bookmarks, TransactionConfig config, AccessMode mode) throws Exception { + Set bookmarks, TransactionConfig config, AccessMode mode) { // Given var connection = connectionMock(mode, protocol); @SuppressWarnings("unchecked") @@ -524,8 +523,7 @@ private void testDatabaseNameSupport(boolean autoCommitTx) { var txStage = protocol.beginTransaction( connection, Collections.emptySet(), TransactionConfig.empty(), null, null, Logging.none()); await(txStage); - verifyBeginInvoked( - connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); + verifyBeginInvoked(connection, Collections.emptySet(), TransactionConfig.empty(), database("foo")); } } @@ -558,13 +556,10 @@ private ResponseHandler verifyRunInvoked(Connection connection, RunWithMetadataM } private void verifyBeginInvoked( - Connection connection, - Set bookmarks, - TransactionConfig config, - AccessMode mode, - DatabaseName databaseName) { + Connection connection, Set bookmarks, TransactionConfig config, DatabaseName databaseName) { var beginHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); - var beginMessage = new BeginMessage(bookmarks, config, databaseName, mode, null, null, null, Logging.none()); + var beginMessage = + new BeginMessage(bookmarks, config, databaseName, AccessMode.WRITE, null, null, null, Logging.none()); verify(connection).writeAndFlush(eq(beginMessage), beginHandlerCaptor.capture()); assertThat(beginHandlerCaptor.getValue(), instanceOf(BeginTxResponseHandler.class)); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/messaging/v53/BoltProtocolV53Test.java b/driver/src/test/java/org/neo4j/driver/internal/messaging/v53/BoltProtocolV53Test.java index 07bec4f486..855c204824 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/messaging/v53/BoltProtocolV53Test.java +++ b/driver/src/test/java/org/neo4j/driver/internal/messaging/v53/BoltProtocolV53Test.java @@ -305,14 +305,13 @@ void shouldRunInAutoCommitTransactionWithBookmarkAndConfigAndWaitForSuccessRunRe @ParameterizedTest @EnumSource(AccessMode.class) - void shouldRunInAutoCommitTransactionAndWaitForFailureRunResponse(AccessMode mode) throws Exception { + void shouldRunInAutoCommitTransactionAndWaitForFailureRunResponse(AccessMode mode) { testFailedRunInAutoCommitTxWithWaitingForResponse(Collections.emptySet(), TransactionConfig.empty(), mode); } @ParameterizedTest @EnumSource(AccessMode.class) - void shouldRunInAutoCommitTransactionWithBookmarkAndConfigAndWaitForFailureRunResponse(AccessMode mode) - throws Exception { + void shouldRunInAutoCommitTransactionWithBookmarkAndConfigAndWaitForFailureRunResponse(AccessMode mode) { testFailedRunInAutoCommitTxWithWaitingForResponse( Collections.singleton(InternalBookmark.parse("neo4j:bookmark:v1:tx163")), txConfig, mode); } @@ -376,7 +375,7 @@ private Class expectedMessageFormatType() { } private void testFailedRunInAutoCommitTxWithWaitingForResponse( - Set bookmarks, TransactionConfig config, AccessMode mode) throws Exception { + Set bookmarks, TransactionConfig config, AccessMode mode) { // Given var connection = connectionMock(mode, protocol); @SuppressWarnings("unchecked") @@ -531,8 +530,7 @@ private void testDatabaseNameSupport(boolean autoCommitTx) { var txStage = protocol.beginTransaction( connection, Collections.emptySet(), TransactionConfig.empty(), null, null, Logging.none()); await(txStage); - verifyBeginInvoked( - connection, Collections.emptySet(), TransactionConfig.empty(), AccessMode.WRITE, database("foo")); + verifyBeginInvoked(connection, Collections.emptySet(), TransactionConfig.empty(), database("foo")); } } @@ -565,13 +563,10 @@ private ResponseHandler verifyRunInvoked(Connection connection, RunWithMetadataM } private void verifyBeginInvoked( - Connection connection, - Set bookmarks, - TransactionConfig config, - AccessMode mode, - DatabaseName databaseName) { + Connection connection, Set bookmarks, TransactionConfig config, DatabaseName databaseName) { var beginHandlerCaptor = ArgumentCaptor.forClass(ResponseHandler.class); - var beginMessage = new BeginMessage(bookmarks, config, databaseName, mode, null, null, null, Logging.none()); + var beginMessage = + new BeginMessage(bookmarks, config, databaseName, AccessMode.WRITE, null, null, null, Logging.none()); verify(connection).writeAndFlush(eq(beginMessage), beginHandlerCaptor.capture()); assertThat(beginHandlerCaptor.getValue(), instanceOf(BeginTxResponseHandler.class)); } diff --git a/driver/src/test/java/org/neo4j/driver/internal/packstream/PackStreamTest.java b/driver/src/test/java/org/neo4j/driver/internal/packstream/PackStreamTest.java index c4d9380ec9..998598db47 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/packstream/PackStreamTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/packstream/PackStreamTest.java @@ -31,7 +31,6 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.nio.channels.Channels; -import java.nio.channels.WritableByteChannel; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; @@ -58,13 +57,11 @@ public static Map asMap(Object... keysAndValues) { private static class Machine { private final ByteArrayOutputStream output; - private final WritableByteChannel writable; private final PackStream.Packer packer; Machine() { this.output = new ByteArrayOutputStream(); - this.writable = Channels.newChannel(this.output); - this.packer = new PackStream.Packer(new ChannelOutput(this.writable)); + this.packer = new PackStream.Packer(new ChannelOutput(Channels.newChannel(this.output))); } public void reset() { @@ -407,10 +404,10 @@ void testCanPackAndUnpackListOfString() throws Throwable { @Test void testCanPackAndUnpackListOfSpecialStrings() throws Throwable { - assertPackStringLists(3, "Mjölnir"); - assertPackStringLists(126, "Mjölnir"); - assertPackStringLists(3000, "Mjölnir"); - assertPackStringLists(32768, "Mjölnir"); + assertPackStringLists(3); + assertPackStringLists(126); + assertPackStringLists(3000); + assertPackStringLists(32768); } @Test @@ -648,7 +645,7 @@ void testCanPeekOnNextType() throws Throwable { } @Test - void shouldFailForUnknownValue() throws IOException { + void shouldFailForUnknownValue() { // Given var machine = new Machine(); var packer = machine.packer(); @@ -671,7 +668,7 @@ private void assertPeekType(PackType type, Object value) throws IOException { assertEquals(type, unpacker.peekNextType()); } - private void assertPackStringLists(int size, String value) throws Throwable { + private void assertPackStringLists(int size) throws Throwable { // Given var machine = new Machine(); @@ -679,7 +676,7 @@ private void assertPackStringLists(int size, String value) throws Throwable { var packer = machine.packer(); var strings = new ArrayList(size); for (var i = 0; i < size; i++) { - strings.add(i, value); + strings.add(i, "Mjölnir"); } packer.pack(strings); diff --git a/driver/src/test/java/org/neo4j/driver/internal/reactive/InternalReactiveSessionTest.java b/driver/src/test/java/org/neo4j/driver/internal/reactive/InternalReactiveSessionTest.java index 36f39ce6b2..33a67a5943 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/reactive/InternalReactiveSessionTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/reactive/InternalReactiveSessionTest.java @@ -317,13 +317,5 @@ static List executeVariations() { new ExecuteVariation(true, true)); } - private static class ExecuteVariation { - private final boolean readOnly; - private final boolean explicitTxConfig; - - private ExecuteVariation(boolean readOnly, boolean explicitTxConfig) { - this.readOnly = readOnly; - this.explicitTxConfig = explicitTxConfig; - } - } + private record ExecuteVariation(boolean readOnly, boolean explicitTxConfig) {} } diff --git a/driver/src/test/java/org/neo4j/driver/internal/reactive/InternalRxTransactionTest.java b/driver/src/test/java/org/neo4j/driver/internal/reactive/InternalRxTransactionTest.java index 2fd42bf4ff..012cb56afe 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/reactive/InternalRxTransactionTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/reactive/InternalRxTransactionTest.java @@ -89,7 +89,7 @@ private static Stream> allTxRunMethods() { @ParameterizedTest @MethodSource("allTxRunMethods") - void shouldDelegateRun(Function runReturnOne) throws Throwable { + void shouldDelegateRun(Function runReturnOne) { // Given var tx = mock(UnmanagedTransaction.class); RxResultCursor cursor = mock(RxResultCursorImpl.class); @@ -110,7 +110,7 @@ void shouldDelegateRun(Function runReturnOne) throws Th @ParameterizedTest @MethodSource("allTxRunMethods") - void shouldMarkTxIfFailedToRun(Function runReturnOne) throws Throwable { + void shouldMarkTxIfFailedToRun(Function runReturnOne) { // Given Throwable error = new RuntimeException("Hi there"); var tx = mock(UnmanagedTransaction.class); diff --git a/driver/src/test/java/org/neo4j/driver/internal/security/ExpirationBasedAuthTokenManagerTest.java b/driver/src/test/java/org/neo4j/driver/internal/security/ExpirationBasedAuthTokenManagerTest.java deleted file mode 100644 index 7d98cdfd91..0000000000 --- a/driver/src/test/java/org/neo4j/driver/internal/security/ExpirationBasedAuthTokenManagerTest.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright (c) "Neo4j" - * Neo4j Sweden AB [http://neo4j.com] - * - * This file is part of Neo4j. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.neo4j.driver.internal.security; - -import org.junit.jupiter.api.Test; - -class ExpirationBasedAuthTokenManagerTest { - @Test - void test() {} -} diff --git a/driver/src/test/java/org/neo4j/driver/internal/security/SecurityPlans.java b/driver/src/test/java/org/neo4j/driver/internal/security/SecurityPlans.java index c8f0dfdea8..9ae27479e4 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/security/SecurityPlans.java +++ b/driver/src/test/java/org/neo4j/driver/internal/security/SecurityPlans.java @@ -62,7 +62,7 @@ void testEncryptionSchemeEnablesEncryption(String scheme) { @ParameterizedTest @MethodSource("systemCertSchemes") - void testSystemCertCompatibleConfiguration(String scheme) throws Exception { + void testSystemCertCompatibleConfiguration(String scheme) { var securitySettings = new SecuritySettings.SecuritySettingsBuilder().build(); var securityPlan = SecurityPlans.createSecurityPlan(securitySettings, scheme); @@ -74,7 +74,7 @@ void testSystemCertCompatibleConfiguration(String scheme) throws Exception { @ParameterizedTest @MethodSource("selfSignedSchemes") - void testSelfSignedCertConfigDisablesHostnameVerification(String scheme) throws Exception { + void testSelfSignedCertConfigDisablesHostnameVerification(String scheme) { var securitySettings = new SecuritySettings.SecuritySettingsBuilder().build(); var securityPlan = SecurityPlans.createSecurityPlan(securitySettings, scheme); diff --git a/driver/src/test/java/org/neo4j/driver/internal/util/FailingConnectionDriverFactory.java b/driver/src/test/java/org/neo4j/driver/internal/util/FailingConnectionDriverFactory.java deleted file mode 100644 index 0ae5be7820..0000000000 --- a/driver/src/test/java/org/neo4j/driver/internal/util/FailingConnectionDriverFactory.java +++ /dev/null @@ -1,201 +0,0 @@ -/* - * Copyright (c) "Neo4j" - * Neo4j Sweden AB [http://neo4j.com] - * - * This file is part of Neo4j. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.neo4j.driver.internal.util; - -import io.netty.bootstrap.Bootstrap; -import java.util.Set; -import java.util.concurrent.CompletionStage; -import java.util.concurrent.atomic.AtomicInteger; -import java.util.concurrent.atomic.AtomicReference; -import org.neo4j.driver.AuthToken; -import org.neo4j.driver.AuthTokenManager; -import org.neo4j.driver.Config; -import org.neo4j.driver.internal.BoltServerAddress; -import org.neo4j.driver.internal.DriverFactory; -import org.neo4j.driver.internal.async.TerminationAwareStateLockingExecutor; -import org.neo4j.driver.internal.cluster.RoutingContext; -import org.neo4j.driver.internal.messaging.BoltProtocol; -import org.neo4j.driver.internal.messaging.Message; -import org.neo4j.driver.internal.metrics.MetricsProvider; -import org.neo4j.driver.internal.security.SecurityPlan; -import org.neo4j.driver.internal.spi.Connection; -import org.neo4j.driver.internal.spi.ConnectionPool; -import org.neo4j.driver.internal.spi.ResponseHandler; -import org.neo4j.driver.net.ServerAddress; - -public class FailingConnectionDriverFactory extends DriverFactory { - private final AtomicReference nextRunFailure = new AtomicReference<>(); - - @Override - protected ConnectionPool createConnectionPool( - AuthTokenManager authTokenManager, - SecurityPlan securityPlan, - Bootstrap bootstrap, - MetricsProvider metricsProvider, - Config config, - boolean ownsEventLoopGroup, - RoutingContext routingContext) { - var pool = super.createConnectionPool( - authTokenManager, securityPlan, bootstrap, metricsProvider, config, ownsEventLoopGroup, routingContext); - return new ConnectionPoolWithFailingConnections(pool, nextRunFailure); - } - - public void setNextRunFailure(Throwable failure) { - nextRunFailure.set(failure); - } - - private static class ConnectionPoolWithFailingConnections implements ConnectionPool { - final ConnectionPool delegate; - final AtomicReference nextRunFailure; - - ConnectionPoolWithFailingConnections(ConnectionPool delegate, AtomicReference nextRunFailure) { - this.delegate = delegate; - this.nextRunFailure = nextRunFailure; - } - - @Override - public CompletionStage acquire(BoltServerAddress address, AuthToken overrideAuthToken) { - return delegate.acquire(address, overrideAuthToken) - .thenApply(connection -> new FailingConnection(connection, nextRunFailure)); - } - - @Override - public void retainAll(Set addressesToRetain) { - delegate.retainAll(addressesToRetain); - } - - @Override - public int inUseConnections(ServerAddress address) { - return delegate.inUseConnections(address); - } - - @Override - public int idleConnections(ServerAddress address) { - return delegate.idleConnections(address); - } - - @Override - public CompletionStage close() { - return delegate.close(); - } - - @Override - public boolean isOpen(BoltServerAddress address) { - return delegate.isOpen(address); - } - } - - private static class FailingConnection implements Connection { - final Connection delegate; - final AtomicReference nextRunFailure; - final AtomicInteger count = new AtomicInteger(2); // one failure for run, one failure for pull - - FailingConnection(Connection delegate, AtomicReference nextRunFailure) { - this.delegate = delegate; - this.nextRunFailure = nextRunFailure; - } - - @Override - public boolean isOpen() { - return delegate.isOpen(); - } - - @Override - public void enableAutoRead() { - delegate.enableAutoRead(); - } - - @Override - public void disableAutoRead() { - delegate.disableAutoRead(); - } - - @Override - public void write(Message message, ResponseHandler handler) { - if (tryFail(handler, null)) { - return; - } - delegate.write(message, handler); - } - - @Override - public void writeAndFlush(Message message, ResponseHandler handler) { - if (tryFail(handler, null)) { - return; - } - delegate.writeAndFlush(message, handler); - } - - @Override - public CompletionStage reset(Throwable throwable) { - return delegate.reset(throwable); - } - - @Override - public CompletionStage release() { - return delegate.release(); - } - - @Override - public void terminateAndRelease(String reason) { - delegate.terminateAndRelease(reason); - } - - @Override - public String serverAgent() { - return delegate.serverAgent(); - } - - @Override - public BoltServerAddress serverAddress() { - return delegate.serverAddress(); - } - - @Override - public BoltProtocol protocol() { - return delegate.protocol(); - } - - @Override - public void bindTerminationAwareStateLockingExecutor(TerminationAwareStateLockingExecutor executor) { - delegate.bindTerminationAwareStateLockingExecutor(executor); - } - - private boolean tryFail(ResponseHandler handler1, ResponseHandler handler2) { - var failure = nextRunFailure.getAndSet(null); - if (failure != null) { - var reportCount = count.get(); - if (handler1 != null) { - handler1.onFailure(failure); - reportCount = count.decrementAndGet(); - } - if (handler2 != null) { - handler2.onFailure(failure); - reportCount = count.decrementAndGet(); - } - - if (reportCount > 0) { - nextRunFailure.compareAndSet(null, failure); - } - return true; - } - return false; - } - } -} diff --git a/driver/src/test/java/org/neo4j/driver/internal/util/FailingMessageFormat.java b/driver/src/test/java/org/neo4j/driver/internal/util/FailingMessageFormat.java index 7004e84e36..9509ddb0cd 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/util/FailingMessageFormat.java +++ b/driver/src/test/java/org/neo4j/driver/internal/util/FailingMessageFormat.java @@ -60,14 +60,7 @@ public Reader newReader(PackInput input) { return new ThrowingReader(delegate.newReader(input), readerThrowableRef, readerFailureRef); } - private static class ThrowingWriter implements MessageFormat.Writer { - final MessageFormat.Writer delegate; - final AtomicReference throwableRef; - - ThrowingWriter(Writer delegate, AtomicReference throwableRef) { - this.delegate = delegate; - this.throwableRef = throwableRef; - } + private record ThrowingWriter(Writer delegate, AtomicReference throwableRef) implements Writer { @Override public void write(Message msg) throws IOException { @@ -80,17 +73,9 @@ public void write(Message msg) throws IOException { } } - private static class ThrowingReader implements MessageFormat.Reader { - final MessageFormat.Reader delegate; - final AtomicReference throwableRef; - final AtomicReference failureRef; - - ThrowingReader( - Reader delegate, AtomicReference throwableRef, AtomicReference failureRef) { - this.delegate = delegate; - this.throwableRef = throwableRef; - this.failureRef = failureRef; - } + private record ThrowingReader( + Reader delegate, AtomicReference throwableRef, AtomicReference failureRef) + implements Reader { @Override public void read(ResponseMessageHandler handler) throws IOException { diff --git a/driver/src/test/java/org/neo4j/driver/internal/util/FuturesTest.java b/driver/src/test/java/org/neo4j/driver/internal/util/FuturesTest.java index f740e13ea9..6eeb81e6df 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/util/FuturesTest.java +++ b/driver/src/test/java/org/neo4j/driver/internal/util/FuturesTest.java @@ -46,7 +46,7 @@ class FuturesTest { @Test - void shouldConvertCanceledNettyFutureToCompletionStage() throws Exception { + void shouldConvertCanceledNettyFutureToCompletionStage() { var promise = new DefaultPromise(ImmediateEventExecutor.INSTANCE); promise.cancel(true); @@ -69,7 +69,7 @@ void shouldConvertSucceededNettyFutureToCompletionStage() throws Exception { } @Test - void shouldConvertFailedNettyFutureToCompletionStage() throws Exception { + void shouldConvertFailedNettyFutureToCompletionStage() { var error = new RuntimeException("Hello"); var nettyFuture = new FailedFuture(ImmediateEventExecutor.INSTANCE, error); @@ -81,7 +81,7 @@ void shouldConvertFailedNettyFutureToCompletionStage() throws Exception { } @Test - void shouldConvertRunningNettyFutureToCompletionStageWhenFutureCanceled() throws Exception { + void shouldConvertRunningNettyFutureToCompletionStageWhenFutureCanceled() { var promise = new DefaultPromise(ImmediateEventExecutor.INSTANCE); var future = Futures.asCompletionStage(promise).toCompletableFuture(); @@ -109,7 +109,7 @@ void shouldConvertRunningNettyFutureToCompletionStageWhenFutureSucceeded() throw } @Test - void shouldConvertRunningNettyFutureToCompletionStageWhenFutureFailed() throws Exception { + void shouldConvertRunningNettyFutureToCompletionStageWhenFutureFailed() { var error = new RuntimeException("Hello"); var promise = new DefaultPromise(ImmediateEventExecutor.INSTANCE); @@ -124,7 +124,7 @@ void shouldConvertRunningNettyFutureToCompletionStageWhenFutureFailed() throws E } @Test - void shouldCreateFailedFutureWithUncheckedException() throws Exception { + void shouldCreateFailedFutureWithUncheckedException() { var error = new RuntimeException("Hello"); var future = Futures.failedFuture(error).toCompletableFuture(); assertTrue(future.isCompletedExceptionally()); @@ -133,7 +133,7 @@ void shouldCreateFailedFutureWithUncheckedException() throws Exception { } @Test - void shouldCreateFailedFutureWithCheckedException() throws Exception { + void shouldCreateFailedFutureWithCheckedException() { var error = new IOException("Hello"); var future = Futures.failedFuture(error).toCompletableFuture(); assertTrue(future.isCompletedExceptionally()); @@ -142,7 +142,7 @@ void shouldCreateFailedFutureWithCheckedException() throws Exception { } @Test - void shouldFailBlockingGetInEventLoopThread() throws Exception { + void shouldFailBlockingGetInEventLoopThread() { var eventExecutor = EventLoopGroupFactory.newEventLoopGroup(1); try { var future = new CompletableFuture(); diff --git a/driver/src/test/java/org/neo4j/driver/internal/util/Matchers.java b/driver/src/test/java/org/neo4j/driver/internal/util/Matchers.java index b1272cb7d0..42f933fb89 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/util/Matchers.java +++ b/driver/src/test/java/org/neo4j/driver/internal/util/Matchers.java @@ -117,8 +117,7 @@ public static Matcher syntaxError(String messagePrefix) { return new TypeSafeMatcher() { @Override protected boolean matchesSafely(Throwable error) { - if (error instanceof ClientException) { - var clientError = (ClientException) error; + if (error instanceof ClientException clientError) { return clientError.code().contains("SyntaxError") && (messagePrefix == null || clientError.getMessage().startsWith(messagePrefix)); diff --git a/driver/src/test/java/org/neo4j/driver/internal/util/ThrowingConsumer.java b/driver/src/test/java/org/neo4j/driver/internal/util/ThrowingConsumer.java deleted file mode 100644 index aaf4136758..0000000000 --- a/driver/src/test/java/org/neo4j/driver/internal/util/ThrowingConsumer.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright (c) "Neo4j" - * Neo4j Sweden AB [http://neo4j.com] - * - * This file is part of Neo4j. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.neo4j.driver.internal.util; - -@FunctionalInterface -public interface ThrowingConsumer { - void accept(T t) throws Exception; -} diff --git a/driver/src/test/java/org/neo4j/driver/internal/util/messaging/AbstractMessageReaderTestBase.java b/driver/src/test/java/org/neo4j/driver/internal/util/messaging/AbstractMessageReaderTestBase.java index b38dab6649..0199b16ecf 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/util/messaging/AbstractMessageReaderTestBase.java +++ b/driver/src/test/java/org/neo4j/driver/internal/util/messaging/AbstractMessageReaderTestBase.java @@ -50,16 +50,13 @@ Stream shouldReadSupportedMessages() { private void testSupportedMessageReading(Message message) throws IOException { var handler = testMessageReading(message); - if (message instanceof SuccessMessage) { - var successMessage = (SuccessMessage) message; + if (message instanceof SuccessMessage successMessage) { verify(handler).handleSuccessMessage(successMessage.metadata()); - } else if (message instanceof FailureMessage) { - var failureMessage = (FailureMessage) message; + } else if (message instanceof FailureMessage failureMessage) { verify(handler).handleFailureMessage(failureMessage.code(), failureMessage.message()); } else if (message instanceof IgnoredMessage) { verify(handler).handleIgnoredMessage(); - } else if (message instanceof RecordMessage) { - var recordMessage = (RecordMessage) message; + } else if (message instanceof RecordMessage recordMessage) { verify(handler).handleRecordMessage(recordMessage.fields()); } else { fail("Unsupported message type " + message.getClass().getSimpleName()); diff --git a/driver/src/test/java/org/neo4j/driver/internal/util/messaging/KnowledgeableMessageFormat.java b/driver/src/test/java/org/neo4j/driver/internal/util/messaging/KnowledgeableMessageFormat.java index 3bf981a611..1ec835fba0 100644 --- a/driver/src/test/java/org/neo4j/driver/internal/util/messaging/KnowledgeableMessageFormat.java +++ b/driver/src/test/java/org/neo4j/driver/internal/util/messaging/KnowledgeableMessageFormat.java @@ -97,22 +97,19 @@ private static class KnowledgeableValuePacker extends CommonValuePacker { protected void packInternalValue(InternalValue value) throws IOException { var typeConstructor = value.typeConstructor(); switch (typeConstructor) { - case NODE: + case NODE -> { var node = value.asNode(); packNode(node); - break; - - case RELATIONSHIP: + } + case RELATIONSHIP -> { var rel = value.asRelationship(); packRelationship(rel); - break; - - case PATH: + } + case PATH -> { var path = value.asPath(); packPath(path); - break; - default: - super.packInternalValue(value); + } + default -> super.packInternalValue(value); } } 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 14a40bca95..88b6c16fc5 100644 --- a/driver/src/test/java/org/neo4j/driver/stress/AbstractStressTestBase.java +++ b/driver/src/test/java/org/neo4j/driver/stress/AbstractStressTestBase.java @@ -146,21 +146,21 @@ void rxApiStressTest() throws Throwable { @Test void blockingApiBigDataTest() { - var bookmark = createNodesBlocking(bigDataTestBatchCount(), BIG_DATA_TEST_BATCH_SIZE, driver); - readNodesBlocking(driver, bookmark, BIG_DATA_TEST_NODE_COUNT); + var bookmark = createNodesBlocking(bigDataTestBatchCount(), driver); + readNodesBlocking(driver, bookmark); } @Test void asyncApiBigDataTest() throws Throwable { - var bookmark = createNodesAsync(bigDataTestBatchCount(), BIG_DATA_TEST_BATCH_SIZE, driver); - readNodesAsync(driver, bookmark, BIG_DATA_TEST_NODE_COUNT); + var bookmark = createNodesAsync(bigDataTestBatchCount(), driver); + readNodesAsync(driver, bookmark); } @Test void rxApiBigDataTest() { assertRxIsAvailable(); - var bookmark = createNodesRx(bigDataTestBatchCount(), BIG_DATA_TEST_BATCH_SIZE, driver); - readNodesRx(driver, bookmark, BIG_DATA_TEST_NODE_COUNT); + var bookmark = createNodesRx(bigDataTestBatchCount(), driver); + readNodesRx(driver, bookmark); } private void assertRxIsAvailable() { @@ -297,17 +297,18 @@ private List> createRxCommands() { private Future launchRxWorkerThread(ExecutorService executor, List> commands, C context) { return executor.submit(() -> { while (!context.isStopped()) { - var allCommands = executeRxCommands(context, commands, ASYNC_BATCH_SIZE); + var allCommands = executeRxCommands(context, commands); assertNull(allCommands.get()); } return null; }); } - private CompletableFuture executeRxCommands(C context, List> commands, int count) { + private CompletableFuture executeRxCommands(C context, List> commands) { @SuppressWarnings("unchecked") - var executions = (CompletableFuture[]) Array.newInstance(CompletableFuture.class, count); - for (var i = 0; i < count; i++) { + var executions = (CompletableFuture[]) + Array.newInstance(CompletableFuture.class, AbstractStressTestBase.ASYNC_BATCH_SIZE); + for (var i = 0; i < AbstractStressTestBase.ASYNC_BATCH_SIZE; i++) { var command = randomOf(commands); var execution = command.execute(context); executions[i] = execution.toCompletableFuture(); @@ -346,17 +347,18 @@ private List> createAsyncCommands() { private Future launchAsyncWorkerThread(ExecutorService executor, List> commands, C context) { return executor.submit(() -> { while (!context.isStopped()) { - var allCommands = executeAsyncCommands(context, commands, ASYNC_BATCH_SIZE); + var allCommands = executeAsyncCommands(context, commands); assertNull(allCommands.get()); } return null; }); } - private CompletableFuture executeAsyncCommands(C context, List> commands, int count) { + private CompletableFuture executeAsyncCommands(C context, List> commands) { @SuppressWarnings("unchecked") - var executions = (CompletableFuture[]) Array.newInstance(CompletableFuture.class, count); - for (var i = 0; i < count; i++) { + var executions = (CompletableFuture[]) + Array.newInstance(CompletableFuture.class, AbstractStressTestBase.ASYNC_BATCH_SIZE); + for (var i = 0; i < AbstractStressTestBase.ASYNC_BATCH_SIZE; i++) { var command = randomOf(commands); var execution = command.execute(context); executions[i] = execution.toCompletableFuture(); @@ -448,14 +450,15 @@ private static int bigDataTestBatchCount() { } @SuppressWarnings("deprecation") - private static Bookmark createNodesBlocking(int batchCount, int batchSize, Driver driver) { + private static Bookmark createNodesBlocking(int batchCount, Driver driver) { Bookmark bookmark; var start = System.nanoTime(); try (var session = driver.session()) { for (var i = 0; i < batchCount; i++) { var batchIndex = i; - session.writeTransaction(tx -> createNodesInTx(tx, batchIndex, batchSize)); + session.writeTransaction( + tx -> createNodesInTx(tx, batchIndex, AbstractStressTestBase.BIG_DATA_TEST_BATCH_SIZE)); } bookmark = session.lastBookmark(); } @@ -466,7 +469,7 @@ private static Bookmark createNodesBlocking(int batchCount, int batchSize, Drive } @SuppressWarnings("deprecation") - private static void readNodesBlocking(Driver driver, Bookmark bookmark, int expectedNodeCount) { + private static void readNodesBlocking(Driver driver, Bookmark bookmark) { var start = System.nanoTime(); try (var session = driver.session(builder().withBookmarks(bookmark).build())) { int nodesProcessed = session.readTransaction(tx -> { @@ -487,14 +490,14 @@ private static void readNodesBlocking(Driver driver, Bookmark bookmark, int expe return nodesSeen; }); - assertEquals(expectedNodeCount, nodesProcessed); + assertEquals(AbstractStressTestBase.BIG_DATA_TEST_NODE_COUNT, nodesProcessed); } var end = System.nanoTime(); System.out.println("Reading nodes with blocking API took: " + NANOSECONDS.toMillis(end - start) + "ms"); } @SuppressWarnings("deprecation") - private static Bookmark createNodesAsync(int batchCount, int batchSize, Driver driver) throws Throwable { + private static Bookmark createNodesAsync(int batchCount, Driver driver) throws Throwable { var start = System.nanoTime(); var session = driver.session(AsyncSession.class); @@ -502,8 +505,8 @@ private static Bookmark createNodesAsync(int batchCount, int batchSize, Driver d for (var i = 0; i < batchCount; i++) { var batchIndex = i; - writeTransactions = writeTransactions.thenCompose( - ignore -> session.writeTransactionAsync(tx -> createNodesInTxAsync(tx, batchIndex, batchSize))); + writeTransactions = writeTransactions.thenCompose(ignore -> session.writeTransactionAsync( + tx -> createNodesInTxAsync(tx, batchIndex, AbstractStressTestBase.BIG_DATA_TEST_BATCH_SIZE))); } writeTransactions = writeTransactions.exceptionally(error -> error).thenCompose(error -> safeCloseSession(session, error)); @@ -520,7 +523,7 @@ private static Bookmark createNodesAsync(int batchCount, int batchSize, Driver d } @SuppressWarnings("deprecation") - private static void readNodesAsync(Driver driver, Bookmark bookmark, int expectedNodeCount) throws Throwable { + private static void readNodesAsync(Driver driver, Bookmark bookmark) throws Throwable { var start = System.nanoTime(); var session = driver.session( @@ -548,21 +551,21 @@ private static void readNodesAsync(Driver driver, Bookmark bookmark, int expecte throw error; } - assertEquals(expectedNodeCount, nodesSeen.get()); + assertEquals(AbstractStressTestBase.BIG_DATA_TEST_NODE_COUNT, nodesSeen.get()); var end = System.nanoTime(); System.out.println("Reading nodes with async API took: " + NANOSECONDS.toMillis(end - start) + "ms"); } @SuppressWarnings("deprecation") - private Bookmark createNodesRx(int batchCount, int batchSize, InternalDriver driver) { + private Bookmark createNodesRx(int batchCount, InternalDriver driver) { var start = System.nanoTime(); var session = driver.rxSession(); Flux.concat(Flux.range(0, batchCount) - .map(batchIndex -> - session.writeTransaction(tx -> createNodesInTxRx(tx, batchIndex, batchSize)))) + .map(batchIndex -> session.writeTransaction(tx -> + createNodesInTxRx(tx, batchIndex, AbstractStressTestBase.BIG_DATA_TEST_BATCH_SIZE)))) .blockLast(); // throw any error if happened var end = System.nanoTime(); @@ -582,7 +585,7 @@ private Publisher createNodesInTxRx(RxTransaction tx, int batchIndex, int } @SuppressWarnings("deprecation") - private void readNodesRx(InternalDriver driver, Bookmark bookmark, int expectedNodeCount) { + private void readNodesRx(InternalDriver driver, Bookmark bookmark) { var start = System.nanoTime(); var session = driver.rxSession(builder().withBookmarks(bookmark).build()); @@ -605,7 +608,7 @@ private void readNodesRx(InternalDriver driver, Bookmark bookmark, int expectedN Flux.from(readQuery).blockLast(); - assertEquals(expectedNodeCount, nodesSeen.get()); + assertEquals(AbstractStressTestBase.BIG_DATA_TEST_NODE_COUNT, nodesSeen.get()); var end = System.nanoTime(); System.out.println("Reading nodes with async API took: " + NANOSECONDS.toMillis(end - start) + "ms"); @@ -693,15 +696,7 @@ private static CompletionStage safeCloseSession(AsyncSession session, T r return session.closeAsync().exceptionally(ignore -> null).thenApply(ignore -> result); } - private static class ResourcesInfo { - final long openFileDescriptorCount; - final Set acquiredLoggerNames; - - ResourcesInfo(long openFileDescriptorCount, Set acquiredLoggerNames) { - this.openFileDescriptorCount = openFileDescriptorCount; - this.acquiredLoggerNames = acquiredLoggerNames; - } - } + private record ResourcesInfo(long openFileDescriptorCount, Set acquiredLoggerNames) {} private static class LoggerNameTrackingLogging implements Logging { private final Logging consoleLogging = Logging.console(Level.FINE); 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 75f9e7d385..891d67fb58 100644 --- a/driver/src/test/java/org/neo4j/driver/stress/SessionPoolingStressIT.java +++ b/driver/src/test/java/org/neo4j/driver/stress/SessionPoolingStressIT.java @@ -99,7 +99,7 @@ private void doWork(AtomicBoolean stop, AtomicReference failure) { } } - private class Worker implements Runnable { + private static class Worker implements Runnable { private final Random random = ThreadLocalRandom.current(); private final Driver driver; private final AtomicBoolean stop; diff --git a/driver/src/test/java/org/neo4j/driver/testutil/CertificateUtil.java b/driver/src/test/java/org/neo4j/driver/testutil/CertificateUtil.java index e068548a02..261e31597a 100644 --- a/driver/src/test/java/org/neo4j/driver/testutil/CertificateUtil.java +++ b/driver/src/test/java/org/neo4j/driver/testutil/CertificateUtil.java @@ -29,7 +29,6 @@ import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.NoSuchAlgorithmException; -import java.security.NoSuchProviderException; import java.security.PrivateKey; import java.security.Provider; import java.security.PublicKey; @@ -73,7 +72,7 @@ public class CertificateUtil { Security.addProvider(PROVIDER); } - private static KeyPair generateKeyPair() throws NoSuchProviderException, NoSuchAlgorithmException { + private static KeyPair generateKeyPair() throws NoSuchAlgorithmException { var keyPairGenerator = KeyPairGenerator.getInstance(DEFAULT_ENCRYPTION); keyPairGenerator.initialize(2048, new SecureRandom()); var keyPair = keyPairGenerator.generateKeyPair(); diff --git a/driver/src/test/java/org/neo4j/driver/testutil/DatabaseExtension.java b/driver/src/test/java/org/neo4j/driver/testutil/DatabaseExtension.java index a622062ba0..be89388771 100644 --- a/driver/src/test/java/org/neo4j/driver/testutil/DatabaseExtension.java +++ b/driver/src/test/java/org/neo4j/driver/testutil/DatabaseExtension.java @@ -133,7 +133,7 @@ public void beforeEach(ExtensionContext context) throws Exception { } @Override - public void afterEach(ExtensionContext context) throws Exception { + public void afterEach(ExtensionContext context) { if (!nginxRunning) { startProxy(); } @@ -238,14 +238,14 @@ public void stopProxy() { } public boolean isNeo4j44OrEarlier() { - return isNeo4jVersionOrEarlier(4, 4); + return isNeo4jVersionOrEarlier(4); } public boolean isNeo4j43OrEarlier() { - return isNeo4jVersionOrEarlier(4, 3); + return isNeo4jVersionOrEarlier(3); } - private boolean isNeo4jVersionOrEarlier(int major, int minor) { + private boolean isNeo4jVersionOrEarlier(int minor) { try (var session = driver.session()) { var neo4jVersion = session.executeRead( tx -> tx.run("CALL dbms.components() YIELD versions " + "RETURN versions[0] AS version") @@ -253,7 +253,7 @@ private boolean isNeo4jVersionOrEarlier(int major, int minor) { .get("version") .asString()); var versions = neo4jVersion.split("\\."); - return parseInt(versions[0]) <= major && parseInt(versions[1]) <= minor; + return parseInt(versions[0]) <= 4 && parseInt(versions[1]) <= minor; } } diff --git a/examples/src/main/java/org/neo4j/docs/driver/ConfigCustomResolverExample.java b/examples/src/main/java/org/neo4j/docs/driver/ConfigCustomResolverExample.java index 9763753aad..d95402dbe4 100644 --- a/examples/src/main/java/org/neo4j/docs/driver/ConfigCustomResolverExample.java +++ b/examples/src/main/java/org/neo4j/docs/driver/ConfigCustomResolverExample.java @@ -44,6 +44,7 @@ public ConfigCustomResolverExample(String virtualUri, AuthToken authToken, Serve } // tag::config-custom-resolver[] + @SuppressWarnings("SameParameterValue") private Driver createDriver(String virtualUri, String user, String password, ServerAddress... addresses) { var config = Config.builder() .withResolver(address -> new HashSet<>(Arrays.asList(addresses))) diff --git a/examples/src/main/java/org/neo4j/docs/driver/PassBookmarkExample.java b/examples/src/main/java/org/neo4j/docs/driver/PassBookmarkExample.java index 04855bce82..6d4e6870d9 100644 --- a/examples/src/main/java/org/neo4j/docs/driver/PassBookmarkExample.java +++ b/examples/src/main/java/org/neo4j/docs/driver/PassBookmarkExample.java @@ -57,6 +57,7 @@ private Result employ(TransactionContext tx, String person, String company) { } // Create a friendship between two people. + @SuppressWarnings("SameParameterValue") private Result makeFriends(TransactionContext tx, String person1, String person2) { return tx.run("MATCH (a:Person {name: $person_1}) MATCH (b:Person {name: $person_2}) MERGE (a)-[:KNOWS]->(b)", parameters("person_1", person1, "person_2", person2)); diff --git a/testkit-backend/src/main/java/neo4j/org/testkit/backend/channel/handler/TestkitRequestProcessorHandler.java b/testkit-backend/src/main/java/neo4j/org/testkit/backend/channel/handler/TestkitRequestProcessorHandler.java index a3a3049ca2..535528be2f 100644 --- a/testkit-backend/src/main/java/neo4j/org/testkit/backend/channel/handler/TestkitRequestProcessorHandler.java +++ b/testkit-backend/src/main/java/neo4j/org/testkit/backend/channel/handler/TestkitRequestProcessorHandler.java @@ -50,19 +50,12 @@ public class TestkitRequestProcessorHandler extends ChannelInboundHandlerAdapter public TestkitRequestProcessorHandler(BackendMode backendMode, Logging logging) { switch (backendMode) { - case ASYNC: - processorImpl = TestkitRequest::processAsync; - break; - case REACTIVE_LEGACY: - processorImpl = (request, state) -> request.processRx(state).toFuture(); - break; - case REACTIVE: - processorImpl = - (request, state) -> request.processReactive(state).toFuture(); - break; - default: - processorImpl = TestkitRequestProcessorHandler::wrapSyncRequest; - break; + case ASYNC -> processorImpl = TestkitRequest::processAsync; + case REACTIVE_LEGACY -> processorImpl = + (request, state) -> request.processRx(state).toFuture(); + case REACTIVE -> processorImpl = + (request, state) -> request.processReactive(state).toFuture(); + default -> processorImpl = TestkitRequestProcessorHandler::wrapSyncRequest; } testkitState = new TestkitState(this::writeAndFlush, logging); } @@ -114,9 +107,8 @@ private TestkitResponse createErrorResponse(Throwable throwable) { if (throwable instanceof CompletionException) { throwable = throwable.getCause(); } - if (throwable instanceof Neo4jException) { + if (throwable instanceof Neo4jException e) { var id = testkitState.newId(); - var e = (Neo4jException) throwable; testkitState.getErrors().put(id, e); return DriverError.builder() .data(DriverError.DriverErrorBody.builder() diff --git a/testkit-backend/src/main/java/neo4j/org/testkit/backend/holder/DriverHolder.java b/testkit-backend/src/main/java/neo4j/org/testkit/backend/holder/DriverHolder.java index be99c9e211..a473da39c4 100644 --- a/testkit-backend/src/main/java/neo4j/org/testkit/backend/holder/DriverHolder.java +++ b/testkit-backend/src/main/java/neo4j/org/testkit/backend/holder/DriverHolder.java @@ -18,14 +18,7 @@ */ package neo4j.org.testkit.backend.holder; -import lombok.Getter; -import lombok.RequiredArgsConstructor; import org.neo4j.driver.Config; import org.neo4j.driver.Driver; -@RequiredArgsConstructor -@Getter -public class DriverHolder { - private final Driver driver; - private final Config config; -} +public record DriverHolder(Driver driver, Config config) {} diff --git a/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/AbstractResultNext.java b/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/AbstractResultNext.java index 35983db177..2892d7c910 100644 --- a/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/AbstractResultNext.java +++ b/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/AbstractResultNext.java @@ -117,7 +117,7 @@ private long getFetchSize(RxResultHolder resultHolder) { .orElse(resultHolder .getSessionHolder() .getDriverHolder() - .getConfig() + .config() .fetchSize()); return fetchSize == -1 ? Long.MAX_VALUE : fetchSize; } @@ -130,7 +130,7 @@ private long getFetchSize(ReactiveResultHolder resultHolder) { .orElse(resultHolder .getSessionHolder() .getDriverHolder() - .getConfig() + .config() .fetchSize()); return fetchSize == -1 ? Long.MAX_VALUE : fetchSize; } @@ -143,7 +143,7 @@ private long getFetchSize(ReactiveResultStreamsHolder resultHolder) { .orElse(resultHolder .getSessionHolder() .getDriverHolder() - .getConfig() + .config() .fetchSize()); return fetchSize == -1 ? Long.MAX_VALUE : fetchSize; } 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 167984b779..8725fc7be7 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 @@ -61,7 +61,7 @@ private DriverIsEncrypted createResponse(TestkitState testkitState) { var driverHolder = testkitState.getDriverHolder(data.getDriverId()); return DriverIsEncrypted.builder() .data(DriverIsEncrypted.DriverIsEncryptedBody.builder() - .encrypted(driverHolder.getDriver().isEncrypted()) + .encrypted(driverHolder.driver().isEncrypted()) .build()) .build(); } 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 fbe6908cf6..131adcbbbb 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,7 +34,7 @@ public class CheckMultiDBSupport implements TestkitRequest { @Override public TestkitResponse process(TestkitState testkitState) { var driverId = data.getDriverId(); - var available = testkitState.getDriverHolder(driverId).getDriver().supportsMultiDb(); + var available = testkitState.getDriverHolder(driverId).driver().supportsMultiDb(); return createResponse(available); } @@ -42,7 +42,7 @@ public TestkitResponse process(TestkitState testkitState) { public CompletionStage processAsync(TestkitState testkitState) { return testkitState .getDriverHolder(data.getDriverId()) - .getDriver() + .driver() .supportsMultiDbAsync() .thenApply(this::createResponse); } 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 7d6bd3c79a..5468238486 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,8 +31,7 @@ public class CheckSessionAuthSupport extends AbstractBasicTestkitRequest { @Override protected TestkitResponse processAndCreateResponse(TestkitState testkitState) { - var supports = - testkitState.getDriverHolder(data.getDriverId()).getDriver().supportsSessionAuth(); + var supports = testkitState.getDriverHolder(data.getDriverId()).driver().supportsSessionAuth(); return SessionAuthSupport.builder() .data(SessionAuthSupport.SessionAuthSupportBody.builder() .available(supports) 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 950ade6158..4a3c39d6d9 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 @@ -33,7 +33,7 @@ public class DriverClose implements TestkitRequest { @Override public TestkitResponse process(TestkitState testkitState) { - testkitState.getDriverHolder(data.getDriverId()).getDriver().close(); + testkitState.getDriverHolder(data.getDriverId()).driver().close(); return createResponse(); } @@ -41,7 +41,7 @@ public TestkitResponse process(TestkitState testkitState) { public CompletionStage processAsync(TestkitState testkitState) { return testkitState .getDriverHolder(data.getDriverId()) - .getDriver() + .driver() .closeAsync() .thenApply(ignored -> createResponse()); } 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 035d0fc21a..e0d3759536 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,7 +40,7 @@ public class ExecuteQuery implements TestkitRequest { @Override public TestkitResponse process(TestkitState testkitState) { - var driver = testkitState.getDriverHolder(data.getDriverId()).getDriver(); + var driver = testkitState.getDriverHolder(data.getDriverId()).driver(); var configBuilder = QueryConfig.builder(); var routing = data.getConfig().getRouting(); if (data.getConfig().getRouting() != null) { 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 529f51f447..3866a9e4e4 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,7 +62,7 @@ public Mono processReactiveStreams(TestkitState testkitState) { private ConnectionPoolMetrics getConnectionPoolMetrics(TestkitState testkitState) { var driverHolder = testkitState.getDriverHolder(data.getDriverId()); - var metrics = driverHolder.getDriver().metrics(); + var metrics = driverHolder.driver().metrics(); var poolMetrics = metrics.connectionPoolMetrics().stream() .filter(pm -> { // Brute forcing the access via reflections avoid having the InternalConnectionPoolMetrics a public 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 0c59f496ad..a6434fe4f7 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 @@ -128,7 +128,7 @@ private SessionHolder createSessionState( DriverHolder driverHolder, SessionConfig sessionConfig, AuthToken userSwitchAuthToken) { return new SessionHolder( driverHolder, - driverHolder.getDriver().session(org.neo4j.driver.Session.class, sessionConfig, userSwitchAuthToken), + driverHolder.driver().session(org.neo4j.driver.Session.class, sessionConfig, userSwitchAuthToken), sessionConfig); } @@ -136,7 +136,7 @@ private AsyncSessionHolder createAsyncSessionState( DriverHolder driverHolder, SessionConfig sessionConfig, AuthToken userSwitchAuthToken) { return new AsyncSessionHolder( driverHolder, - driverHolder.getDriver().session(AsyncSession.class, sessionConfig, userSwitchAuthToken), + driverHolder.driver().session(AsyncSession.class, sessionConfig, userSwitchAuthToken), sessionConfig); } @@ -145,7 +145,7 @@ private RxSessionHolder createRxSessionState( DriverHolder driverHolder, SessionConfig sessionConfig, AuthToken userSwitchAuthToken) { return new RxSessionHolder( driverHolder, - driverHolder.getDriver().session(RxSession.class, sessionConfig, userSwitchAuthToken), + driverHolder.driver().session(RxSession.class, sessionConfig, userSwitchAuthToken), sessionConfig); } @@ -153,7 +153,7 @@ private ReactiveSessionHolder createReactiveSessionState( DriverHolder driverHolder, SessionConfig sessionConfig, AuthToken userSwitchAuthToken) { return new ReactiveSessionHolder( driverHolder, - driverHolder.getDriver().session(ReactiveSession.class, sessionConfig, userSwitchAuthToken), + driverHolder.driver().session(ReactiveSession.class, sessionConfig, userSwitchAuthToken), sessionConfig); } @@ -162,7 +162,7 @@ private ReactiveSessionStreamsHolder createReactiveSessionStreamsState( return new ReactiveSessionStreamsHolder( driverHolder, driverHolder - .getDriver() + .driver() .session( org.neo4j.driver.reactivestreams.ReactiveSession.class, sessionConfig, diff --git a/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/StartSubTest.java b/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/StartSubTest.java index 64903be154..3d6c71ecb2 100644 --- a/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/StartSubTest.java +++ b/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/requests/StartSubTest.java @@ -40,22 +40,7 @@ interface SkipDeciderInterface { SkipDecision check(Map params); } - public static class SkipDecision { - private final boolean skipped; - private final String reason; - - public SkipDecision(boolean skipped, String reason) { - this.skipped = skipped; - this.reason = reason; - } - - public boolean isSkipped() { - return skipped; - } - - public String getReason() { - return reason; - } + public record SkipDecision(boolean skipped, String reason) { static SkipDecision ofNonSkipped() { return new SkipDecision(false, null); @@ -187,10 +172,10 @@ private TestkitResponse createResponse(Map skipPat .findFirst() .map(entry -> { var decision = entry.getValue().check(data.getSubtestArguments()); - if (decision.isSkipped()) { + if (decision.skipped()) { return SkipTest.builder() .data(SkipTest.SkipTestBody.builder() - .reason(decision.getReason()) + .reason(decision.reason()) .build()) .build(); } 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 547184cb26..1e7a2c8e2d 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,7 +35,7 @@ public class VerifyAuthentication implements TestkitRequest { @Override public TestkitResponse process(TestkitState testkitState) { var driverHolder = testkitState.getDriverHolder(data.getDriverId()); - var driver = driverHolder.getDriver(); + var driver = driverHolder.driver(); var authToken = AuthTokenUtil.parseAuthToken(data.getAuthorizationToken()); var authenticated = driver.verifyAuthentication(authToken); return DriverIsAuthenticated.builder() 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 a8bee164c8..dd1caffd26 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 @@ -34,7 +34,7 @@ public class VerifyConnectivity implements TestkitRequest { @Override public TestkitResponse process(TestkitState testkitState) { var id = data.getDriverId(); - testkitState.getDriverHolder(id).getDriver().verifyConnectivity(); + testkitState.getDriverHolder(id).driver().verifyConnectivity(); return createResponse(id); } @@ -43,7 +43,7 @@ public CompletionStage processAsync(TestkitState testkitState) var id = data.getDriverId(); return testkitState .getDriverHolder(id) - .getDriver() + .driver() .verifyConnectivityAsync() .thenApply(ignored -> createResponse(id)); } diff --git a/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/responses/serializer/GenUtils.java b/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/responses/serializer/GenUtils.java index 0db0ed41f4..8fd58c08df 100644 --- a/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/responses/serializer/GenUtils.java +++ b/testkit-backend/src/main/java/neo4j/org/testkit/backend/messages/responses/serializer/GenUtils.java @@ -79,32 +79,20 @@ public static void writeTime(JsonGenerator gen, int hour, int minute, int second } public static Class cypherTypeToJavaType(String typeString) { - switch (typeString) { - case "CypherBool": - return Boolean.class; - case "CypherInt": - return Long.class; - case "CypherFloat": - return Double.class; - case "CypherString": - return String.class; - case "CypherList": - return List.class; - case "CypherMap": - return Map.class; - case "CypherDateTime": - return CypherDateTime.class; - case "CypherTime": - return CypherTime.class; - case "CypherDate": - return LocalDate.class; - case "CypherDuration": - return IsoDuration.class; - case "CypherNull": - return null; - default: - return null; - } + return switch (typeString) { + case "CypherBool" -> Boolean.class; + case "CypherInt" -> Long.class; + case "CypherFloat" -> Double.class; + case "CypherString" -> String.class; + case "CypherList" -> List.class; + case "CypherMap" -> Map.class; + case "CypherDateTime" -> CypherDateTime.class; + case "CypherTime" -> CypherTime.class; + case "CypherDate" -> LocalDate.class; + case "CypherDuration" -> IsoDuration.class; + case "CypherNull" -> null; + default -> null; + }; } interface RunnableWithIOException {