Skip to content

Commit 48eeda1

Browse files
committed
Implement the TypeRegistry from core instead of creating own one
1 parent c593b2a commit 48eeda1

File tree

13 files changed

+203
-724
lines changed

13 files changed

+203
-724
lines changed

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

Lines changed: 0 additions & 26 deletions
This file was deleted.

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

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
package io.spine.server.storage.datastore;
2222

2323
import com.google.cloud.datastore.Datastore;
24+
import com.google.cloud.datastore.Value;
2425
import com.google.common.annotations.VisibleForTesting;
2526
import com.google.common.collect.Iterables;
2627
import com.google.errorprone.annotations.CanIgnoreReturnValue;
@@ -31,6 +32,7 @@
3132
import io.spine.server.aggregate.AggregateStorage;
3233
import io.spine.server.delivery.InboxStorage;
3334
import io.spine.server.entity.Entity;
35+
import io.spine.server.entity.storage.TypeRegistry;
3436
import io.spine.server.projection.Projection;
3537
import io.spine.server.projection.ProjectionStorage;
3638
import io.spine.server.storage.RecordStorage;
@@ -41,6 +43,7 @@
4143
import io.spine.server.storage.datastore.tenant.NamespaceSupplier;
4244
import io.spine.server.storage.datastore.tenant.NsConverterFactory;
4345
import io.spine.server.storage.datastore.tenant.PrefixedNsConverterFactory;
46+
import io.spine.server.storage.datastore.type.DsTypeRegistry;
4447
import io.spine.server.tenant.TenantIndex;
4548

4649
import java.util.Map;
@@ -83,7 +86,7 @@ public class DatastoreStorageFactory implements StorageFactory {
8386
*/
8487
private final Map<Class<? extends Storage>, DatastoreWrapper> sysWrappers = newConcurrentMap();
8588

86-
private final ColumnTypeRegistry typeRegistry;
89+
private final TypeRegistry<Value<?>> typeRegistry;
8790

8891
private final NsConverterFactory converterFactory;
8992

@@ -153,7 +156,7 @@ public InboxStorage createInboxStorage(boolean multitenant) {
153156
return new DsInboxStorage(wrapper, multitenant);
154157
}
155158

156-
public ColumnTypeRegistry getTypeRegistry() {
159+
public TypeRegistry<Value<?>> getTypeRegistry() {
157160
return typeRegistry;
158161
}
159162

@@ -265,7 +268,7 @@ public static Builder newBuilder() {
265268
public static class Builder {
266269

267270
private Datastore datastore;
268-
private ColumnTypeRegistry typeRegistry;
271+
private TypeRegistry<Value<?>> typeRegistry;
269272
private NamespaceConverter namespaceConverter;
270273
private NsConverterFactory converterFactory;
271274

@@ -293,16 +296,16 @@ public Datastore getDatastore() {
293296
}
294297

295298
/**
296-
* Sets a {@link ColumnTypeRegistry} for handling the Entity Columns.
299+
* Sets a {@link TypeRegistry} for handling the Entity Columns.
297300
*
298-
* <p>Default value is {@link DefaultColumnTypeRegistry}.
301+
* <p>Default value is {@link DsTypeRegistry}.
299302
*
300303
* @param typeRegistry
301304
* the type registry containing all the supported
302305
* {@linkplain io.spine.server.entity.storage.Column column} types
303306
* @return self for method chaining
304307
*/
305-
public Builder setTypeRegistry(ColumnTypeRegistry typeRegistry) {
308+
public Builder setTypeRegistry(TypeRegistry<Value<?>> typeRegistry) {
306309
this.typeRegistry = checkNotNull(typeRegistry);
307310
return this;
308311
}
@@ -333,7 +336,7 @@ public Builder setNamespaceConverter(NamespaceConverter converter) {
333336
public DatastoreStorageFactory build() {
334337
checkNotNull(datastore);
335338
if (typeRegistry == null) {
336-
typeRegistry = new DefaultColumnTypeRegistry();
339+
typeRegistry = new DsTypeRegistry();
337340
}
338341
if (namespaceConverter == null) {
339342
converterFactory = NsConverterFactory.defaults();

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

Lines changed: 0 additions & 217 deletions
This file was deleted.

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

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import io.spine.server.entity.storage.EntityQuery;
3535
import io.spine.server.entity.storage.EntityRecordWithColumns;
3636
import io.spine.server.entity.storage.QueryParameters;
37+
import io.spine.server.entity.storage.TypeRegistry;
3738
import io.spine.server.storage.RecordStorage;
3839
import io.spine.type.TypeUrl;
3940
import org.checkerframework.checker.nullness.qual.Nullable;
@@ -69,7 +70,7 @@ public class DsRecordStorage<I> extends RecordStorage<I> {
6970
private final DsLookupByIds<I> idLookup;
7071
private final DsLookupByQueries queryLookup;
7172

72-
private final ColumnTypeRegistry columnTypeRegistry;
73+
private final TypeRegistry<Value<?>> typeRegistry;
7374
private final FilterAdapter columnFilterAdapter;
7475

7576
/**
@@ -92,8 +93,8 @@ protected DsRecordStorage(
9293
this.typeUrl = TypeUrl.from(b.getDescriptor());
9394
this.idClass = checkNotNull(b.getIdClass());
9495
this.datastore = b.getDatastore();
95-
this.columnTypeRegistry = checkNotNull(b.getColumnTypeRegistry());
96-
this.columnFilterAdapter = FilterAdapter.of(this.columnTypeRegistry);
96+
this.typeRegistry = checkNotNull(b.getColumnTypeRegistry());
97+
this.columnFilterAdapter = FilterAdapter.of(this.typeRegistry);
9798
this.idLookup = new DsLookupByIds<>(this.datastore, this.typeUrl);
9899
this.queryLookup = new DsLookupByQueries(this.datastore, this.typeUrl,
99100
this.columnFilterAdapter);
@@ -268,11 +269,8 @@ protected Entity entityRecordToEntity(I id, EntityRecordWithColumns record) {
268269
private void populateFromStorageFields(BaseEntity.Builder<Key, Entity.Builder> entity,
269270
EntityRecordWithColumns record) {
270271
record.columnNames().forEach(columnName -> {
271-
Object columnValue = record.columnValue(columnName);
272-
PersistenceStrategy<?> strategy =
273-
columnTypeRegistry.persistenceStrategyOf(columnValue.getClass());
274-
Value<?> value = strategy.applyTo(columnValue);
275-
entity.set(columnName.value(), value);
272+
Value<?> columnValue = record.columnValue(columnName, typeRegistry);
273+
entity.set(columnName.value(), columnValue);
276274
});
277275
}
278276

0 commit comments

Comments
 (0)