handler,
+ ValueFactory valueFactory) {
return CompletableFuture.failedStage(new BoltUnsupportedFeatureException("logon not supported"));
}
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/Message.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/Message.java
similarity index 91%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/Message.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/Message.java
index 20a05bd7e5..dd77b8e4d6 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/Message.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/Message.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging;
/**
* Base class for all protocol messages.
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/MessageEncoder.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/MessageEncoder.java
similarity index 75%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/MessageEncoder.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/MessageEncoder.java
index 1b7b78654b..dc1a9a4041 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/MessageEncoder.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/MessageEncoder.java
@@ -14,10 +14,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging;
import java.io.IOException;
+import org.neo4j.driver.internal.bolt.api.values.ValueFactory;
public interface MessageEncoder {
- void encode(Message message, ValuePacker packer) throws IOException;
+ void encode(Message message, ValuePacker packer, ValueFactory valueFactory) throws IOException;
}
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/MessageFormat.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/MessageFormat.java
similarity index 68%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/MessageFormat.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/MessageFormat.java
index b91dfff4bb..218771c1d6 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/MessageFormat.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/MessageFormat.java
@@ -14,11 +14,12 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging;
import java.io.IOException;
-import org.neo4j.driver.internal.bolt.basicimpl.packstream.PackInput;
-import org.neo4j.driver.internal.bolt.basicimpl.packstream.PackOutput;
+import org.neo4j.driver.internal.bolt.api.values.ValueFactory;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.packstream.PackInput;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.packstream.PackOutput;
public interface MessageFormat {
interface Writer {
@@ -29,14 +30,14 @@ interface Reader {
void read(ResponseMessageHandler handler) throws IOException;
}
- Writer newWriter(PackOutput output);
+ Writer newWriter(PackOutput output, ValueFactory valueFactory);
- Reader newReader(PackInput input);
+ Reader newReader(PackInput input, ValueFactory valueFactory);
/**
* Enables datetime in UTC if supported by the given message format. This is only for use with formats that support multiple modes.
*
- * This only takes effect on subsequent writer and reader creation via {@link #newWriter(PackOutput)} and {@link #newReader(PackInput)}.
+ * This only takes effect on subsequent writer and reader creation via {@link #newWriter(PackOutput, ValueFactory)} and {@link #newReader(PackInput, ValueFactory)}.
*/
default void enableDateTimeUtc() {}
}
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/MessageHandler.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/MessageHandler.java
similarity index 91%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/MessageHandler.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/MessageHandler.java
index e8fadc1592..7b67fe07ee 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/MessageHandler.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/MessageHandler.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging;
public interface MessageHandler {
void onError(Throwable throwable);
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/PullMessageHandler.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/PullMessageHandler.java
similarity index 86%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/PullMessageHandler.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/PullMessageHandler.java
index 8e3ea17e9a..9ca5346f98 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/PullMessageHandler.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/PullMessageHandler.java
@@ -14,10 +14,10 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging;
-import org.neo4j.driver.Value;
import org.neo4j.driver.internal.bolt.api.summary.PullSummary;
+import org.neo4j.driver.internal.bolt.api.values.Value;
public interface PullMessageHandler extends MessageHandler {
void onRecord(Value[] fields);
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/ResponseMessageHandler.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/ResponseMessageHandler.java
similarity index 88%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/ResponseMessageHandler.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/ResponseMessageHandler.java
index 8c0deb4637..2cd81da268 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/ResponseMessageHandler.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/ResponseMessageHandler.java
@@ -14,11 +14,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging;
import java.util.Map;
-import org.neo4j.driver.Value;
import org.neo4j.driver.internal.bolt.api.GqlError;
+import org.neo4j.driver.internal.bolt.api.values.Value;
public interface ResponseMessageHandler {
void handleSuccessMessage(Map meta);
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/ValuePacker.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/ValuePacker.java
similarity index 88%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/ValuePacker.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/ValuePacker.java
index 46d14143b6..b85c6168fa 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/ValuePacker.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/ValuePacker.java
@@ -14,11 +14,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging;
import java.io.IOException;
import java.util.Map;
-import org.neo4j.driver.Value;
+import org.neo4j.driver.internal.bolt.api.values.Value;
public interface ValuePacker {
void packStructHeader(int size, byte signature) throws IOException;
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/ValueUnpacker.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/ValueUnpacker.java
similarity index 88%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/ValueUnpacker.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/ValueUnpacker.java
index 6fc60ed10f..9e646cfaed 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/ValueUnpacker.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/ValueUnpacker.java
@@ -14,11 +14,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging;
import java.io.IOException;
import java.util.Map;
-import org.neo4j.driver.Value;
+import org.neo4j.driver.internal.bolt.api.values.Value;
public interface ValueUnpacker {
@SuppressWarnings("UnusedReturnValue")
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/common/CommonMessageReader.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/common/CommonMessageReader.java
similarity index 66%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/common/CommonMessageReader.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/common/CommonMessageReader.java
index 207419403b..50844d9c3e 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/common/CommonMessageReader.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/common/CommonMessageReader.java
@@ -14,31 +14,34 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging.common;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.common;
import java.io.IOException;
import java.util.Map;
-import org.neo4j.driver.Values;
+import java.util.Objects;
import org.neo4j.driver.internal.bolt.api.GqlError;
import org.neo4j.driver.internal.bolt.api.GqlStatusError;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.MessageFormat;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.ResponseMessageHandler;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.ValueUnpacker;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.response.FailureMessage;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.response.IgnoredMessage;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.response.RecordMessage;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.response.SuccessMessage;
-import org.neo4j.driver.internal.bolt.basicimpl.packstream.PackInput;
+import org.neo4j.driver.internal.bolt.api.values.ValueFactory;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.MessageFormat;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.ResponseMessageHandler;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.ValueUnpacker;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.response.FailureMessage;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.response.IgnoredMessage;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.response.RecordMessage;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.response.SuccessMessage;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.packstream.PackInput;
public class CommonMessageReader implements MessageFormat.Reader {
protected final ValueUnpacker unpacker;
+ protected final ValueFactory valueFactory;
- public CommonMessageReader(PackInput input, boolean dateTimeUtcEnabled) {
- this(new CommonValueUnpacker(input, dateTimeUtcEnabled));
+ public CommonMessageReader(PackInput input, boolean dateTimeUtcEnabled, ValueFactory valueFactory) {
+ this(new CommonValueUnpacker(input, dateTimeUtcEnabled, valueFactory), valueFactory);
}
- protected CommonMessageReader(ValueUnpacker unpacker) {
+ protected CommonMessageReader(ValueUnpacker unpacker, ValueFactory valueFactory) {
this.unpacker = unpacker;
+ this.valueFactory = Objects.requireNonNull(valueFactory);
}
@Override
@@ -64,9 +67,9 @@ protected void unpackFailureMessage(ResponseMessageHandler output) throws IOExce
var code = params.get("code").asString();
var message = params.get("message").asString();
var diagnosticRecord = Map.ofEntries(
- Map.entry("CURRENT_SCHEMA", Values.value("/")),
- Map.entry("OPERATION", Values.value("")),
- Map.entry("OPERATION_CODE", Values.value("0")));
+ Map.entry("CURRENT_SCHEMA", valueFactory.value("/")),
+ Map.entry("OPERATION", valueFactory.value("")),
+ Map.entry("OPERATION_CODE", valueFactory.value("0")));
var gqlError = new GqlError(
GqlStatusError.UNKNOWN.getStatus(),
GqlStatusError.UNKNOWN.getStatusDescription(message),
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/common/CommonValuePacker.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/common/CommonValuePacker.java
similarity index 88%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/common/CommonValuePacker.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/common/CommonValuePacker.java
index 23ebf701ee..bc4475d4e7 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/common/CommonValuePacker.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/common/CommonValuePacker.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging.common;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.common;
import static java.time.ZoneOffset.UTC;
@@ -26,15 +26,12 @@
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import java.util.Map;
-import org.neo4j.driver.Value;
-import org.neo4j.driver.internal.InternalPoint2D;
-import org.neo4j.driver.internal.InternalPoint3D;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.ValuePacker;
-import org.neo4j.driver.internal.bolt.basicimpl.packstream.PackOutput;
-import org.neo4j.driver.internal.bolt.basicimpl.packstream.PackStream;
-import org.neo4j.driver.internal.value.InternalValue;
-import org.neo4j.driver.types.IsoDuration;
-import org.neo4j.driver.types.Point;
+import org.neo4j.driver.internal.bolt.api.values.IsoDuration;
+import org.neo4j.driver.internal.bolt.api.values.Point;
+import org.neo4j.driver.internal.bolt.api.values.Value;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.ValuePacker;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.packstream.PackOutput;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.packstream.PackStream;
public class CommonValuePacker implements ValuePacker {
@@ -85,11 +82,7 @@ public final void pack(String string) throws IOException {
@Override
public final void pack(Value value) throws IOException {
- if (value instanceof InternalValue) {
- packInternalValue(((InternalValue) value));
- } else {
- throw new IllegalArgumentException("Unable to pack: " + value);
- }
+ packInternalValue(value);
}
@Override
@@ -105,8 +98,8 @@ public final void pack(Map map) throws IOException {
}
}
- protected void packInternalValue(InternalValue value) throws IOException {
- switch (value.typeConstructor()) {
+ protected void packInternalValue(Value value) throws IOException {
+ switch (value.type()) {
case DATE -> packDate(value.asLocalDate());
case TIME -> packTime(value.asOffsetTime());
case LOCAL_TIME -> packLocalTime(value.asLocalTime());
@@ -227,12 +220,10 @@ private void packDuration(IsoDuration duration) throws IOException {
}
private void packPoint(Point point) throws IOException {
- if (point instanceof InternalPoint2D) {
+ if (Double.isNaN(point.z())) {
packPoint2D(point);
- } else if (point instanceof InternalPoint3D) {
- packPoint3D(point);
} else {
- throw new IOException(String.format("Unknown type: type: %s, value: %s", point.getClass(), point));
+ packPoint3D(point);
}
}
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/common/CommonValueUnpacker.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/common/CommonValueUnpacker.java
similarity index 74%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/common/CommonValueUnpacker.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/common/CommonValueUnpacker.java
index a706de2471..1f69c62f98 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/common/CommonValueUnpacker.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/common/CommonValueUnpacker.java
@@ -14,12 +14,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging.common;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.common;
import static java.time.ZoneOffset.UTC;
-import static org.neo4j.driver.Values.isoDuration;
-import static org.neo4j.driver.Values.point;
-import static org.neo4j.driver.Values.value;
import java.io.IOException;
import java.time.DateTimeException;
@@ -37,26 +34,20 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.function.Supplier;
-import org.neo4j.driver.Value;
-import org.neo4j.driver.internal.InternalNode;
-import org.neo4j.driver.internal.InternalPath;
-import org.neo4j.driver.internal.InternalRelationship;
import org.neo4j.driver.internal.bolt.api.exception.BoltClientException;
import org.neo4j.driver.internal.bolt.api.exception.BoltProtocolException;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.ValueUnpacker;
-import org.neo4j.driver.internal.bolt.basicimpl.packstream.PackInput;
-import org.neo4j.driver.internal.bolt.basicimpl.packstream.PackStream;
-import org.neo4j.driver.internal.types.TypeConstructor;
-import org.neo4j.driver.internal.value.ListValue;
-import org.neo4j.driver.internal.value.MapValue;
-import org.neo4j.driver.internal.value.NodeValue;
-import org.neo4j.driver.internal.value.PathValue;
-import org.neo4j.driver.internal.value.RelationshipValue;
-import org.neo4j.driver.internal.value.UnsupportedDateTimeValue;
-import org.neo4j.driver.types.Node;
-import org.neo4j.driver.types.Path;
-import org.neo4j.driver.types.Relationship;
+import org.neo4j.driver.internal.bolt.api.values.Node;
+import org.neo4j.driver.internal.bolt.api.values.Path;
+import org.neo4j.driver.internal.bolt.api.values.Relationship;
+import org.neo4j.driver.internal.bolt.api.values.Segment;
+import org.neo4j.driver.internal.bolt.api.values.Type;
+import org.neo4j.driver.internal.bolt.api.values.Value;
+import org.neo4j.driver.internal.bolt.api.values.ValueFactory;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.ValueUnpacker;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.packstream.PackInput;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.packstream.PackStream;
public class CommonValueUnpacker implements ValueUnpacker {
public static final byte DATE = 'D';
@@ -96,10 +87,12 @@ public class CommonValueUnpacker implements ValueUnpacker {
private final boolean dateTimeUtcEnabled;
protected final PackStream.Unpacker unpacker;
+ protected final ValueFactory valueFactory;
- public CommonValueUnpacker(PackInput input, boolean dateTimeUtcEnabled) {
+ public CommonValueUnpacker(PackInput input, boolean dateTimeUtcEnabled, ValueFactory valueFactory) {
this.dateTimeUtcEnabled = dateTimeUtcEnabled;
this.unpacker = new PackStream.Unpacker(input);
+ this.valueFactory = Objects.requireNonNull(valueFactory);
}
@Override
@@ -140,25 +133,25 @@ protected Value unpack() throws IOException {
var type = unpacker.peekNextType();
switch (type) {
case NULL -> {
- return value(unpacker.unpackNull());
+ return valueFactory.value(unpacker.unpackNull());
}
case BOOLEAN -> {
- return value(unpacker.unpackBoolean());
+ return valueFactory.value(unpacker.unpackBoolean());
}
case INTEGER -> {
- return value(unpacker.unpackLong());
+ return valueFactory.value(unpacker.unpackLong());
}
case FLOAT -> {
- return value(unpacker.unpackDouble());
+ return valueFactory.value(unpacker.unpackDouble());
}
case BYTES -> {
- return value(unpacker.unpackBytes());
+ return valueFactory.value(unpacker.unpackBytes());
}
case STRING -> {
- return value(unpacker.unpackString());
+ return valueFactory.value(unpacker.unpackString());
}
case MAP -> {
- return new MapValue(unpackMap());
+ return valueFactory.value(unpackMap());
}
case LIST -> {
var size = (int) unpacker.unpackListHeader();
@@ -166,7 +159,7 @@ protected Value unpack() throws IOException {
for (var j = 0; j < size; j++) {
vals[j] = unpack();
}
- return new ListValue(vals);
+ return valueFactory.value(vals);
}
case STRUCT -> {
var size = unpacker.unpackStructHeader();
@@ -180,24 +173,24 @@ protected Value unpack() throws IOException {
private Value unpackStruct(long size, byte type) throws IOException {
switch (type) {
case DATE -> {
- ensureCorrectStructSize(TypeConstructor.DATE, DATE_STRUCT_SIZE, size);
+ ensureCorrectStructSize(Type.DATE, DATE_STRUCT_SIZE, size);
return unpackDate();
}
case TIME -> {
- ensureCorrectStructSize(TypeConstructor.TIME, TIME_STRUCT_SIZE, size);
+ ensureCorrectStructSize(Type.TIME, TIME_STRUCT_SIZE, size);
return unpackTime();
}
case LOCAL_TIME -> {
- ensureCorrectStructSize(TypeConstructor.LOCAL_TIME, LOCAL_TIME_STRUCT_SIZE, size);
+ ensureCorrectStructSize(Type.LOCAL_TIME, LOCAL_TIME_STRUCT_SIZE, size);
return unpackLocalTime();
}
case LOCAL_DATE_TIME -> {
- ensureCorrectStructSize(TypeConstructor.LOCAL_DATE_TIME, LOCAL_DATE_TIME_STRUCT_SIZE, size);
+ ensureCorrectStructSize(Type.LOCAL_DATE_TIME, LOCAL_DATE_TIME_STRUCT_SIZE, size);
return unpackLocalDateTime();
}
case DATE_TIME_WITH_ZONE_OFFSET -> {
if (!dateTimeUtcEnabled) {
- ensureCorrectStructSize(TypeConstructor.DATE_TIME, DATE_TIME_STRUCT_SIZE, size);
+ ensureCorrectStructSize(Type.DATE_TIME, DATE_TIME_STRUCT_SIZE, size);
return unpackDateTime(ZoneMode.OFFSET, BaselineMode.LEGACY);
} else {
throw instantiateExceptionForUnknownType(type);
@@ -205,7 +198,7 @@ private Value unpackStruct(long size, byte type) throws IOException {
}
case DATE_TIME_WITH_ZONE_OFFSET_UTC -> {
if (dateTimeUtcEnabled) {
- ensureCorrectStructSize(TypeConstructor.DATE_TIME, DATE_TIME_STRUCT_SIZE, size);
+ ensureCorrectStructSize(Type.DATE_TIME, DATE_TIME_STRUCT_SIZE, size);
return unpackDateTime(ZoneMode.OFFSET, BaselineMode.UTC);
} else {
throw instantiateExceptionForUnknownType(type);
@@ -213,7 +206,7 @@ private Value unpackStruct(long size, byte type) throws IOException {
}
case DATE_TIME_WITH_ZONE_ID -> {
if (!dateTimeUtcEnabled) {
- ensureCorrectStructSize(TypeConstructor.DATE_TIME, DATE_TIME_STRUCT_SIZE, size);
+ ensureCorrectStructSize(Type.DATE_TIME, DATE_TIME_STRUCT_SIZE, size);
return unpackDateTime(ZoneMode.ZONE_ID, BaselineMode.LEGACY);
} else {
throw instantiateExceptionForUnknownType(type);
@@ -221,49 +214,48 @@ private Value unpackStruct(long size, byte type) throws IOException {
}
case DATE_TIME_WITH_ZONE_ID_UTC -> {
if (dateTimeUtcEnabled) {
- ensureCorrectStructSize(TypeConstructor.DATE_TIME, DATE_TIME_STRUCT_SIZE, size);
+ ensureCorrectStructSize(Type.DATE_TIME, DATE_TIME_STRUCT_SIZE, size);
return unpackDateTime(ZoneMode.ZONE_ID, BaselineMode.UTC);
} else {
throw instantiateExceptionForUnknownType(type);
}
}
case DURATION -> {
- ensureCorrectStructSize(TypeConstructor.DURATION, DURATION_TIME_STRUCT_SIZE, size);
+ ensureCorrectStructSize(Type.DURATION, DURATION_TIME_STRUCT_SIZE, size);
return unpackDuration();
}
case POINT_2D_STRUCT_TYPE -> {
- ensureCorrectStructSize(TypeConstructor.POINT, POINT_2D_STRUCT_SIZE, size);
+ ensureCorrectStructSize(Type.POINT, POINT_2D_STRUCT_SIZE, size);
return unpackPoint2D();
}
case POINT_3D_STRUCT_TYPE -> {
- ensureCorrectStructSize(TypeConstructor.POINT, POINT_3D_STRUCT_SIZE, size);
+ ensureCorrectStructSize(Type.POINT, POINT_3D_STRUCT_SIZE, size);
return unpackPoint3D();
}
case NODE -> {
- ensureCorrectStructSize(TypeConstructor.NODE, getNodeFields(), size);
- var adapted = unpackNode();
- return new NodeValue(adapted);
+ ensureCorrectStructSize(Type.NODE, getNodeFields(), size);
+ return valueFactory.value(unpackNode());
}
case RELATIONSHIP -> {
- ensureCorrectStructSize(TypeConstructor.RELATIONSHIP, getRelationshipFields(), size);
- return unpackRelationship();
+ ensureCorrectStructSize(Type.RELATIONSHIP, getRelationshipFields(), size);
+ return valueFactory.value(unpackRelationship());
}
case PATH -> {
- ensureCorrectStructSize(TypeConstructor.PATH, 3, size);
- return unpackPath();
+ ensureCorrectStructSize(Type.PATH, 3, size);
+ return valueFactory.value(unpackPath());
}
default -> throw instantiateExceptionForUnknownType(type);
}
}
- protected Value unpackRelationship() throws IOException {
+ protected Relationship unpackRelationship() throws IOException {
var urn = unpacker.unpackLong();
var startUrn = unpacker.unpackLong();
var endUrn = unpacker.unpackLong();
var relType = unpacker.unpackString();
var props = unpackMap();
- var adapted = new InternalRelationship(
+ return valueFactory.relationship(
urn,
String.valueOf(urn),
startUrn,
@@ -272,11 +264,10 @@ protected Value unpackRelationship() throws IOException {
String.valueOf(endUrn),
relType,
props);
- return new RelationshipValue(adapted);
}
@SuppressWarnings("DuplicatedCode")
- protected InternalNode unpackNode() throws IOException {
+ protected Node unpackNode() throws IOException {
var urn = unpacker.unpackLong();
var numLabels = (int) unpacker.unpackListHeader();
@@ -291,29 +282,29 @@ protected InternalNode unpackNode() throws IOException {
props.put(key, unpack());
}
- return new InternalNode(urn, String.valueOf(urn), labels, props);
+ return valueFactory.node(urn, String.valueOf(urn), labels, props);
}
- @SuppressWarnings({"deprecation", "DuplicatedCode"})
- protected Value unpackPath() throws IOException {
+ @SuppressWarnings("DuplicatedCode")
+ protected Path unpackPath() throws IOException {
// List of unique nodes
var uniqNodes = new Node[(int) unpacker.unpackListHeader()];
for (var i = 0; i < uniqNodes.length; i++) {
- ensureCorrectStructSize(TypeConstructor.NODE, getNodeFields(), unpacker.unpackStructHeader());
+ ensureCorrectStructSize(Type.NODE, getNodeFields(), unpacker.unpackStructHeader());
ensureCorrectStructSignature("NODE", NODE, unpacker.unpackStructSignature());
uniqNodes[i] = unpackNode();
}
// List of unique relationships, without start/end information
- var uniqRels = new InternalRelationship[(int) unpacker.unpackListHeader()];
+ var uniqRels = new Relationship[(int) unpacker.unpackListHeader()];
for (var i = 0; i < uniqRels.length; i++) {
- ensureCorrectStructSize(TypeConstructor.RELATIONSHIP, 3, unpacker.unpackStructHeader());
+ ensureCorrectStructSize(Type.RELATIONSHIP, 3, unpacker.unpackStructHeader());
ensureCorrectStructSignature(
"UNBOUND_RELATIONSHIP", UNBOUND_RELATIONSHIP, unpacker.unpackStructSignature());
var id = unpacker.unpackLong();
var relType = unpacker.unpackString();
var props = unpackMap();
- uniqRels[i] = new InternalRelationship(
+ uniqRels[i] = valueFactory.relationship(
id, String.valueOf(id), -1, String.valueOf(-1), -1, String.valueOf(-1), relType, props);
}
@@ -322,13 +313,13 @@ protected Value unpackPath() throws IOException {
// Knowing the sequence length, we can create the arrays that will represent the nodes, rels and segments in
// their "path order"
- var segments = new Path.Segment[length / 2];
+ var segments = new Segment[length / 2];
var nodes = new Node[segments.length + 1];
var rels = new Relationship[segments.length];
Node prevNode = uniqNodes[0], nextNode; // Start node is always 0, and isn't encoded in the sequence
nodes[0] = prevNode;
- InternalRelationship rel;
+ Relationship rel;
for (var i = 0; i < segments.length; i++) {
var relIdx = (int) unpacker.unpackLong();
nextNode = uniqNodes[(int) unpacker.unpackLong()];
@@ -345,15 +336,15 @@ protected Value unpackPath() throws IOException {
nodes[i + 1] = nextNode;
rels[i] = rel;
- segments[i] = new InternalPath.SelfContainedSegment(prevNode, rel, nextNode);
+ segments[i] = valueFactory.segment(prevNode, rel, nextNode);
prevNode = nextNode;
}
- return new PathValue(new InternalPath(Arrays.asList(segments), Arrays.asList(nodes), Arrays.asList(rels)));
+ return valueFactory.path(Arrays.asList(segments), Arrays.asList(nodes), Arrays.asList(rels));
}
- protected final void ensureCorrectStructSize(TypeConstructor typeConstructor, int expected, long actual) {
+ protected final void ensureCorrectStructSize(Type type, int expected, long actual) {
if (expected != actual) {
- var structName = typeConstructor.toString();
+ var structName = type.toString();
throw new BoltClientException(String.format(
"Invalid message received, serialized %s structures should have %d fields, "
+ "received %s structure has %d fields.",
@@ -371,7 +362,7 @@ protected void ensureCorrectStructSignature(String structName, byte expected, by
private Value unpackDate() throws IOException {
var epochDay = unpacker.unpackLong();
- return value(LocalDate.ofEpochDay(epochDay));
+ return valueFactory.value(LocalDate.ofEpochDay(epochDay));
}
private Value unpackTime() throws IOException {
@@ -380,18 +371,18 @@ private Value unpackTime() throws IOException {
var localTime = LocalTime.ofNanoOfDay(nanoOfDayLocal);
var offset = ZoneOffset.ofTotalSeconds(offsetSeconds);
- return value(OffsetTime.of(localTime, offset));
+ return valueFactory.value(OffsetTime.of(localTime, offset));
}
private Value unpackLocalTime() throws IOException {
var nanoOfDayLocal = unpacker.unpackLong();
- return value(LocalTime.ofNanoOfDay(nanoOfDayLocal));
+ return valueFactory.value(LocalTime.ofNanoOfDay(nanoOfDayLocal));
}
private Value unpackLocalDateTime() throws IOException {
var epochSecondUtc = unpacker.unpackLong();
var nano = Math.toIntExact(unpacker.unpackLong());
- return value(LocalDateTime.ofEpochSecond(epochSecondUtc, nano, UTC));
+ return valueFactory.value(LocalDateTime.ofEpochSecond(epochSecondUtc, nano, UTC));
}
private Value unpackDateTime(ZoneMode unpackOffset, BaselineMode useUtcBaseline) throws IOException {
@@ -409,11 +400,11 @@ private Value unpackDateTime(ZoneMode unpackOffset, BaselineMode useUtcBaseline)
try {
zoneId = zoneIdSupplier.get();
} catch (DateTimeException e) {
- return new UnsupportedDateTimeValue(e);
+ return valueFactory.unsupportedDateTimeValue(e);
}
return useUtcBaseline == BaselineMode.UTC
- ? value(newZonedDateTimeUsingUtcBaseline(epochSecondLocal, nano, zoneId))
- : value(newZonedDateTime(epochSecondLocal, nano, zoneId));
+ ? valueFactory.value(newZonedDateTimeUsingUtcBaseline(epochSecondLocal, nano, zoneId))
+ : valueFactory.value(newZonedDateTime(epochSecondLocal, nano, zoneId));
}
private Value unpackDuration() throws IOException {
@@ -421,14 +412,14 @@ private Value unpackDuration() throws IOException {
var days = unpacker.unpackLong();
var seconds = unpacker.unpackLong();
var nanoseconds = Math.toIntExact(unpacker.unpackLong());
- return isoDuration(months, days, seconds, nanoseconds);
+ return valueFactory.isoDuration(months, days, seconds, nanoseconds);
}
private Value unpackPoint2D() throws IOException {
var srid = Math.toIntExact(unpacker.unpackLong());
var x = unpacker.unpackDouble();
var y = unpacker.unpackDouble();
- return point(srid, x, y);
+ return valueFactory.point(srid, x, y);
}
private Value unpackPoint3D() throws IOException {
@@ -436,7 +427,7 @@ private Value unpackPoint3D() throws IOException {
var x = unpacker.unpackDouble();
var y = unpacker.unpackDouble();
var z = unpacker.unpackDouble();
- return point(srid, x, y, z);
+ return valueFactory.point(srid, x, y, z);
}
private static ZonedDateTime newZonedDateTime(long epochSecondLocal, long nano, ZoneId zoneId) {
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/encode/BeginMessageEncoder.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/encode/BeginMessageEncoder.java
similarity index 59%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/encode/BeginMessageEncoder.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/encode/BeginMessageEncoder.java
index a16a8f5f6c..3cf233fb22 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/encode/BeginMessageEncoder.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/encode/BeginMessageEncoder.java
@@ -14,19 +14,20 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging.encode;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.encode;
-import static org.neo4j.driver.internal.bolt.basicimpl.util.Preconditions.checkArgument;
+import static org.neo4j.driver.internal.bolt.basicimpl.impl.util.Preconditions.checkArgument;
import java.io.IOException;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.Message;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.MessageEncoder;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.ValuePacker;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.request.BeginMessage;
+import org.neo4j.driver.internal.bolt.api.values.ValueFactory;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.Message;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.MessageEncoder;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.ValuePacker;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.request.BeginMessage;
public class BeginMessageEncoder implements MessageEncoder {
@Override
- public void encode(Message message, ValuePacker packer) throws IOException {
+ public void encode(Message message, ValuePacker packer, ValueFactory valueFactory) throws IOException {
checkArgument(message, BeginMessage.class);
var beginMessage = (BeginMessage) message;
packer.packStructHeader(1, beginMessage.signature());
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/encode/CommitMessageEncoder.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/encode/CommitMessageEncoder.java
similarity index 56%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/encode/CommitMessageEncoder.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/encode/CommitMessageEncoder.java
index c3136cff57..d47c1592da 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/encode/CommitMessageEncoder.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/encode/CommitMessageEncoder.java
@@ -14,19 +14,20 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging.encode;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.encode;
-import static org.neo4j.driver.internal.bolt.basicimpl.util.Preconditions.checkArgument;
+import static org.neo4j.driver.internal.bolt.basicimpl.impl.util.Preconditions.checkArgument;
import java.io.IOException;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.Message;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.MessageEncoder;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.ValuePacker;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.request.CommitMessage;
+import org.neo4j.driver.internal.bolt.api.values.ValueFactory;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.Message;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.MessageEncoder;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.ValuePacker;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.request.CommitMessage;
public class CommitMessageEncoder implements MessageEncoder {
@Override
- public void encode(Message message, ValuePacker packer) throws IOException {
+ public void encode(Message message, ValuePacker packer, ValueFactory valueFactory) throws IOException {
checkArgument(message, CommitMessage.class);
packer.packStructHeader(0, CommitMessage.SIGNATURE);
}
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/encode/DiscardAllMessageEncoder.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/encode/DiscardAllMessageEncoder.java
similarity index 57%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/encode/DiscardAllMessageEncoder.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/encode/DiscardAllMessageEncoder.java
index 17903ac19a..6d13df0b27 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/encode/DiscardAllMessageEncoder.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/encode/DiscardAllMessageEncoder.java
@@ -14,19 +14,20 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging.encode;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.encode;
-import static org.neo4j.driver.internal.bolt.basicimpl.util.Preconditions.checkArgument;
+import static org.neo4j.driver.internal.bolt.basicimpl.impl.util.Preconditions.checkArgument;
import java.io.IOException;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.Message;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.MessageEncoder;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.ValuePacker;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.request.DiscardAllMessage;
+import org.neo4j.driver.internal.bolt.api.values.ValueFactory;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.Message;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.MessageEncoder;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.ValuePacker;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.request.DiscardAllMessage;
public class DiscardAllMessageEncoder implements MessageEncoder {
@Override
- public void encode(Message message, ValuePacker packer) throws IOException {
+ public void encode(Message message, ValuePacker packer, ValueFactory valueFactory) throws IOException {
checkArgument(message, DiscardAllMessage.class);
packer.packStructHeader(0, DiscardAllMessage.SIGNATURE);
}
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/encode/DiscardMessageEncoder.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/encode/DiscardMessageEncoder.java
similarity index 58%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/encode/DiscardMessageEncoder.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/encode/DiscardMessageEncoder.java
index 41e40dfe18..284f3f6f12 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/encode/DiscardMessageEncoder.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/encode/DiscardMessageEncoder.java
@@ -14,19 +14,20 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging.encode;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.encode;
-import static org.neo4j.driver.internal.bolt.basicimpl.util.Preconditions.checkArgument;
+import static org.neo4j.driver.internal.bolt.basicimpl.impl.util.Preconditions.checkArgument;
import java.io.IOException;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.Message;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.MessageEncoder;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.ValuePacker;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.request.DiscardMessage;
+import org.neo4j.driver.internal.bolt.api.values.ValueFactory;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.Message;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.MessageEncoder;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.ValuePacker;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.request.DiscardMessage;
public class DiscardMessageEncoder implements MessageEncoder {
@Override
- public void encode(Message message, ValuePacker packer) throws IOException {
+ public void encode(Message message, ValuePacker packer, ValueFactory valueFactory) throws IOException {
checkArgument(message, DiscardMessage.class);
packer.packStructHeader(1, DiscardMessage.SIGNATURE);
packer.pack(((DiscardMessage) message).metadata());
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/encode/GoodbyeMessageEncoder.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/encode/GoodbyeMessageEncoder.java
similarity index 56%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/encode/GoodbyeMessageEncoder.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/encode/GoodbyeMessageEncoder.java
index d8907c517e..87e56792c3 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/encode/GoodbyeMessageEncoder.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/encode/GoodbyeMessageEncoder.java
@@ -14,19 +14,20 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging.encode;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.encode;
-import static org.neo4j.driver.internal.bolt.basicimpl.util.Preconditions.checkArgument;
+import static org.neo4j.driver.internal.bolt.basicimpl.impl.util.Preconditions.checkArgument;
import java.io.IOException;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.Message;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.MessageEncoder;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.ValuePacker;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.request.GoodbyeMessage;
+import org.neo4j.driver.internal.bolt.api.values.ValueFactory;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.Message;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.MessageEncoder;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.ValuePacker;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.request.GoodbyeMessage;
public class GoodbyeMessageEncoder implements MessageEncoder {
@Override
- public void encode(Message message, ValuePacker packer) throws IOException {
+ public void encode(Message message, ValuePacker packer, ValueFactory valueFactory) throws IOException {
checkArgument(message, GoodbyeMessage.class);
packer.packStructHeader(0, GoodbyeMessage.SIGNATURE);
}
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/encode/HelloMessageEncoder.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/encode/HelloMessageEncoder.java
similarity index 59%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/encode/HelloMessageEncoder.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/encode/HelloMessageEncoder.java
index ae90cdaf41..ad216c33f8 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/encode/HelloMessageEncoder.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/encode/HelloMessageEncoder.java
@@ -14,19 +14,20 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging.encode;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.encode;
-import static org.neo4j.driver.internal.bolt.basicimpl.util.Preconditions.checkArgument;
+import static org.neo4j.driver.internal.bolt.basicimpl.impl.util.Preconditions.checkArgument;
import java.io.IOException;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.Message;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.MessageEncoder;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.ValuePacker;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.request.HelloMessage;
+import org.neo4j.driver.internal.bolt.api.values.ValueFactory;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.Message;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.MessageEncoder;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.ValuePacker;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.request.HelloMessage;
public class HelloMessageEncoder implements MessageEncoder {
@Override
- public void encode(Message message, ValuePacker packer) throws IOException {
+ public void encode(Message message, ValuePacker packer, ValueFactory valueFactory) throws IOException {
checkArgument(message, HelloMessage.class);
var helloMessage = (HelloMessage) message;
packer.packStructHeader(1, helloMessage.signature());
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/encode/LogoffMessageEncoder.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/encode/LogoffMessageEncoder.java
similarity index 56%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/encode/LogoffMessageEncoder.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/encode/LogoffMessageEncoder.java
index 3d1e8e59e7..d98e1f4970 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/encode/LogoffMessageEncoder.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/encode/LogoffMessageEncoder.java
@@ -14,19 +14,20 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging.encode;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.encode;
-import static org.neo4j.driver.internal.bolt.basicimpl.util.Preconditions.checkArgument;
+import static org.neo4j.driver.internal.bolt.basicimpl.impl.util.Preconditions.checkArgument;
import java.io.IOException;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.Message;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.MessageEncoder;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.ValuePacker;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.request.LogoffMessage;
+import org.neo4j.driver.internal.bolt.api.values.ValueFactory;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.Message;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.MessageEncoder;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.ValuePacker;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.request.LogoffMessage;
public class LogoffMessageEncoder implements MessageEncoder {
@Override
- public void encode(Message message, ValuePacker packer) throws IOException {
+ public void encode(Message message, ValuePacker packer, ValueFactory valueFactory) throws IOException {
checkArgument(message, LogoffMessage.class);
packer.packStructHeader(0, message.signature());
}
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/encode/LogonMessageEncoder.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/encode/LogonMessageEncoder.java
similarity index 59%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/encode/LogonMessageEncoder.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/encode/LogonMessageEncoder.java
index f4f732f630..387d545c52 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/encode/LogonMessageEncoder.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/encode/LogonMessageEncoder.java
@@ -14,19 +14,20 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging.encode;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.encode;
-import static org.neo4j.driver.internal.bolt.basicimpl.util.Preconditions.checkArgument;
+import static org.neo4j.driver.internal.bolt.basicimpl.impl.util.Preconditions.checkArgument;
import java.io.IOException;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.Message;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.MessageEncoder;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.ValuePacker;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.request.LogonMessage;
+import org.neo4j.driver.internal.bolt.api.values.ValueFactory;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.Message;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.MessageEncoder;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.ValuePacker;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.request.LogonMessage;
public class LogonMessageEncoder implements MessageEncoder {
@Override
- public void encode(Message message, ValuePacker packer) throws IOException {
+ public void encode(Message message, ValuePacker packer, ValueFactory valueFactory) throws IOException {
checkArgument(message, LogonMessage.class);
var logonMessage = (LogonMessage) message;
packer.packStructHeader(1, logonMessage.signature());
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/encode/PullAllMessageEncoder.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/encode/PullAllMessageEncoder.java
similarity index 56%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/encode/PullAllMessageEncoder.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/encode/PullAllMessageEncoder.java
index 51b0a05ae7..10cb3db1b4 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/encode/PullAllMessageEncoder.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/encode/PullAllMessageEncoder.java
@@ -14,19 +14,20 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging.encode;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.encode;
-import static org.neo4j.driver.internal.bolt.basicimpl.util.Preconditions.checkArgument;
+import static org.neo4j.driver.internal.bolt.basicimpl.impl.util.Preconditions.checkArgument;
import java.io.IOException;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.Message;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.MessageEncoder;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.ValuePacker;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.request.PullAllMessage;
+import org.neo4j.driver.internal.bolt.api.values.ValueFactory;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.Message;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.MessageEncoder;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.ValuePacker;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.request.PullAllMessage;
public class PullAllMessageEncoder implements MessageEncoder {
@Override
- public void encode(Message message, ValuePacker packer) throws IOException {
+ public void encode(Message message, ValuePacker packer, ValueFactory valueFactory) throws IOException {
checkArgument(message, PullAllMessage.class);
packer.packStructHeader(0, PullAllMessage.SIGNATURE);
}
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/encode/PullMessageEncoder.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/encode/PullMessageEncoder.java
similarity index 58%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/encode/PullMessageEncoder.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/encode/PullMessageEncoder.java
index 3c2edd5bc7..ae1a766c33 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/encode/PullMessageEncoder.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/encode/PullMessageEncoder.java
@@ -14,19 +14,20 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging.encode;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.encode;
-import static org.neo4j.driver.internal.bolt.basicimpl.util.Preconditions.checkArgument;
+import static org.neo4j.driver.internal.bolt.basicimpl.impl.util.Preconditions.checkArgument;
import java.io.IOException;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.Message;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.MessageEncoder;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.ValuePacker;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.request.PullMessage;
+import org.neo4j.driver.internal.bolt.api.values.ValueFactory;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.Message;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.MessageEncoder;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.ValuePacker;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.request.PullMessage;
public class PullMessageEncoder implements MessageEncoder {
@Override
- public void encode(Message message, ValuePacker packer) throws IOException {
+ public void encode(Message message, ValuePacker packer, ValueFactory valueFactory) throws IOException {
checkArgument(message, PullMessage.class);
packer.packStructHeader(1, PullMessage.SIGNATURE);
packer.pack(((PullMessage) message).metadata());
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/encode/ResetMessageEncoder.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/encode/ResetMessageEncoder.java
similarity index 56%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/encode/ResetMessageEncoder.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/encode/ResetMessageEncoder.java
index 7fea8b44af..3284f7a31f 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/encode/ResetMessageEncoder.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/encode/ResetMessageEncoder.java
@@ -14,19 +14,20 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging.encode;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.encode;
-import static org.neo4j.driver.internal.bolt.basicimpl.util.Preconditions.checkArgument;
+import static org.neo4j.driver.internal.bolt.basicimpl.impl.util.Preconditions.checkArgument;
import java.io.IOException;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.Message;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.MessageEncoder;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.ValuePacker;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.request.ResetMessage;
+import org.neo4j.driver.internal.bolt.api.values.ValueFactory;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.Message;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.MessageEncoder;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.ValuePacker;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.request.ResetMessage;
public class ResetMessageEncoder implements MessageEncoder {
@Override
- public void encode(Message message, ValuePacker packer) throws IOException {
+ public void encode(Message message, ValuePacker packer, ValueFactory valueFactory) throws IOException {
checkArgument(message, ResetMessage.class);
packer.packStructHeader(0, ResetMessage.SIGNATURE);
}
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/encode/RollbackMessageEncoder.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/encode/RollbackMessageEncoder.java
similarity index 56%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/encode/RollbackMessageEncoder.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/encode/RollbackMessageEncoder.java
index e0a223264a..d049b5715b 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/encode/RollbackMessageEncoder.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/encode/RollbackMessageEncoder.java
@@ -14,19 +14,20 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging.encode;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.encode;
-import static org.neo4j.driver.internal.bolt.basicimpl.util.Preconditions.checkArgument;
+import static org.neo4j.driver.internal.bolt.basicimpl.impl.util.Preconditions.checkArgument;
import java.io.IOException;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.Message;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.MessageEncoder;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.ValuePacker;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.request.RollbackMessage;
+import org.neo4j.driver.internal.bolt.api.values.ValueFactory;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.Message;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.MessageEncoder;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.ValuePacker;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.request.RollbackMessage;
public class RollbackMessageEncoder implements MessageEncoder {
@Override
- public void encode(Message message, ValuePacker packer) throws IOException {
+ public void encode(Message message, ValuePacker packer, ValueFactory valueFactory) throws IOException {
checkArgument(message, RollbackMessage.class);
packer.packStructHeader(0, RollbackMessage.SIGNATURE);
}
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/encode/RouteMessageEncoder.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/encode/RouteMessageEncoder.java
similarity index 59%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/encode/RouteMessageEncoder.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/encode/RouteMessageEncoder.java
index 80d1d79492..cf9e6d95fe 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/encode/RouteMessageEncoder.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/encode/RouteMessageEncoder.java
@@ -14,28 +14,28 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging.encode;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.encode;
-import static org.neo4j.driver.Values.value;
-import static org.neo4j.driver.internal.bolt.basicimpl.util.Preconditions.checkArgument;
+import static org.neo4j.driver.internal.bolt.basicimpl.impl.util.Preconditions.checkArgument;
import java.io.IOException;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.Message;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.MessageEncoder;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.ValuePacker;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.request.RouteMessage;
+import org.neo4j.driver.internal.bolt.api.values.ValueFactory;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.Message;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.MessageEncoder;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.ValuePacker;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.request.RouteMessage;
/**
* Encodes the ROUTE message to the stream
*/
public class RouteMessageEncoder implements MessageEncoder {
@Override
- public void encode(Message message, ValuePacker packer) throws IOException {
+ public void encode(Message message, ValuePacker packer, ValueFactory valueFactory) throws IOException {
checkArgument(message, RouteMessage.class);
var routeMessage = (RouteMessage) message;
packer.packStructHeader(3, message.signature());
packer.pack(routeMessage.routingContext());
- packer.pack(value(routeMessage.bookmarks()));
+ packer.pack(valueFactory.value(routeMessage.bookmarks()));
packer.pack(routeMessage.databaseName());
}
}
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/encode/RouteV44MessageEncoder.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/encode/RouteV44MessageEncoder.java
similarity index 57%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/encode/RouteV44MessageEncoder.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/encode/RouteV44MessageEncoder.java
index cc396be5b8..661002bca1 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/encode/RouteV44MessageEncoder.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/encode/RouteV44MessageEncoder.java
@@ -14,37 +14,37 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging.encode;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.encode;
-import static org.neo4j.driver.Values.value;
-import static org.neo4j.driver.internal.bolt.basicimpl.util.Preconditions.checkArgument;
+import static org.neo4j.driver.internal.bolt.basicimpl.impl.util.Preconditions.checkArgument;
import java.io.IOException;
import java.util.Collections;
import java.util.Map;
-import org.neo4j.driver.Value;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.Message;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.MessageEncoder;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.ValuePacker;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.request.RouteMessage;
+import org.neo4j.driver.internal.bolt.api.values.Value;
+import org.neo4j.driver.internal.bolt.api.values.ValueFactory;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.Message;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.MessageEncoder;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.ValuePacker;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.request.RouteMessage;
/**
* Encodes the ROUTE message to the stream
*/
public class RouteV44MessageEncoder implements MessageEncoder {
@Override
- public void encode(Message message, ValuePacker packer) throws IOException {
+ public void encode(Message message, ValuePacker packer, ValueFactory valueFactory) throws IOException {
checkArgument(message, RouteMessage.class);
var routeMessage = (RouteMessage) message;
packer.packStructHeader(3, message.signature());
packer.pack(routeMessage.routingContext());
- packer.pack(value(routeMessage.bookmarks()));
+ packer.pack(valueFactory.value(routeMessage.bookmarks()));
Map params;
if (routeMessage.impersonatedUser() != null && routeMessage.databaseName() == null) {
- params = Collections.singletonMap("imp_user", value(routeMessage.impersonatedUser()));
+ params = Collections.singletonMap("imp_user", valueFactory.value(routeMessage.impersonatedUser()));
} else if (routeMessage.databaseName() != null) {
- params = Collections.singletonMap("db", value(routeMessage.databaseName()));
+ params = Collections.singletonMap("db", valueFactory.value(routeMessage.databaseName()));
} else {
params = Collections.emptyMap();
}
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/encode/RunWithMetadataMessageEncoder.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/encode/RunWithMetadataMessageEncoder.java
similarity index 61%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/encode/RunWithMetadataMessageEncoder.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/encode/RunWithMetadataMessageEncoder.java
index 226c4b8acd..9757c7e4e4 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/encode/RunWithMetadataMessageEncoder.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/encode/RunWithMetadataMessageEncoder.java
@@ -14,19 +14,20 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging.encode;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.encode;
-import static org.neo4j.driver.internal.bolt.basicimpl.util.Preconditions.checkArgument;
+import static org.neo4j.driver.internal.bolt.basicimpl.impl.util.Preconditions.checkArgument;
import java.io.IOException;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.Message;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.MessageEncoder;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.ValuePacker;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.request.RunWithMetadataMessage;
+import org.neo4j.driver.internal.bolt.api.values.ValueFactory;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.Message;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.MessageEncoder;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.ValuePacker;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.request.RunWithMetadataMessage;
public class RunWithMetadataMessageEncoder implements MessageEncoder {
@Override
- public void encode(Message message, ValuePacker packer) throws IOException {
+ public void encode(Message message, ValuePacker packer, ValueFactory valueFactory) throws IOException {
checkArgument(message, RunWithMetadataMessage.class);
var runMessage = (RunWithMetadataMessage) message;
packer.packStructHeader(3, runMessage.signature());
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/encode/TelemetryMessageEncoder.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/encode/TelemetryMessageEncoder.java
similarity index 56%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/encode/TelemetryMessageEncoder.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/encode/TelemetryMessageEncoder.java
index 75f96f3e23..4d3ff8ae9a 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/encode/TelemetryMessageEncoder.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/encode/TelemetryMessageEncoder.java
@@ -14,23 +14,23 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging.encode;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.encode;
-import static org.neo4j.driver.internal.bolt.basicimpl.util.Preconditions.checkArgument;
+import static org.neo4j.driver.internal.bolt.basicimpl.impl.util.Preconditions.checkArgument;
import java.io.IOException;
-import org.neo4j.driver.Values;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.Message;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.MessageEncoder;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.ValuePacker;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.request.TelemetryMessage;
+import org.neo4j.driver.internal.bolt.api.values.ValueFactory;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.Message;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.MessageEncoder;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.ValuePacker;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.request.TelemetryMessage;
public class TelemetryMessageEncoder implements MessageEncoder {
@Override
- public void encode(Message message, ValuePacker packer) throws IOException {
+ public void encode(Message message, ValuePacker packer, ValueFactory valueFactory) throws IOException {
checkArgument(message, TelemetryMessage.class);
var telemetryMessage = (TelemetryMessage) message;
packer.packStructHeader(1, TelemetryMessage.SIGNATURE);
- packer.pack(Values.value(telemetryMessage.api()));
+ packer.pack(valueFactory.value(telemetryMessage.api()));
}
}
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/AbstractStreamingMessage.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/AbstractStreamingMessage.java
similarity index 73%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/AbstractStreamingMessage.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/AbstractStreamingMessage.java
index 0afa65b82c..5636aa2a99 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/AbstractStreamingMessage.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/AbstractStreamingMessage.java
@@ -14,25 +14,24 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging.request;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.request;
-import static org.neo4j.driver.internal.util.MetadataExtractor.ABSENT_QUERY_ID;
+import static org.neo4j.driver.internal.bolt.basicimpl.impl.util.MetadataExtractor.ABSENT_QUERY_ID;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
-import org.neo4j.driver.Value;
-import org.neo4j.driver.Values;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.Message;
+import org.neo4j.driver.internal.bolt.api.values.Value;
+import org.neo4j.driver.internal.bolt.api.values.ValueFactory;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.Message;
public abstract class AbstractStreamingMessage implements Message {
private final Map metadata = new HashMap<>();
- public static final long STREAM_LIMIT_UNLIMITED = -1;
- AbstractStreamingMessage(long n, long id) {
- this.metadata.put("n", Values.value(n));
+ AbstractStreamingMessage(long n, long id, ValueFactory valueFactory) {
+ this.metadata.put("n", valueFactory.value(n));
if (id != ABSENT_QUERY_ID) {
- this.metadata.put("qid", Values.value(id));
+ this.metadata.put("qid", valueFactory.value(id));
}
}
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/BeginMessage.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/BeginMessage.java
similarity index 83%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/BeginMessage.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/BeginMessage.java
index a2367481e7..2124136e9f 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/BeginMessage.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/BeginMessage.java
@@ -14,19 +14,20 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging.request;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.request;
-import static org.neo4j.driver.internal.bolt.basicimpl.messaging.request.TransactionMetadataBuilder.buildMetadata;
+import static org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.request.TransactionMetadataBuilder.buildMetadata;
import java.time.Duration;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
-import org.neo4j.driver.Value;
import org.neo4j.driver.internal.bolt.api.AccessMode;
import org.neo4j.driver.internal.bolt.api.DatabaseName;
import org.neo4j.driver.internal.bolt.api.LoggingProvider;
import org.neo4j.driver.internal.bolt.api.NotificationConfig;
+import org.neo4j.driver.internal.bolt.api.values.Value;
+import org.neo4j.driver.internal.bolt.api.values.ValueFactory;
public class BeginMessage extends MessageWithMetadata {
public static final byte SIGNATURE = 0x11;
@@ -41,7 +42,8 @@ public BeginMessage(
String txType,
NotificationConfig notificationConfig,
boolean legacyNotifications,
- LoggingProvider logging) {
+ LoggingProvider logging,
+ ValueFactory valueFactory) {
this(
bookmarks,
txTimeout,
@@ -52,7 +54,8 @@ public BeginMessage(
txType,
notificationConfig,
legacyNotifications,
- logging);
+ logging,
+ valueFactory);
}
public BeginMessage(
@@ -65,7 +68,8 @@ public BeginMessage(
String txType,
NotificationConfig notificationConfig,
boolean legacyNotifications,
- LoggingProvider logging) {
+ LoggingProvider logging,
+ ValueFactory valueFactory) {
super(buildMetadata(
txTimeout,
txMetadata,
@@ -76,7 +80,8 @@ public BeginMessage(
txType,
notificationConfig,
legacyNotifications,
- logging));
+ logging,
+ valueFactory));
}
@Override
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/CommitMessage.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/CommitMessage.java
similarity index 87%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/CommitMessage.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/CommitMessage.java
index f862eafd8b..7e5a00dd87 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/CommitMessage.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/CommitMessage.java
@@ -14,9 +14,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging.request;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.request;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.Message;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.Message;
public class CommitMessage implements Message {
public static final byte SIGNATURE = 0x12;
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/DiscardAllMessage.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/DiscardAllMessage.java
similarity index 87%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/DiscardAllMessage.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/DiscardAllMessage.java
index fc8d1026b9..6f2c2b2d7e 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/DiscardAllMessage.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/DiscardAllMessage.java
@@ -14,9 +14,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging.request;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.request;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.Message;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.Message;
public class DiscardAllMessage implements Message {
public static final byte SIGNATURE = 0x2F;
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/DiscardMessage.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/DiscardMessage.java
similarity index 77%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/DiscardMessage.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/DiscardMessage.java
index aef81d260d..281e9de82c 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/DiscardMessage.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/DiscardMessage.java
@@ -14,17 +14,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging.request;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.request;
+
+import org.neo4j.driver.internal.bolt.api.values.ValueFactory;
public class DiscardMessage extends AbstractStreamingMessage {
public static final byte SIGNATURE = 0x2F;
- public static DiscardMessage newDiscardAllMessage(long id) {
- return new DiscardMessage(STREAM_LIMIT_UNLIMITED, id);
- }
-
- public DiscardMessage(long n, long id) {
- super(n, id);
+ public DiscardMessage(long n, long id, ValueFactory valueFactory) {
+ super(n, id, valueFactory);
}
@Override
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/GoodbyeMessage.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/GoodbyeMessage.java
similarity index 87%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/GoodbyeMessage.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/GoodbyeMessage.java
index e50630731e..da29e1c3d0 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/GoodbyeMessage.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/GoodbyeMessage.java
@@ -14,9 +14,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging.request;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.request;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.Message;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.Message;
public class GoodbyeMessage implements Message {
public static final byte SIGNATURE = 0x02;
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/HelloMessage.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/HelloMessage.java
similarity index 77%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/HelloMessage.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/HelloMessage.java
index 3a5191bb30..fea034ff9a 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/HelloMessage.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/HelloMessage.java
@@ -14,19 +14,16 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging.request;
-
-import static org.neo4j.driver.Values.value;
-import static org.neo4j.driver.internal.security.InternalAuthToken.CREDENTIALS_KEY;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.request;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
-import org.neo4j.driver.Value;
-import org.neo4j.driver.Values;
import org.neo4j.driver.internal.bolt.api.BoltAgent;
import org.neo4j.driver.internal.bolt.api.NotificationConfig;
+import org.neo4j.driver.internal.bolt.api.values.Value;
+import org.neo4j.driver.internal.bolt.api.values.ValueFactory;
public class HelloMessage extends MessageWithMetadata {
public static final byte SIGNATURE = 0x01;
@@ -39,9 +36,12 @@ public class HelloMessage extends MessageWithMetadata {
private static final String BOLT_AGENT_LANGUAGE_DETAIL_KEY = "language_details";
private static final String ROUTING_CONTEXT_METADATA_KEY = "routing";
private static final String PATCH_BOLT_METADATA_KEY = "patch_bolt";
+ private static final String CREDENTIALS_KEY = "credentials";
private static final String DATE_TIME_UTC_PATCH_VALUE = "utc";
+ private final ValueFactory valueFactory;
+
public HelloMessage(
String userAgent,
BoltAgent boltAgent,
@@ -49,7 +49,8 @@ public HelloMessage(
Map routingContext,
boolean includeDateTimeUtc,
NotificationConfig notificationConfig,
- boolean legacyNotifications) {
+ boolean legacyNotifications,
+ ValueFactory valueFactory) {
super(buildMetadata(
userAgent,
boltAgent,
@@ -57,7 +58,9 @@ public HelloMessage(
routingContext,
includeDateTimeUtc,
notificationConfig,
- legacyNotifications));
+ legacyNotifications,
+ valueFactory));
+ this.valueFactory = Objects.requireNonNull(valueFactory);
}
@Override
@@ -85,7 +88,7 @@ public int hashCode() {
@Override
public String toString() {
Map metadataCopy = new HashMap<>(metadata());
- metadataCopy.replace(CREDENTIALS_KEY, value("******"));
+ metadataCopy.replace(CREDENTIALS_KEY, valueFactory.value("******"));
return "HELLO " + metadataCopy;
}
@@ -96,25 +99,26 @@ private static Map buildMetadata(
Map routingContext,
boolean includeDateTimeUtc,
NotificationConfig notificationConfig,
- boolean legacyNotifications) {
+ boolean legacyNotifications,
+ ValueFactory valueFactory) {
Map result = new HashMap<>();
for (var entry : authMap.entrySet()) {
- result.put(entry.getKey(), Values.value(entry.getValue()));
+ result.put(entry.getKey(), valueFactory.value(entry.getValue()));
}
if (userAgent != null) {
- result.put(USER_AGENT_METADATA_KEY, value(userAgent));
+ result.put(USER_AGENT_METADATA_KEY, valueFactory.value(userAgent));
}
if (boltAgent != null) {
var boltAgentMap = toMap(boltAgent);
- result.put(BOLT_AGENT_METADATA_KEY, value(boltAgentMap));
+ result.put(BOLT_AGENT_METADATA_KEY, valueFactory.value(boltAgentMap));
}
if (routingContext != null) {
- result.put(ROUTING_CONTEXT_METADATA_KEY, value(routingContext));
+ result.put(ROUTING_CONTEXT_METADATA_KEY, valueFactory.value(routingContext));
}
if (includeDateTimeUtc) {
- result.put(PATCH_BOLT_METADATA_KEY, value(Collections.singleton(DATE_TIME_UTC_PATCH_VALUE)));
+ result.put(PATCH_BOLT_METADATA_KEY, valueFactory.value(Collections.singleton(DATE_TIME_UTC_PATCH_VALUE)));
}
- MessageWithMetadata.appendNotificationConfig(result, notificationConfig, legacyNotifications);
+ MessageWithMetadata.appendNotificationConfig(result, notificationConfig, legacyNotifications, valueFactory);
return result;
}
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/LogoffMessage.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/LogoffMessage.java
similarity index 87%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/LogoffMessage.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/LogoffMessage.java
index ba36290444..c07dd60378 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/LogoffMessage.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/LogoffMessage.java
@@ -14,9 +14,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging.request;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.request;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.Message;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.Message;
public class LogoffMessage implements Message {
public static final byte SIGNATURE = 0x6B;
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/LogonMessage.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/LogonMessage.java
similarity index 65%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/LogonMessage.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/LogonMessage.java
index 94ae98dd8b..bd78b83dc0 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/LogonMessage.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/LogonMessage.java
@@ -14,20 +14,23 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging.request;
-
-import static org.neo4j.driver.Values.value;
-import static org.neo4j.driver.internal.security.InternalAuthToken.CREDENTIALS_KEY;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.request;
import java.util.HashMap;
import java.util.Map;
-import org.neo4j.driver.Value;
+import java.util.Objects;
+import org.neo4j.driver.internal.bolt.api.values.Value;
+import org.neo4j.driver.internal.bolt.api.values.ValueFactory;
public class LogonMessage extends MessageWithMetadata {
public static final byte SIGNATURE = 0x6A;
+ private static final String CREDENTIALS_KEY = "credentials";
+
+ private final ValueFactory valueFactory;
- public LogonMessage(Map authMap) {
+ public LogonMessage(Map authMap, ValueFactory valueFactory) {
super(authMap);
+ this.valueFactory = Objects.requireNonNull(valueFactory);
}
@Override
@@ -38,7 +41,7 @@ public byte signature() {
@Override
public String toString() {
Map metadataCopy = new HashMap<>(metadata());
- metadataCopy.replace(CREDENTIALS_KEY, value("******"));
+ metadataCopy.replace(CREDENTIALS_KEY, valueFactory.value("******"));
return "LOGON " + metadataCopy;
}
}
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/MessageWithMetadata.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/MessageWithMetadata.java
similarity index 76%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/MessageWithMetadata.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/MessageWithMetadata.java
index f950dbfd69..de03325f40 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/MessageWithMetadata.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/MessageWithMetadata.java
@@ -14,15 +14,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging.request;
-
-import static org.neo4j.driver.Values.value;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.request;
import java.util.Map;
-import org.neo4j.driver.Value;
import org.neo4j.driver.internal.bolt.api.NotificationClassification;
import org.neo4j.driver.internal.bolt.api.NotificationConfig;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.Message;
+import org.neo4j.driver.internal.bolt.api.values.Value;
+import org.neo4j.driver.internal.bolt.api.values.ValueFactory;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.Message;
abstract class MessageWithMetadata implements Message {
static final String NOTIFICATIONS_MINIMUM_SEVERITY = "notifications_minimum_severity";
@@ -39,11 +38,16 @@ public Map metadata() {
}
static void appendNotificationConfig(
- Map result, NotificationConfig config, boolean legacyNotifications) {
+ Map result,
+ NotificationConfig config,
+ boolean legacyNotifications,
+ ValueFactory valueFactory) {
if (config != null) {
var severity = config.minimumSeverity();
if (severity != null) {
- result.put(NOTIFICATIONS_MINIMUM_SEVERITY, value(severity.type().toString()));
+ result.put(
+ NOTIFICATIONS_MINIMUM_SEVERITY,
+ valueFactory.value(severity.type().toString()));
}
var disabledClassifications = config.disabledClassifications();
if (disabledClassifications != null) {
@@ -55,7 +59,7 @@ static void appendNotificationConfig(
legacyNotifications
? NOTIFICATIONS_DISABLED_CATEGORIES
: NOTIFICATIONS_DISABLED_CLASSIFICATIONS,
- value(list));
+ valueFactory.value(list));
}
}
}
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/MultiDatabaseUtil.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/MultiDatabaseUtil.java
similarity index 94%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/MultiDatabaseUtil.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/MultiDatabaseUtil.java
index 7f4e8720bf..d55b663e6a 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/MultiDatabaseUtil.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/MultiDatabaseUtil.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging.request;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.request;
import org.neo4j.driver.internal.bolt.api.BoltProtocolVersion;
import org.neo4j.driver.internal.bolt.api.DatabaseName;
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/PullAllMessage.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/PullAllMessage.java
similarity index 88%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/PullAllMessage.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/PullAllMessage.java
index 6abadd1cde..ff85872147 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/PullAllMessage.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/PullAllMessage.java
@@ -14,9 +14,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging.request;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.request;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.Message;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.Message;
/**
* PULL_ALL request message
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/PullMessage.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/PullMessage.java
similarity index 76%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/PullMessage.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/PullMessage.java
index 7c5c4ff2c0..8690fc549a 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/PullMessage.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/PullMessage.java
@@ -14,9 +14,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging.request;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.request;
-import static org.neo4j.driver.internal.util.MetadataExtractor.ABSENT_QUERY_ID;
+import org.neo4j.driver.internal.bolt.api.values.ValueFactory;
/**
* PULL request message
@@ -25,10 +25,9 @@
*/
public class PullMessage extends AbstractStreamingMessage {
public static final byte SIGNATURE = 0x3F;
- public static final PullMessage PULL_ALL = new PullMessage(STREAM_LIMIT_UNLIMITED, ABSENT_QUERY_ID);
- public PullMessage(long n, long id) {
- super(n, id);
+ public PullMessage(long n, long id, ValueFactory valueFactory) {
+ super(n, id, valueFactory);
}
@Override
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/ResetMessage.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/ResetMessage.java
similarity index 92%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/ResetMessage.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/ResetMessage.java
index 4fc1a61fa5..59f5b35ea3 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/ResetMessage.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/ResetMessage.java
@@ -14,9 +14,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging.request;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.request;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.Message;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.Message;
/**
* RESET request message
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/RollbackMessage.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/RollbackMessage.java
similarity index 87%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/RollbackMessage.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/RollbackMessage.java
index 58030e218f..a60197b6d6 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/RollbackMessage.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/RollbackMessage.java
@@ -14,9 +14,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging.request;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.request;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.Message;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.Message;
public class RollbackMessage implements Message {
public static final byte SIGNATURE = 0x13;
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/RouteMessage.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/RouteMessage.java
similarity index 93%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/RouteMessage.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/RouteMessage.java
index 8bcfa1b91c..01f3aeca64 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/RouteMessage.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/RouteMessage.java
@@ -14,15 +14,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging.request;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.request;
import static java.util.Collections.unmodifiableMap;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
-import org.neo4j.driver.Value;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.Message;
+import org.neo4j.driver.internal.bolt.api.values.Value;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.Message;
/**
* From the application point of view it is not interesting to know about the role a member plays in the cluster. Instead, the application needs to know which
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/RunWithMetadataMessage.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/RunWithMetadataMessage.java
similarity index 88%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/RunWithMetadataMessage.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/RunWithMetadataMessage.java
index 72ddf8d2a7..592643c180 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/RunWithMetadataMessage.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/RunWithMetadataMessage.java
@@ -14,20 +14,21 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging.request;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.request;
import static java.util.Collections.emptyMap;
-import static org.neo4j.driver.internal.bolt.basicimpl.messaging.request.TransactionMetadataBuilder.buildMetadata;
+import static org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.request.TransactionMetadataBuilder.buildMetadata;
import java.time.Duration;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
-import org.neo4j.driver.Value;
import org.neo4j.driver.internal.bolt.api.AccessMode;
import org.neo4j.driver.internal.bolt.api.DatabaseName;
import org.neo4j.driver.internal.bolt.api.LoggingProvider;
import org.neo4j.driver.internal.bolt.api.NotificationConfig;
+import org.neo4j.driver.internal.bolt.api.values.Value;
+import org.neo4j.driver.internal.bolt.api.values.ValueFactory;
public class RunWithMetadataMessage extends MessageWithMetadata {
public static final byte SIGNATURE = 0x10;
@@ -46,7 +47,8 @@ public static RunWithMetadataMessage autoCommitTxRunMessage(
String impersonatedUser,
NotificationConfig notificationConfig,
boolean legacyNotifications,
- LoggingProvider logging) {
+ LoggingProvider logging,
+ ValueFactory valueFactory) {
var metadata = buildMetadata(
txTimeout,
txMetadata,
@@ -57,7 +59,8 @@ public static RunWithMetadataMessage autoCommitTxRunMessage(
null,
notificationConfig,
legacyNotifications,
- logging);
+ logging,
+ valueFactory);
return new RunWithMetadataMessage(query, parameters, metadata);
}
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/TelemetryMessage.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/TelemetryMessage.java
similarity index 88%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/TelemetryMessage.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/TelemetryMessage.java
index 12109368ee..fa43367bb5 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/TelemetryMessage.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/TelemetryMessage.java
@@ -14,9 +14,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging.request;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.request;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.Message;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.Message;
/**
* TELEMETRY message
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/TransactionMetadataBuilder.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/TransactionMetadataBuilder.java
similarity index 81%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/TransactionMetadataBuilder.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/TransactionMetadataBuilder.java
index 527f73aa4d..b52626b87b 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/request/TransactionMetadataBuilder.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/request/TransactionMetadataBuilder.java
@@ -14,20 +14,20 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging.request;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.request;
import static java.util.Collections.emptyMap;
-import static org.neo4j.driver.Values.value;
import java.time.Duration;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
-import org.neo4j.driver.Value;
import org.neo4j.driver.internal.bolt.api.AccessMode;
import org.neo4j.driver.internal.bolt.api.DatabaseName;
import org.neo4j.driver.internal.bolt.api.LoggingProvider;
import org.neo4j.driver.internal.bolt.api.NotificationConfig;
+import org.neo4j.driver.internal.bolt.api.values.Value;
+import org.neo4j.driver.internal.bolt.api.values.ValueFactory;
public class TransactionMetadataBuilder {
private static final String BOOKMARKS_METADATA_KEY = "bookmarks";
@@ -49,7 +49,8 @@ public static Map buildMetadata(
String txType,
NotificationConfig notificationConfig,
boolean legacyNotifications,
- LoggingProvider logging) {
+ LoggingProvider logging,
+ ValueFactory valueFactory) {
var bookmarksPresent = !bookmarks.isEmpty();
var txTimeoutPresent = txTimeout != null;
var txMetadataPresent = txMetadata != null && !txMetadata.isEmpty();
@@ -73,7 +74,7 @@ public static Map buildMetadata(
Map result = new HashMap<>(5);
if (bookmarksPresent) {
- result.put(BOOKMARKS_METADATA_KEY, value(bookmarks));
+ result.put(BOOKMARKS_METADATA_KEY, valueFactory.value(bookmarks));
}
if (txTimeoutPresent) {
var millis = txTimeout.toMillis();
@@ -84,23 +85,23 @@ public static Map buildMetadata(
System.Logger.Level.INFO,
"The transaction timeout has been rounded up to next millisecond value since the config had a fractional millisecond value");
}
- result.put(TX_TIMEOUT_METADATA_KEY, value(millis));
+ result.put(TX_TIMEOUT_METADATA_KEY, valueFactory.value(millis));
}
if (txMetadataPresent) {
- result.put(TX_METADATA_METADATA_KEY, value(txMetadata));
+ result.put(TX_METADATA_METADATA_KEY, valueFactory.value(txMetadata));
}
if (accessModePresent) {
- result.put(MODE_KEY, value(MODE_READ_VALUE));
+ result.put(MODE_KEY, valueFactory.value(MODE_READ_VALUE));
}
if (impersonatedUserPresent) {
- result.put(IMPERSONATED_USER_KEY, value(impersonatedUser));
+ result.put(IMPERSONATED_USER_KEY, valueFactory.value(impersonatedUser));
}
if (txTypePresent) {
- result.put(TX_TYPE_KEY, value(txType));
+ result.put(TX_TYPE_KEY, valueFactory.value(txType));
}
- MessageWithMetadata.appendNotificationConfig(result, notificationConfig, legacyNotifications);
+ MessageWithMetadata.appendNotificationConfig(result, notificationConfig, legacyNotifications, valueFactory);
- databaseName.databaseName().ifPresent(name -> result.put(DATABASE_NAME_KEY, value(name)));
+ databaseName.databaseName().ifPresent(name -> result.put(DATABASE_NAME_KEY, valueFactory.value(name)));
return result;
}
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/response/FailureMessage.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/response/FailureMessage.java
similarity index 88%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/response/FailureMessage.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/response/FailureMessage.java
index 8c367df7fc..40e40d76fe 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/response/FailureMessage.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/response/FailureMessage.java
@@ -14,11 +14,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging.response;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.response;
import static java.lang.String.format;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.Message;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.Message;
/**
* FAILURE response message
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/response/IgnoredMessage.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/response/IgnoredMessage.java
similarity index 90%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/response/IgnoredMessage.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/response/IgnoredMessage.java
index e6358a75f3..705a605d96 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/response/IgnoredMessage.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/response/IgnoredMessage.java
@@ -14,9 +14,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging.response;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.response;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.Message;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.Message;
/**
* IGNORED response message
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/response/RecordMessage.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/response/RecordMessage.java
similarity index 86%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/response/RecordMessage.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/response/RecordMessage.java
index a0e061a9b2..caf98c190b 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/response/RecordMessage.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/response/RecordMessage.java
@@ -14,11 +14,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging.response;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.response;
import java.util.Arrays;
-import org.neo4j.driver.Value;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.Message;
+import org.neo4j.driver.internal.bolt.api.values.Value;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.Message;
public record RecordMessage(Value[] fields) implements Message {
public static final byte SIGNATURE = 0x71;
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/response/SuccessMessage.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/response/SuccessMessage.java
similarity index 86%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/response/SuccessMessage.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/response/SuccessMessage.java
index 9192e4a12c..d400b548a2 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/response/SuccessMessage.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/response/SuccessMessage.java
@@ -14,13 +14,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging.response;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.response;
import static java.lang.String.format;
import java.util.Map;
-import org.neo4j.driver.Value;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.Message;
+import org.neo4j.driver.internal.bolt.api.values.Value;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.Message;
/**
* SUCCESS response message
diff --git a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/v3/BoltProtocolV3.java b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/v3/BoltProtocolV3.java
similarity index 72%
rename from driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/v3/BoltProtocolV3.java
rename to bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/v3/BoltProtocolV3.java
index a0293a40c5..e17398e060 100644
--- a/driver/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/messaging/v3/BoltProtocolV3.java
+++ b/bolt-api-netty/src/main/java/org/neo4j/driver/internal/bolt/basicimpl/impl/messaging/v3/BoltProtocolV3.java
@@ -14,27 +14,22 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.neo4j.driver.internal.bolt.basicimpl.messaging.v3;
+package org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.v3;
-import static org.neo4j.driver.Values.parameters;
-import static org.neo4j.driver.internal.bolt.basicimpl.async.connection.ChannelAttributes.messageDispatcher;
-import static org.neo4j.driver.internal.bolt.basicimpl.messaging.request.CommitMessage.COMMIT;
-import static org.neo4j.driver.internal.bolt.basicimpl.messaging.request.RollbackMessage.ROLLBACK;
+import static org.neo4j.driver.internal.bolt.basicimpl.impl.async.connection.ChannelAttributes.messageDispatcher;
+import static org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.request.CommitMessage.COMMIT;
+import static org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.request.RollbackMessage.ROLLBACK;
import io.netty.channel.Channel;
import java.time.Clock;
import java.time.Duration;
-import java.util.ArrayList;
import java.util.Collections;
+import java.util.HashMap;
import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CompletionStage;
-import org.neo4j.driver.Record;
-import org.neo4j.driver.Value;
-import org.neo4j.driver.Values;
-import org.neo4j.driver.internal.InternalRecord;
import org.neo4j.driver.internal.bolt.api.AccessMode;
import org.neo4j.driver.internal.bolt.api.BoltAgent;
import org.neo4j.driver.internal.bolt.api.BoltProtocolVersion;
@@ -51,28 +46,29 @@
import org.neo4j.driver.internal.bolt.api.summary.PullSummary;
import org.neo4j.driver.internal.bolt.api.summary.RouteSummary;
import org.neo4j.driver.internal.bolt.api.summary.RunSummary;
-import org.neo4j.driver.internal.bolt.basicimpl.handlers.BeginTxResponseHandler;
-import org.neo4j.driver.internal.bolt.basicimpl.handlers.CommitTxResponseHandler;
-import org.neo4j.driver.internal.bolt.basicimpl.handlers.DiscardResponseHandler;
-import org.neo4j.driver.internal.bolt.basicimpl.handlers.HelloResponseHandler;
-import org.neo4j.driver.internal.bolt.basicimpl.handlers.PullResponseHandlerImpl;
-import org.neo4j.driver.internal.bolt.basicimpl.handlers.ResetResponseHandler;
-import org.neo4j.driver.internal.bolt.basicimpl.handlers.RollbackTxResponseHandler;
-import org.neo4j.driver.internal.bolt.basicimpl.handlers.RunResponseHandler;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.BoltProtocol;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.MessageFormat;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.MessageHandler;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.PullMessageHandler;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.request.BeginMessage;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.request.DiscardMessage;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.request.HelloMessage;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.request.MultiDatabaseUtil;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.request.PullAllMessage;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.request.ResetMessage;
-import org.neo4j.driver.internal.bolt.basicimpl.messaging.request.RunWithMetadataMessage;
-import org.neo4j.driver.internal.bolt.basicimpl.spi.Connection;
-import org.neo4j.driver.internal.bolt.basicimpl.util.MetadataExtractor;
-import org.neo4j.driver.types.MapAccessor;
+import org.neo4j.driver.internal.bolt.api.values.Value;
+import org.neo4j.driver.internal.bolt.api.values.ValueFactory;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.handlers.BeginTxResponseHandler;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.handlers.CommitTxResponseHandler;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.handlers.DiscardResponseHandler;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.handlers.HelloResponseHandler;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.handlers.PullResponseHandlerImpl;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.handlers.ResetResponseHandler;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.handlers.RollbackTxResponseHandler;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.handlers.RunResponseHandler;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.BoltProtocol;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.MessageFormat;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.MessageHandler;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.PullMessageHandler;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.request.BeginMessage;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.request.DiscardMessage;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.request.HelloMessage;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.request.MultiDatabaseUtil;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.request.PullAllMessage;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.request.ResetMessage;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.messaging.request.RunWithMetadataMessage;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.spi.Connection;
+import org.neo4j.driver.internal.bolt.basicimpl.impl.util.MetadataExtractor;
public class BoltProtocolV3 implements BoltProtocol {
public static final BoltProtocolVersion VERSION = new BoltProtocolVersion(3, 0);
@@ -99,7 +95,8 @@ public CompletionStage initializeChannel(
RoutingContext routingContext,
NotificationConfig notificationConfig,
Clock clock,
- CompletableFuture latestAuthMillisFuture) {
+ CompletableFuture latestAuthMillisFuture,
+ ValueFactory valueFactory) {
var exception = verifyNotificationConfigSupported(notificationConfig);
if (exception != null) {
return CompletableFuture.failedStage(exception);
@@ -114,7 +111,8 @@ public CompletionStage initializeChannel(
routingContext.toMap(),
includeDateTimeUtcPatchInHello(),
notificationConfig,
- useLegacyNotifications());
+ useLegacyNotifications(),
+ valueFactory);
} else {
message = new HelloMessage(
userAgent,
@@ -123,7 +121,8 @@ public CompletionStage initializeChannel(
null,
includeDateTimeUtcPatchInHello(),
notificationConfig,
- useLegacyNotifications());
+ useLegacyNotifications(),
+ valueFactory);
}
var future = new CompletableFuture();
@@ -143,9 +142,9 @@ public CompletionStage route(
String impersonatedUser,
MessageHandler handler,
Clock clock,
- LoggingProvider logging) {
- var query = new Query(
- GET_ROUTING_TABLE, parameters(ROUTING_CONTEXT, routingContext).asMap(Values::value));
+ LoggingProvider logging,
+ ValueFactory valueFactory) {
+ var query = new Query(GET_ROUTING_TABLE, Map.of(ROUTING_CONTEXT, valueFactory.value(routingContext)));
var runMessage = RunWithMetadataMessage.autoCommitTxRunMessage(
query.query(),
@@ -158,16 +157,15 @@ public CompletionStage route(
null,
NotificationConfig.defaultConfig(),
useLegacyNotifications(),
- logging);
+ logging,
+ valueFactory);
var runFuture = new CompletableFuture();
var runHandler = new RunResponseHandler(runFuture, METADATA_EXTRACTOR);
- var pullFuture = new CompletableFuture();
- var records = new ArrayList();
+ var pullFuture = new CompletableFuture