Skip to content

Commit d674aaa

Browse files
committed
Bolt refactoring
1 parent bb3e535 commit d674aaa

File tree

603 files changed

+29386
-31494
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

603 files changed

+29386
-31494
lines changed

driver/pom.xml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
<rootDir>${project.basedir}/..</rootDir>
2121
<api.classes.directory>${basedir}/target/classes-without-jpms</api.classes.directory>
2222
<maven.compiler.xlint.extras>,-try</maven.compiler.xlint.extras>
23-
<surefire.jpms.args>--add-opens org.neo4j.driver/org.neo4j.driver.internal.util.messaging=ALL-UNNAMED</surefire.jpms.args>
23+
<surefire.jpms.args>--add-opens org.neo4j.driver/org.neo4j.driver.internal.bolt.basicimpl.util.messaging=ALL-UNNAMED</surefire.jpms.args>
2424
<failsafe.parallelizable.jpms.args>--add-opens org.neo4j.driver/org.neo4j.driver.internal.util=ALL-UNNAMED --add-opens org.neo4j.driver/org.neo4j.driver.internal.async=ALL-UNNAMED</failsafe.parallelizable.jpms.args>
2525
<blockhound.tag>blockHoundTest</blockhound.tag>
2626
<maven.deploy.skip>false</maven.deploy.skip>
@@ -118,6 +118,10 @@
118118
<groupId>ch.qos.logback</groupId>
119119
<artifactId>logback-classic</artifactId>
120120
</dependency>
121+
<dependency>
122+
<groupId>com.tngtech.archunit</groupId>
123+
<artifactId>archunit-junit5</artifactId>
124+
</dependency>
121125
</dependencies>
122126

123127
<build>

driver/src/main/java/org/neo4j/driver/Config.java

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,8 @@
3737
import org.neo4j.driver.async.AsyncSession;
3838
import org.neo4j.driver.exceptions.UnsupportedFeatureException;
3939
import org.neo4j.driver.internal.InternalNotificationConfig;
40+
import org.neo4j.driver.internal.RoutingSettings;
4041
import org.neo4j.driver.internal.SecuritySettings;
41-
import org.neo4j.driver.internal.async.pool.PoolSettings;
42-
import org.neo4j.driver.internal.cluster.RoutingSettings;
43-
import org.neo4j.driver.internal.handlers.pulln.FetchSizeUtil;
4442
import org.neo4j.driver.internal.retry.ExponentialBackoffRetryLogic;
4543
import org.neo4j.driver.net.ServerAddressResolver;
4644
import org.neo4j.driver.util.Experimental;
@@ -400,10 +398,10 @@ public boolean isTelemetryDisabled() {
400398
public static final class ConfigBuilder {
401399
private Logging logging = DEV_NULL_LOGGING;
402400
private boolean logLeakedSessions;
403-
private int maxConnectionPoolSize = PoolSettings.DEFAULT_MAX_CONNECTION_POOL_SIZE;
404-
private long idleTimeBeforeConnectionTest = PoolSettings.DEFAULT_IDLE_TIME_BEFORE_CONNECTION_TEST;
405-
private long maxConnectionLifetimeMillis = PoolSettings.DEFAULT_MAX_CONNECTION_LIFETIME;
406-
private long connectionAcquisitionTimeoutMillis = PoolSettings.DEFAULT_CONNECTION_ACQUISITION_TIMEOUT;
401+
private int maxConnectionPoolSize = 100;
402+
private long idleTimeBeforeConnectionTest = -1;
403+
private long maxConnectionLifetimeMillis = TimeUnit.HOURS.toMillis(1);
404+
private long connectionAcquisitionTimeoutMillis = TimeUnit.SECONDS.toMillis(60);
407405
private String userAgent = format("neo4j-java/%s", driverVersion());
408406
private final SecuritySettings.SecuritySettingsBuilder securitySettingsBuilder =
409407
new SecuritySettings.SecuritySettingsBuilder();
@@ -412,7 +410,7 @@ public static final class ConfigBuilder {
412410
private long maxTransactionRetryTimeMillis = ExponentialBackoffRetryLogic.DEFAULT_MAX_RETRY_TIME_MS;
413411
private ServerAddressResolver resolver;
414412
private MetricsAdapter metricsAdapter = MetricsAdapter.DEV_NULL;
415-
private long fetchSize = FetchSizeUtil.DEFAULT_FETCH_SIZE;
413+
private long fetchSize = 1000;
416414
private int eventLoopThreads = 0;
417415

418416
private NotificationConfig notificationConfig = NotificationConfig.defaultConfig();
@@ -644,7 +642,11 @@ public ConfigBuilder withRoutingTablePurgeDelay(long delay, TimeUnit unit) {
644642
* @return this builder
645643
*/
646644
public ConfigBuilder withFetchSize(long size) {
647-
this.fetchSize = FetchSizeUtil.assertValidFetchSize(size);
645+
if (size <= 0 && size != -1) {
646+
throw new IllegalArgumentException(String.format(
647+
"The record fetch size may not be 0 or negative. Illegal record fetch size: %s.", size));
648+
}
649+
this.fetchSize = size;
648650
return this;
649651
}
650652

driver/src/main/java/org/neo4j/driver/GraphDatabase.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
* @since 1.0
3333
*/
3434
public final class GraphDatabase {
35+
3536
private GraphDatabase() {}
3637

3738
/**

driver/src/main/java/org/neo4j/driver/SessionConfig.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
package org.neo4j.driver;
1818

1919
import static java.util.Objects.requireNonNull;
20-
import static org.neo4j.driver.internal.handlers.pulln.FetchSizeUtil.assertValidFetchSize;
2120

2221
import java.io.Serial;
2322
import java.io.Serializable;
@@ -374,7 +373,11 @@ public Builder withDatabase(String database) {
374373
* @return this builder
375374
*/
376375
public Builder withFetchSize(long size) {
377-
this.fetchSize = assertValidFetchSize(size);
376+
if (size <= 0 && size != -1) {
377+
throw new IllegalArgumentException(String.format(
378+
"The record fetch size may not be 0 or negative. Illegal record fetch size: %s.", size));
379+
}
380+
this.fetchSize = size;
378381
return this;
379382
}
380383

driver/src/main/java/org/neo4j/driver/Values.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,10 @@
4040
import java.util.stream.Stream;
4141
import org.neo4j.driver.exceptions.ClientException;
4242
import org.neo4j.driver.internal.AsValue;
43-
import org.neo4j.driver.internal.GqlStatusError;
4443
import org.neo4j.driver.internal.InternalIsoDuration;
4544
import org.neo4j.driver.internal.InternalPoint2D;
4645
import org.neo4j.driver.internal.InternalPoint3D;
46+
import org.neo4j.driver.internal.bolt.api.GqlStatusError;
4747
import org.neo4j.driver.internal.value.BooleanValue;
4848
import org.neo4j.driver.internal.value.BytesValue;
4949
import org.neo4j.driver.internal.value.DateTimeValue;

driver/src/main/java/org/neo4j/driver/exceptions/AuthTokenManagerExecutionException.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919
import java.io.Serial;
2020
import org.neo4j.driver.AuthTokenManager;
21-
import org.neo4j.driver.internal.GqlStatusError;
21+
import org.neo4j.driver.internal.bolt.api.GqlStatusError;
2222

2323
/**
2424
* The {@link org.neo4j.driver.AuthTokenManager} execution has lead to an unexpected result.

driver/src/main/java/org/neo4j/driver/exceptions/AuthenticationException.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import java.io.Serial;
2020
import java.util.Map;
2121
import org.neo4j.driver.Value;
22-
import org.neo4j.driver.internal.GqlStatusError;
22+
import org.neo4j.driver.internal.bolt.api.GqlStatusError;
2323
import org.neo4j.driver.util.Preview;
2424

2525
/**

driver/src/main/java/org/neo4j/driver/exceptions/AuthorizationExpiredException.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import java.io.Serial;
2020
import java.util.Map;
2121
import org.neo4j.driver.Value;
22-
import org.neo4j.driver.internal.GqlStatusError;
22+
import org.neo4j.driver.internal.bolt.api.GqlStatusError;
2323
import org.neo4j.driver.util.Preview;
2424

2525
/**

driver/src/main/java/org/neo4j/driver/exceptions/ClientException.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import java.io.Serial;
2020
import java.util.Map;
2121
import org.neo4j.driver.Value;
22-
import org.neo4j.driver.internal.GqlStatusError;
22+
import org.neo4j.driver.internal.bolt.api.GqlStatusError;
2323
import org.neo4j.driver.util.Preview;
2424

2525
/**

driver/src/main/java/org/neo4j/driver/exceptions/ConnectionReadTimeoutException.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ public class ConnectionReadTimeoutException extends ServiceUnavailableException
3939
* @deprecated superseded by the {@link ConnectionReadTimeoutException#INSTANCE} value
4040
*/
4141
@Deprecated
42+
@SuppressWarnings("DeprecatedIsStillUsed")
4243
public ConnectionReadTimeoutException(String message) {
4344
super(message);
4445
}

driver/src/main/java/org/neo4j/driver/exceptions/DatabaseException.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import java.io.Serial;
2020
import java.util.Map;
2121
import org.neo4j.driver.Value;
22-
import org.neo4j.driver.internal.GqlStatusError;
22+
import org.neo4j.driver.internal.bolt.api.GqlStatusError;
2323
import org.neo4j.driver.util.Preview;
2424

2525
/**

driver/src/main/java/org/neo4j/driver/exceptions/DiscoveryException.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
package org.neo4j.driver.exceptions;
1818

1919
import java.io.Serial;
20-
import org.neo4j.driver.internal.GqlStatusError;
20+
import org.neo4j.driver.internal.bolt.api.GqlStatusError;
2121

2222
/**
2323
* An error has happened while getting routing table with a remote server.

driver/src/main/java/org/neo4j/driver/exceptions/FatalDiscoveryException.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import java.io.Serial;
2020
import java.util.Map;
2121
import org.neo4j.driver.Value;
22-
import org.neo4j.driver.internal.GqlStatusError;
22+
import org.neo4j.driver.internal.bolt.api.GqlStatusError;
2323
import org.neo4j.driver.util.Preview;
2424

2525
/**

driver/src/main/java/org/neo4j/driver/exceptions/Neo4jException.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
import java.util.Objects;
2222
import java.util.Optional;
2323
import org.neo4j.driver.Value;
24-
import org.neo4j.driver.internal.GqlStatusError;
24+
import org.neo4j.driver.internal.bolt.api.GqlStatusError;
2525
import org.neo4j.driver.types.TypeSystem;
2626
import org.neo4j.driver.util.Preview;
2727

driver/src/main/java/org/neo4j/driver/exceptions/ProtocolException.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
package org.neo4j.driver.exceptions;
1818

1919
import java.io.Serial;
20-
import org.neo4j.driver.internal.GqlStatusError;
20+
import org.neo4j.driver.internal.bolt.api.GqlStatusError;
2121

2222
/**
2323
* A signal that the contract for client-server communication has broken down.

driver/src/main/java/org/neo4j/driver/exceptions/ResultConsumedException.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919
import java.io.Serial;
2020
import org.neo4j.driver.QueryRunner;
21-
import org.neo4j.driver.internal.GqlStatusError;
21+
import org.neo4j.driver.internal.bolt.api.GqlStatusError;
2222

2323
/**
2424
* A user is trying to access resources that are no longer valid due to

driver/src/main/java/org/neo4j/driver/exceptions/SecurityException.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import java.io.Serial;
2020
import java.util.Map;
2121
import org.neo4j.driver.Value;
22-
import org.neo4j.driver.internal.GqlStatusError;
22+
import org.neo4j.driver.internal.bolt.api.GqlStatusError;
2323
import org.neo4j.driver.util.Preview;
2424

2525
/**

driver/src/main/java/org/neo4j/driver/exceptions/ServiceUnavailableException.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
package org.neo4j.driver.exceptions;
1818

1919
import java.io.Serial;
20-
import org.neo4j.driver.internal.GqlStatusError;
20+
import org.neo4j.driver.internal.bolt.api.GqlStatusError;
2121

2222
/**
2323
* An <em>ServiceUnavailableException</em> indicates that the driver cannot communicate with the cluster.

driver/src/main/java/org/neo4j/driver/exceptions/SessionExpiredException.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
package org.neo4j.driver.exceptions;
1818

1919
import java.io.Serial;
20-
import org.neo4j.driver.internal.GqlStatusError;
20+
import org.neo4j.driver.internal.bolt.api.GqlStatusError;
2121

2222
/**
2323
* A <em>SessionExpiredException</em> indicates that the session can no longer satisfy the criteria under which it was acquired, e.g. a server no longer accepts

driver/src/main/java/org/neo4j/driver/exceptions/TokenExpiredException.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import java.io.Serial;
2020
import java.util.Map;
2121
import org.neo4j.driver.Value;
22-
import org.neo4j.driver.internal.GqlStatusError;
22+
import org.neo4j.driver.internal.bolt.api.GqlStatusError;
2323
import org.neo4j.driver.util.Preview;
2424

2525
/**

driver/src/main/java/org/neo4j/driver/exceptions/TransactionNestingException.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
package org.neo4j.driver.exceptions;
1818

1919
import java.io.Serial;
20-
import org.neo4j.driver.internal.GqlStatusError;
20+
import org.neo4j.driver.internal.bolt.api.GqlStatusError;
2121

2222
/**
2323
* This exception indicates a user is nesting new transaction with an on-going transaction (unmanaged and/or auto-commit).

driver/src/main/java/org/neo4j/driver/exceptions/TransactionTerminatedException.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import java.io.Serial;
2020
import java.util.Map;
2121
import org.neo4j.driver.Value;
22-
import org.neo4j.driver.internal.GqlStatusError;
22+
import org.neo4j.driver.internal.bolt.api.GqlStatusError;
2323
import org.neo4j.driver.util.Preview;
2424

2525
/**

driver/src/main/java/org/neo4j/driver/exceptions/TransientException.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import java.io.Serial;
2020
import java.util.Map;
2121
import org.neo4j.driver.Value;
22-
import org.neo4j.driver.internal.GqlStatusError;
22+
import org.neo4j.driver.internal.bolt.api.GqlStatusError;
2323
import org.neo4j.driver.util.Preview;
2424

2525
/**

driver/src/main/java/org/neo4j/driver/exceptions/UnsupportedFeatureException.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
package org.neo4j.driver.exceptions;
1818

1919
import java.io.Serial;
20-
import org.neo4j.driver.internal.GqlStatusError;
20+
import org.neo4j.driver.internal.bolt.api.GqlStatusError;
2121

2222
/**
2323
* A feature is not supported in a given setup.

driver/src/main/java/org/neo4j/driver/exceptions/value/ValueException.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919
import java.io.Serial;
2020
import org.neo4j.driver.exceptions.ClientException;
21-
import org.neo4j.driver.internal.GqlStatusError;
21+
import org.neo4j.driver.internal.bolt.api.GqlStatusError;
2222

2323
/**
2424
* A <em>ValueException</em> indicates that the client has carried out an operation on values incorrectly.
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
/*
2+
* Copyright (c) "Neo4j"
3+
* Neo4j Sweden AB [https://neo4j.com]
4+
*
5+
* Licensed under the Apache License, Version 2.0 (the "License");
6+
* you may not use this file except in compliance with the License.
7+
* You may obtain a copy of the License at
8+
*
9+
* http://www.apache.org/licenses/LICENSE-2.0
10+
*
11+
* Unless required by applicable law or agreed to in writing, software
12+
* distributed under the License is distributed on an "AS IS" BASIS,
13+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
* See the License for the specific language governing permissions and
15+
* limitations under the License.
16+
*/
17+
package org.neo4j.driver.internal;
18+
19+
import java.util.ResourceBundle;
20+
import org.neo4j.driver.Logger;
21+
22+
public class BoltLogger implements System.Logger {
23+
private final Logger logger;
24+
25+
public BoltLogger(Logger logger) {
26+
this.logger = logger;
27+
}
28+
29+
@Override
30+
public String getName() {
31+
throw new RuntimeException(new UnsupportedOperationException("getName() not supported"));
32+
}
33+
34+
@Override
35+
public boolean isLoggable(Level level) {
36+
return switch (level) {
37+
case ALL -> logger.isTraceEnabled() && logger.isDebugEnabled();
38+
case TRACE -> logger.isTraceEnabled();
39+
case DEBUG -> logger.isDebugEnabled();
40+
case INFO, WARNING, ERROR -> true;
41+
case OFF -> false;
42+
};
43+
}
44+
45+
@Override
46+
public void log(Level level, ResourceBundle bundle, String msg, Throwable thrown) {
47+
switch (level) {
48+
case ALL, OFF -> {}
49+
case TRACE -> logger.trace(msg, thrown);
50+
case DEBUG -> logger.debug(msg, thrown);
51+
case INFO -> logger.info(msg, thrown);
52+
case WARNING -> logger.warn(msg, thrown);
53+
case ERROR -> logger.error(msg, thrown);
54+
}
55+
}
56+
57+
@Override
58+
public void log(Level level, ResourceBundle bundle, String format, Object... params) {
59+
switch (level) {
60+
case TRACE -> logger.trace(format, params);
61+
case DEBUG -> logger.debug(format, params);
62+
case INFO -> logger.info(format, params);
63+
case WARNING -> logger.warn(format, params);
64+
case ALL, OFF, ERROR -> {}
65+
}
66+
}
67+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
/*
2+
* Copyright (c) "Neo4j"
3+
* Neo4j Sweden AB [https://neo4j.com]
4+
*
5+
* Licensed under the Apache License, Version 2.0 (the "License");
6+
* you may not use this file except in compliance with the License.
7+
* You may obtain a copy of the License at
8+
*
9+
* http://www.apache.org/licenses/LICENSE-2.0
10+
*
11+
* Unless required by applicable law or agreed to in writing, software
12+
* distributed under the License is distributed on an "AS IS" BASIS,
13+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
* See the License for the specific language governing permissions and
15+
* limitations under the License.
16+
*/
17+
package org.neo4j.driver.internal;
18+
19+
import org.neo4j.driver.Logging;
20+
import org.neo4j.driver.internal.bolt.api.LoggingProvider;
21+
22+
public class BoltLoggingProvider implements LoggingProvider {
23+
private final Logging logging;
24+
25+
public BoltLoggingProvider(Logging logging) {
26+
this.logging = logging;
27+
}
28+
29+
@Override
30+
public System.Logger getLog(Class<?> cls) {
31+
return new BoltLogger(logging.getLog(cls));
32+
}
33+
34+
@Override
35+
public System.Logger getLog(String name) {
36+
return new BoltLogger(logging.getLog(name));
37+
}
38+
}

0 commit comments

Comments
 (0)