Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 30 additions & 27 deletions driver/src/main/java/org/neo4j/driver/Values.java
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import java.util.stream.Stream;
import org.neo4j.driver.exceptions.ClientException;
Expand All @@ -44,7 +45,6 @@
import org.neo4j.driver.internal.InternalIsoDuration;
import org.neo4j.driver.internal.InternalPoint2D;
import org.neo4j.driver.internal.InternalPoint3D;
import org.neo4j.driver.internal.value.BoltValue;
import org.neo4j.driver.internal.value.BooleanValue;
import org.neo4j.driver.internal.value.BytesValue;
import org.neo4j.driver.internal.value.DateTimeValue;
Expand Down Expand Up @@ -110,9 +110,6 @@ public static Value value(Object value) {
return NullValue.NULL;
}

if (value instanceof BoltValue boltValue) {
return boltValue.asDriverValue();
}
if (value instanceof AsValue) {
return ((AsValue) value).asValue();
}
Expand Down Expand Up @@ -252,10 +249,7 @@ public static Value[] values(final Object... input) {
* @return the value
*/
public static Value value(Value... input) {
var size = input.length;
var values = new Value[size];
System.arraycopy(input, 0, values, 0, size);
return new ListValue(values);
return new ListValue(List.of(input));
}

/**
Expand All @@ -273,7 +267,9 @@ public static Value value(byte... input) {
* @return the value
*/
public static Value value(String... input) {
var values = Arrays.stream(input).map(StringValue::new).toArray(StringValue[]::new);
var values = Arrays.stream(input)
.map(StringValue::new)
.collect(Collectors.toCollection(() -> new ArrayList<>(input.length)));
return new ListValue(values);
}

Expand All @@ -283,8 +279,9 @@ public static Value value(String... input) {
* @return the value
*/
public static Value value(boolean... input) {
var values =
IntStream.range(0, input.length).mapToObj(i -> value(input[i])).toArray(Value[]::new);
var values = IntStream.range(0, input.length)
.mapToObj(i -> value(input[i]))
.collect(Collectors.toCollection(() -> new ArrayList<>(input.length)));
return new ListValue(values);
}

Expand All @@ -294,8 +291,9 @@ public static Value value(boolean... input) {
* @return the value
*/
public static Value value(char... input) {
var values =
IntStream.range(0, input.length).mapToObj(i -> value(input[i])).toArray(Value[]::new);
var values = IntStream.range(0, input.length)
.mapToObj(i -> value(input[i]))
.collect(Collectors.toCollection(() -> new ArrayList<>(input.length)));
return new ListValue(values);
}

Expand All @@ -305,7 +303,9 @@ public static Value value(char... input) {
* @return the value
*/
public static Value value(long... input) {
var values = Arrays.stream(input).mapToObj(Values::value).toArray(Value[]::new);
var values = Arrays.stream(input)
.mapToObj(Values::value)
.collect(Collectors.toCollection(() -> new ArrayList<>(input.length)));
return new ListValue(values);
}

Expand All @@ -315,8 +315,9 @@ public static Value value(long... input) {
* @return the value
*/
public static Value value(short... input) {
var values =
IntStream.range(0, input.length).mapToObj(i -> value(input[i])).toArray(Value[]::new);
var values = IntStream.range(0, input.length)
.mapToObj(i -> value(input[i]))
.collect(Collectors.toCollection(() -> new ArrayList<>(input.length)));
return new ListValue(values);
}
/**
Expand All @@ -325,7 +326,9 @@ public static Value value(short... input) {
* @return the value
*/
public static Value value(int... input) {
var values = Arrays.stream(input).mapToObj(Values::value).toArray(Value[]::new);
var values = Arrays.stream(input)
.mapToObj(Values::value)
.collect(Collectors.toCollection(() -> new ArrayList<>(input.length)));
return new ListValue(values);
}
/**
Expand All @@ -334,7 +337,9 @@ public static Value value(int... input) {
* @return the value
*/
public static Value value(double... input) {
var values = Arrays.stream(input).mapToObj(Values::value).toArray(Value[]::new);
var values = Arrays.stream(input)
.mapToObj(Values::value)
.collect(Collectors.toCollection(() -> new ArrayList<>(input.length)));
return new ListValue(values);
}

Expand All @@ -344,8 +349,9 @@ public static Value value(double... input) {
* @return the value
*/
public static Value value(float... input) {
var values =
IntStream.range(0, input.length).mapToObj(i -> value(input[i])).toArray(Value[]::new);
var values = IntStream.range(0, input.length)
.mapToObj(i -> value(input[i]))
.collect(Collectors.toCollection(() -> new ArrayList<>(input.length)));
return new ListValue(values);
}

Expand All @@ -355,11 +361,8 @@ public static Value value(float... input) {
* @return the value
*/
public static Value value(List<Object> vals) {
var values = new Value[vals.size()];
var i = 0;
for (var val : vals) {
values[i++] = value(val);
}
var values =
vals.stream().map(Values::value).collect(Collectors.toCollection(() -> new ArrayList<>(vals.size())));
return new ListValue(values);
}

Expand All @@ -382,7 +385,7 @@ public static Value value(Iterator<Object> val) {
while (val.hasNext()) {
values.add(value(val.next()));
}
return new ListValue(values.toArray(new Value[0]));
return new ListValue(values);
}

/**
Expand All @@ -391,7 +394,7 @@ public static Value value(Iterator<Object> val) {
* @return the value
*/
public static Value value(Stream<Object> stream) {
var values = stream.map(Values::value).toArray(Value[]::new);
var values = stream.map(Values::value).collect(Collectors.toList());
return new ListValue(values);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
import static org.neo4j.driver.Values.ofValue;
import static org.neo4j.driver.internal.util.Format.formatPairs;

import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.NoSuchElementException;
Expand All @@ -39,15 +38,15 @@

public class InternalRecord extends InternalMapAccessorWithDefaultValue implements Record {
private final QueryKeys queryKeys;
private final Value[] values;
private final List<Value> values;
private int hashCode = 0;

public InternalRecord(List<String> keys, Value[] values) {
public InternalRecord(List<String> keys, List<Value> values) {
this.queryKeys = new QueryKeys(keys);
this.values = values;
}

public InternalRecord(QueryKeys queryKeys, Value[] values) {
public InternalRecord(QueryKeys queryKeys, List<Value> values) {
this.queryKeys = queryKeys;
this.values = values;
}
Expand All @@ -59,7 +58,7 @@ public List<String> keys() {

@Override
public List<Value> values() {
return Arrays.asList(values);
return values;
}

@Override
Expand Down Expand Up @@ -94,18 +93,18 @@ public Value get(String key) {
if (fieldIndex == -1) {
return Values.NULL;
} else {
return values[fieldIndex];
return values.get(fieldIndex);
}
}

@Override
public Value get(int index) {
return index >= 0 && index < values.length ? values[index] : Values.NULL;
return index >= 0 && index < values.size() ? values.get(index) : Values.NULL;
}

@Override
public int size() {
return values.length;
return values.size();
}

@Override
Expand Down Expand Up @@ -161,7 +160,7 @@ public boolean equals(Object other) {
@Override
public int hashCode() {
if (hashCode == 0) {
hashCode = 31 * queryKeys.hashCode() + Arrays.hashCode(values);
hashCode = 31 * queryKeys.hashCode() + values.hashCode();
}
return hashCode;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
*/
package org.neo4j.driver.internal.adaptedbolt;

import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import org.neo4j.bolt.connection.ResponseHandler;
Expand All @@ -32,7 +32,6 @@
import org.neo4j.bolt.connection.summary.RunSummary;
import org.neo4j.bolt.connection.summary.TelemetrySummary;
import org.neo4j.driver.Value;
import org.neo4j.driver.internal.value.BoltValue;
import org.neo4j.driver.internal.value.BoltValueFactory;

final class AdaptingDriverResponseHandler implements ResponseHandler {
Expand Down Expand Up @@ -63,11 +62,8 @@ public void onRunSummary(RunSummary summary) {
}

@Override
public void onRecord(org.neo4j.bolt.connection.values.Value[] fields) {
var mappedFields = Arrays.stream(fields)
.map(field -> ((BoltValue) field).asDriverValue())
.toArray(Value[]::new);
delegate.onRecord(mappedFields);
public void onRecord(List<org.neo4j.bolt.connection.values.Value> fields) {
delegate.onRecord(boltValueFactory.toDriverList(fields));
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@

public class BasicResponseHandler implements DriverResponseHandler {
private final CompletableFuture<Summaries> summariesFuture = new CompletableFuture<>();
private final List<Value[]> valuesList = new ArrayList<>();
private final List<List<Value>> valuesList = new ArrayList<>();

private BeginSummary beginSummary;
private RunSummary runSummary;
Expand Down Expand Up @@ -83,7 +83,7 @@ public void onRunSummary(RunSummary summary) {
}

@Override
public void onRecord(Value[] fields) {
public void onRecord(List<Value> fields) {
valuesList.add(fields);
}

Expand Down Expand Up @@ -162,7 +162,7 @@ public void onComplete() {
public record Summaries(
BeginSummary beginSummary,
RunSummary runSummary,
List<Value[]> valuesList,
List<List<Value>> valuesList,
PullSummary pullSummary,
DiscardSummary discardSummary,
CommitSummary commitSummary,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
*/
package org.neo4j.driver.internal.adaptedbolt;

import java.util.List;
import org.neo4j.bolt.connection.summary.BeginSummary;
import org.neo4j.bolt.connection.summary.CommitSummary;
import org.neo4j.bolt.connection.summary.LogoffSummary;
Expand All @@ -41,7 +42,7 @@ default void onRunSummary(RunSummary summary) {
// ignored
}

default void onRecord(Value[] fields) {
default void onRecord(List<Value> fields) {
// ignored
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
*/
package org.neo4j.driver.internal.async;

import java.util.List;
import java.util.Objects;
import org.neo4j.bolt.connection.summary.BeginSummary;
import org.neo4j.bolt.connection.summary.CommitSummary;
Expand Down Expand Up @@ -54,7 +55,7 @@ public void onRunSummary(RunSummary summary) {
}

@Override
public void onRecord(Value[] fields) {
public void onRecord(List<Value> fields) {
delegate.onRecord(fields);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -591,7 +591,7 @@ public void onRunSummary(RunSummary summary) {
}

@Override
public void onRecord(Value[] fields) {
public void onRecord(List<Value> fields) {
var record = new InternalRecord(runSummary.keys(), fields);
CompletableFuture<Record> peekFuture;
CompletableFuture<Record> recordFuture = null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -331,7 +331,7 @@ public synchronized void onIgnored() {
}

@Override
public void onRecord(Value[] fields) {
public void onRecord(List<Value> fields) {
log.trace("[%d] onRecord", hashCode());
synchronized (this) {
updateRecordState(RecordState.HAD_RECORD);
Expand Down
17 changes: 4 additions & 13 deletions driver/src/main/java/org/neo4j/driver/internal/util/Extract.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@
import static org.neo4j.driver.internal.util.Iterables.newHashMapWithSize;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
Expand All @@ -52,25 +51,17 @@ private Extract() {
throw new UnsupportedOperationException();
}

public static List<Value> list(Value[] values) {
return switch (values.length) {
case 0 -> emptyList();
case 1 -> singletonList(values[0]);
default -> List.of(values);
};
}

public static <T> List<T> list(Value[] data, Function<Value, T> mapFunction) {
var size = data.length;
public static <T> List<T> list(List<? extends Value> data, Function<Value, T> mapFunction) {
var size = data.size();
switch (size) {
case 0 -> {
return emptyList();
}
case 1 -> {
return singletonList(mapFunction.apply(data[0]));
return singletonList(mapFunction.apply(data.get(0)));
}
default -> {
return Arrays.stream(data).map(mapFunction).toList();
return data.stream().map(mapFunction).toList();
}
}
}
Expand Down
Loading