Skip to content

Commit 68753f7

Browse files
committed
Bytes has signed and unsigned comparators
1 parent 346128e commit 68753f7

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

conjure-lib/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ dependencies {
2626

2727
implementation 'com.fasterxml.jackson.core:jackson-annotations'
2828
implementation 'com.fasterxml.jackson.core:jackson-core'
29+
implementation 'com.google.guava:guava'
2930
implementation 'com.palantir.safe-logging:safe-logging'
3031

3132
testImplementation 'com.palantir.safe-logging:preconditions-assertj'

conjure-lib/src/main/java/com/palantir/conjure/java/lib/Bytes.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,15 @@
2424
import com.fasterxml.jackson.databind.SerializerProvider;
2525
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
2626
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
27+
import com.google.common.primitives.SignedBytes;
28+
import com.google.common.primitives.UnsignedBytes;
2729
import java.io.ByteArrayInputStream;
2830
import java.io.IOException;
2931
import java.io.InputStream;
3032
import java.nio.ByteBuffer;
3133
import java.util.Arrays;
34+
import java.util.Comparator;
35+
import org.jetbrains.annotations.NotNull;
3236

3337
/** An immutable {@code byte[]} wrapper. */
3438
@JsonSerialize(using = Bytes.Serializer.class)
@@ -85,6 +89,14 @@ public boolean equals(Object obj) {
8589
return this == obj || (obj instanceof Bytes && Arrays.equals(safe, ((Bytes) obj).safe));
8690
}
8791

92+
public Comparator<Bytes> signed() {
93+
return (x, y) -> SignedBytes.lexicographicalComparator().compare(x.safe, y.safe);
94+
}
95+
96+
public Comparator<Bytes> unsigned() {
97+
return (x, y) -> UnsignedBytes.lexicographicalComparator().compare(x.safe, y.safe);
98+
}
99+
88100
@Override
89101
public String toString() {
90102
return "Bytes{size: " + safe.length + '}';

0 commit comments

Comments
 (0)