ibessonov commented on code in PR #773:
URL: https://github.com/apache/ignite-3/pull/773#discussion_r851118474
##########
modules/storage-api/src/main/java/org/apache/ignite/internal/storage/DataStorageModules.java:
##########
@@ -112,12 +104,50 @@ public Map<String, StorageEngine> createStorageEngines(
/**
* Collects {@link DataStorageConfigurationSchema data storage schema}
fields (with {@link Value}).
*
+ * @param polymorphicSchemaExtensions {@link PolymorphicConfigInstance
Polymorphic schema extensions} that contain extensions of {@link
+ * DataStorageConfigurationSchema}.
* @return Mapping: {@link DataStorageModule#name Data storage name} ->
filed name -> field type.
+ * @throws IllegalStateException If the {@link
DataStorageConfigurationSchema data storage schemas} are not valid.
*/
- public Map<String, Map<String, Class<?>>> collectSchemasFields() {
+ public Map<String, Map<String, Class<?>>>
collectSchemasFields(Collection<Class<?>> polymorphicSchemaExtensions) {
+ Map<String, Class<? extends DataStorageConfigurationSchema>> schemas =
polymorphicSchemaExtensions.stream()
+ .filter(DataStorageConfigurationSchema.class::isAssignableFrom)
+ .collect(toUnmodifiableMap(
+ schemaCls -> schemaName((Class<? extends
DataStorageConfigurationSchema>) schemaCls),
+ schemaCls -> (Class<? extends
DataStorageConfigurationSchema>) schemaCls
+ ));
+
+ Set<String> dataStorageNames = modules.stream()
Review Comment:
Ok, so:
modules is a Set that you retrieve by calling "this.modules =
modules.values();", it's a proxy.
And after that you convert it back into the map with streams and all this
magic. Why can't you store Map as a field?
##########
modules/storage-api/src/main/java/org/apache/ignite/internal/storage/DataStorageModules.java:
##########
@@ -112,12 +104,50 @@ public Map<String, StorageEngine> createStorageEngines(
/**
* Collects {@link DataStorageConfigurationSchema data storage schema}
fields (with {@link Value}).
*
+ * @param polymorphicSchemaExtensions {@link PolymorphicConfigInstance
Polymorphic schema extensions} that contain extensions of {@link
+ * DataStorageConfigurationSchema}.
* @return Mapping: {@link DataStorageModule#name Data storage name} ->
filed name -> field type.
+ * @throws IllegalStateException If the {@link
DataStorageConfigurationSchema data storage schemas} are not valid.
*/
- public Map<String, Map<String, Class<?>>> collectSchemasFields() {
+ public Map<String, Map<String, Class<?>>>
collectSchemasFields(Collection<Class<?>> polymorphicSchemaExtensions) {
+ Map<String, Class<? extends DataStorageConfigurationSchema>> schemas =
polymorphicSchemaExtensions.stream()
+ .filter(DataStorageConfigurationSchema.class::isAssignableFrom)
+ .collect(toUnmodifiableMap(
+ schemaCls -> schemaName((Class<? extends
DataStorageConfigurationSchema>) schemaCls),
+ schemaCls -> (Class<? extends
DataStorageConfigurationSchema>) schemaCls
+ ));
+
+ Set<String> dataStorageNames = modules.stream()
+ .map(DataStorageModule::name)
+ .collect(toSet());
+
+ if (!dataStorageNames.equals(schemas.keySet())) {
+ List<String> dataStorageWithoutSchema = dataStorageNames.stream()
+ .filter(not(schemas.keySet()::contains))
Review Comment:
is there a "containsKey" method? Or simply "contains" maybe?
##########
modules/storage-api/src/main/java/org/apache/ignite/internal/storage/DataStorageModules.java:
##########
@@ -112,12 +104,50 @@ public Map<String, StorageEngine> createStorageEngines(
/**
* Collects {@link DataStorageConfigurationSchema data storage schema}
fields (with {@link Value}).
*
+ * @param polymorphicSchemaExtensions {@link PolymorphicConfigInstance
Polymorphic schema extensions} that contain extensions of {@link
+ * DataStorageConfigurationSchema}.
* @return Mapping: {@link DataStorageModule#name Data storage name} ->
filed name -> field type.
+ * @throws IllegalStateException If the {@link
DataStorageConfigurationSchema data storage schemas} are not valid.
*/
- public Map<String, Map<String, Class<?>>> collectSchemasFields() {
+ public Map<String, Map<String, Class<?>>>
collectSchemasFields(Collection<Class<?>> polymorphicSchemaExtensions) {
+ Map<String, Class<? extends DataStorageConfigurationSchema>> schemas =
polymorphicSchemaExtensions.stream()
+ .filter(DataStorageConfigurationSchema.class::isAssignableFrom)
+ .collect(toUnmodifiableMap(
+ schemaCls -> schemaName((Class<? extends
DataStorageConfigurationSchema>) schemaCls),
+ schemaCls -> (Class<? extends
DataStorageConfigurationSchema>) schemaCls
+ ));
+
+ Set<String> dataStorageNames = modules.stream()
+ .map(DataStorageModule::name)
+ .collect(toSet());
+
+ if (!dataStorageNames.equals(schemas.keySet())) {
+ List<String> dataStorageWithoutSchema = dataStorageNames.stream()
Review Comment:
Please extract content of this "if" into a method. It is self-contained and
pretty big
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]