Skip to content

Commit c593b2a

Browse files
committed
Add a persistence strategy for ByteString
1 parent 561555a commit c593b2a

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

datastore/src/main/java/io/spine/server/storage/datastore/DefaultColumnTypeRegistry.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,16 @@
2020

2121
package io.spine.server.storage.datastore;
2222

23+
import com.google.cloud.datastore.Blob;
24+
import com.google.cloud.datastore.BlobValue;
2325
import com.google.cloud.datastore.BooleanValue;
2426
import com.google.cloud.datastore.DoubleValue;
2527
import com.google.cloud.datastore.LongValue;
2628
import com.google.cloud.datastore.StringValue;
2729
import com.google.cloud.datastore.TimestampValue;
2830
import com.google.cloud.datastore.Value;
2931
import com.google.common.collect.ImmutableSortedMap;
32+
import com.google.protobuf.ByteString;
3033
import com.google.protobuf.Message;
3134
import com.google.protobuf.Timestamp;
3235
import io.spine.core.Version;
@@ -80,6 +83,7 @@ private static ImmutableSortedMap<Class<?>, PersistenceStrategy<?>> defaultPolic
8083
policies.put(Double.class, new DefaultDoublePersistenceStrategy());
8184
policies.put(Float.class, new DefaultFloatPersistenceStrategy());
8285
policies.put(Boolean.class, new DefaultBooleanPersistenceStrategy());
86+
policies.put(ByteString.class, new DefaultByteStringPersistenceStrategy());
8387
policies.put(Timestamp.class, new DefaultTimestampPersistenceStrategy());
8488
policies.put(Version.class, new DefaultVersionPersistenceStrategy());
8589
policies.put(Enum.class, new DefaultEnumPersistenceStrategy());
@@ -161,6 +165,16 @@ public Value<?> apply(Boolean aBoolean) {
161165
}
162166
}
163167

168+
private static class DefaultByteStringPersistenceStrategy
169+
implements PersistenceStrategy<ByteString> {
170+
171+
@Override
172+
public Value<?> apply(ByteString bytes) {
173+
Blob blob = Blob.copyFrom(bytes.asReadOnlyByteBuffer());
174+
return BlobValue.of(blob);
175+
}
176+
}
177+
164178
private static class DefaultTimestampPersistenceStrategy
165179
implements PersistenceStrategy<Timestamp> {
166180

0 commit comments

Comments
 (0)