This is an automated email from the ASF dual-hosted git repository.
ibessonov pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
The following commit(s) were added to refs/heads/main by this push:
new adc5a4ffd2 IGNITE-19180 NamedListView made iterable (#1881)
adc5a4ffd2 is described below
commit adc5a4ffd27f5b0b14422c322120425ac81e080f
Author: Ivan Bessonov <[email protected]>
AuthorDate: Sat Apr 1 17:38:13 2023 +0300
IGNITE-19180 NamedListView made iterable (#1881)
---
.../apache/ignite/configuration/NamedListView.java | 14 +++++++++++-
.../internal/configuration/tree/NamedListNode.java | 9 +++++++-
.../distributionzones/DistributionZoneManager.java | 26 ++++++++++------------
.../apache/ignite/internal/index/IndexManager.java | 6 ++---
.../ignite/internal/metrics/MetricManager.java | 4 ++--
.../configuration/ExporterConfigurationSchema.java | 4 ++++
.../DelegatingAuthenticationProvider.java | 4 ++--
.../ConfigurationToSchemaDescriptorConverter.java | 6 ++---
.../AuthenticationProvidersValidatorImpl.java | 9 ++++----
.../sql/engine/exec/ddl/DdlCommandHandler.java | 26 ++++++++--------------
.../storage/index/SortedIndexDescriptor.java | 8 +++----
.../internal/table/distributed/TableManager.java | 8 +++----
12 files changed, 65 insertions(+), 59 deletions(-)
diff --git
a/modules/configuration-api/src/main/java/org/apache/ignite/configuration/NamedListView.java
b/modules/configuration-api/src/main/java/org/apache/ignite/configuration/NamedListView.java
index 2980e6e44c..4d4f3cd49d 100644
---
a/modules/configuration-api/src/main/java/org/apache/ignite/configuration/NamedListView.java
+++
b/modules/configuration-api/src/main/java/org/apache/ignite/configuration/NamedListView.java
@@ -17,8 +17,10 @@
package org.apache.ignite.configuration;
+import java.util.Iterator;
import java.util.List;
import java.util.UUID;
+import java.util.stream.Stream;
import org.jetbrains.annotations.Nullable;
/**
@@ -26,7 +28,7 @@ import org.jetbrains.annotations.Nullable;
*
* @param <VIEWT> Type for immutable snapshots of named list elements.
*/
-public interface NamedListView<VIEWT> {
+public interface NamedListView<VIEWT> extends Iterable<VIEWT> {
/**
* Returns an immutable collection of keys contained within this list.
*
@@ -67,4 +69,14 @@ public interface NamedListView<VIEWT> {
* @return Number of elements.
*/
int size();
+
+ /**
+ * Returns an ordered stream of values from the named list.
+ */
+ Stream<VIEWT> stream();
+
+ @Override
+ default Iterator<VIEWT> iterator() {
+ return stream().iterator();
+ }
}
diff --git
a/modules/configuration/src/main/java/org/apache/ignite/internal/configuration/tree/NamedListNode.java
b/modules/configuration/src/main/java/org/apache/ignite/internal/configuration/tree/NamedListNode.java
index 8db9ac3960..f37525eb89 100644
---
a/modules/configuration/src/main/java/org/apache/ignite/internal/configuration/tree/NamedListNode.java
+++
b/modules/configuration/src/main/java/org/apache/ignite/internal/configuration/tree/NamedListNode.java
@@ -29,6 +29,8 @@ import java.util.Objects;
import java.util.UUID;
import java.util.function.Consumer;
import java.util.function.Supplier;
+import java.util.stream.IntStream;
+import java.util.stream.Stream;
import org.apache.ignite.configuration.ConfigurationNodeAlreadyExistException;
import org.apache.ignite.configuration.ConfigurationNodeDoesNotExistException;
import org.apache.ignite.configuration.ConfigurationNodeRemovedException;
@@ -156,6 +158,11 @@ public final class NamedListNode<N> implements
NamedListChange<N, N>, Traversabl
return map.size();
}
+ @Override
+ public Stream<N> stream() {
+ return IntStream.range(0,
map.size()).mapToObj(map::get).map(this::specificNode);
+ }
+
/** {@inheritDoc} */
@Override
public NamedListChange<N, N> create(String key, Consumer<N> valConsumer) {
@@ -367,7 +374,7 @@ public final class NamedListNode<N> implements
NamedListChange<N, N>, Traversabl
/**
* Sets an internal id for the value associated with the passed key.
Should not be used in arbitrary code. Refer to {@link
- * ConfigurationUtil#fillFromPrefixMap} for further details on the usage.
+ * ConfigurationUtil#fillFromPrefixMap(InnerNode, Map)} for further
details on the usage.
*
* @param key Key to update. Should be present in the named list.
Nothing will happen if the key is missing.
* @param internalId New id to associate with the key.
diff --git
a/modules/distribution-zones/src/main/java/org/apache/ignite/internal/distributionzones/DistributionZoneManager.java
b/modules/distribution-zones/src/main/java/org/apache/ignite/internal/distributionzones/DistributionZoneManager.java
index 08ceb1accb..bfac9d56ac 100644
---
a/modules/distribution-zones/src/main/java/org/apache/ignite/internal/distributionzones/DistributionZoneManager.java
+++
b/modules/distribution-zones/src/main/java/org/apache/ignite/internal/distributionzones/DistributionZoneManager.java
@@ -521,12 +521,11 @@ public class DistributionZoneManager implements
IgniteComponent {
// Init timers after restart.
zonesState.putIfAbsent(DEFAULT_ZONE_ID, new ZoneState(executor));
- zonesConfiguration.distributionZones().value().namedListKeys()
- .forEach(zoneName -> {
- int zoneId =
zonesConfiguration.distributionZones().get(zoneName).zoneId().value();
+ zonesConfiguration.distributionZones().value().forEach(zone -> {
+ int zoneId = zone.zoneId();
- zonesState.putIfAbsent(zoneId, new
ZoneState(executor));
- });
+ zonesState.putIfAbsent(zoneId, new ZoneState(executor));
+ });
logicalTopologyService.addEventListener(topologyEventListener);
@@ -909,16 +908,15 @@ public class DistributionZoneManager implements
IgniteComponent {
logicalTopology
);
-
zonesConfiguration.distributionZones().value().namedListKeys()
- .forEach(zoneName -> {
- int zoneId =
zonesConfiguration.distributionZones().get(zoneName).zoneId().value();
+
zonesConfiguration.distributionZones().value().forEach(zone -> {
+ int zoneId = zone.zoneId();
-
saveDataNodesAndUpdateTriggerKeysInMetaStorage(
- zoneId,
- appliedRevision,
- logicalTopology
- );
- });
+
saveDataNodesAndUpdateTriggerKeysInMetaStorage(
+ zoneId,
+ appliedRevision,
+ logicalTopology
+ );
+ });
}
} finally {
busyLock.leaveBusy();
diff --git
a/modules/index/src/main/java/org/apache/ignite/internal/index/IndexManager.java
b/modules/index/src/main/java/org/apache/ignite/internal/index/IndexManager.java
index 4b0caa0ccf..d06ec3f143 100644
---
a/modules/index/src/main/java/org/apache/ignite/internal/index/IndexManager.java
+++
b/modules/index/src/main/java/org/apache/ignite/internal/index/IndexManager.java
@@ -462,14 +462,12 @@ public class IndexManager extends Producer<IndexEvent,
IndexEventParameters> imp
var indexedColumns = new ArrayList<String>(colsCount);
var collations = new ArrayList<ColumnCollation>(colsCount);
- for (var columnName : indexView.columns().namedListKeys()) {
- IndexColumnView columnView = indexView.columns().get(columnName);
-
+ for (IndexColumnView columnView : indexView.columns()) {
//TODO IGNITE-15141: Make null-order configurable.
// NULLS FIRST for DESC, NULLS LAST for ASC by default.
boolean nullsFirst = !columnView.asc();
- indexedColumns.add(columnName);
+ indexedColumns.add(columnView.name());
collations.add(ColumnCollation.get(columnView.asc(), nullsFirst));
}
diff --git
a/modules/metrics/src/main/java/org/apache/ignite/internal/metrics/MetricManager.java
b/modules/metrics/src/main/java/org/apache/ignite/internal/metrics/MetricManager.java
index 64fb1d31c8..0801a799a8 100644
---
a/modules/metrics/src/main/java/org/apache/ignite/internal/metrics/MetricManager.java
+++
b/modules/metrics/src/main/java/org/apache/ignite/internal/metrics/MetricManager.java
@@ -106,8 +106,8 @@ public class MetricManager implements IgniteComponent {
MetricView conf = metricConfiguration.value();
- for (String exporterName : conf.exporters().namedListKeys()) {
- checkAndStartExporter(exporterName,
metricConfiguration.exporters().get(exporterName).value());
+ for (ExporterView exporter : conf.exporters()) {
+ checkAndStartExporter(exporter.exporterName(), exporter);
}
metricConfiguration.exporters().listenElements(new
ExporterConfigurationListener());
diff --git
a/modules/metrics/src/main/java/org/apache/ignite/internal/metrics/exporters/configuration/ExporterConfigurationSchema.java
b/modules/metrics/src/main/java/org/apache/ignite/internal/metrics/exporters/configuration/ExporterConfigurationSchema.java
index 1a2f35bdbe..5ceee5f2be 100644
---
a/modules/metrics/src/main/java/org/apache/ignite/internal/metrics/exporters/configuration/ExporterConfigurationSchema.java
+++
b/modules/metrics/src/main/java/org/apache/ignite/internal/metrics/exporters/configuration/ExporterConfigurationSchema.java
@@ -17,6 +17,7 @@
package org.apache.ignite.internal.metrics.exporters.configuration;
+import org.apache.ignite.configuration.annotation.InjectedName;
import org.apache.ignite.configuration.annotation.PolymorphicConfig;
import org.apache.ignite.configuration.annotation.PolymorphicId;
import org.apache.ignite.internal.metrics.exporters.MetricExporter;
@@ -33,4 +34,7 @@ public class ExporterConfigurationSchema {
*/
@PolymorphicId
public String exporterName;
+
+ @InjectedName
+ public String name;
}
diff --git
a/modules/rest/src/main/java/org/apache/ignite/internal/rest/authentication/DelegatingAuthenticationProvider.java
b/modules/rest/src/main/java/org/apache/ignite/internal/rest/authentication/DelegatingAuthenticationProvider.java
index 1d21b0618e..6c2093b450 100644
---
a/modules/rest/src/main/java/org/apache/ignite/internal/rest/authentication/DelegatingAuthenticationProvider.java
+++
b/modules/rest/src/main/java/org/apache/ignite/internal/rest/authentication/DelegatingAuthenticationProvider.java
@@ -107,8 +107,8 @@ public class DelegatingAuthenticationProvider implements
AuthenticationProvider,
private static List<Authenticator>
providersFromAuthView(AuthenticationView view) {
NamedListView<? extends AuthenticationProviderView> providers =
view.providers();
- return providers.namedListKeys().stream()
- .map(providers::get)
+
+ return providers.stream()
.map(AuthenticatorFactory::create)
.collect(Collectors.toList());
}
diff --git
a/modules/schema/src/main/java/org/apache/ignite/internal/schema/configuration/ConfigurationToSchemaDescriptorConverter.java
b/modules/schema/src/main/java/org/apache/ignite/internal/schema/configuration/ConfigurationToSchemaDescriptorConverter.java
index b470d5f648..b2cae01a10 100644
---
a/modules/schema/src/main/java/org/apache/ignite/internal/schema/configuration/ConfigurationToSchemaDescriptorConverter.java
+++
b/modules/schema/src/main/java/org/apache/ignite/internal/schema/configuration/ConfigurationToSchemaDescriptorConverter.java
@@ -159,15 +159,13 @@ public final class
ConfigurationToSchemaDescriptorConverter {
int idx = 0;
- for (String columnName : tableView.columns().namedListKeys()) {
- ColumnView column = tableView.columns().get(columnName);
-
+ for (ColumnView column : tableView.columns()) {
if (column == null) {
// columns was removed, so let's skip it
continue;
}
- if (keyColumnsNames.contains(columnName)) {
+ if (keyColumnsNames.contains(column.name())) {
keyCols.add(convert(idx, column));
} else {
valCols.add(convert(idx, column));
diff --git
a/modules/security/src/main/java/org/apache/ignite/internal/configuration/AuthenticationProvidersValidatorImpl.java
b/modules/security/src/main/java/org/apache/ignite/internal/configuration/AuthenticationProvidersValidatorImpl.java
index fa73de817a..5e6abbd2bf 100644
---
a/modules/security/src/main/java/org/apache/ignite/internal/configuration/AuthenticationProvidersValidatorImpl.java
+++
b/modules/security/src/main/java/org/apache/ignite/internal/configuration/AuthenticationProvidersValidatorImpl.java
@@ -35,13 +35,12 @@ public class AuthenticationProvidersValidatorImpl implements
@Override
public void validate(AuthenticationProvidersValidator annotation,
ValidationContext<NamedListView<AuthenticationProviderView>> ctx) {
- NamedListView<AuthenticationProviderView> providers =
ctx.getNewValue();
- providers.namedListKeys()
- .forEach(it -> validateProvider(it, providers.get(it), ctx));
-
+ for (AuthenticationProviderView provider : ctx.getNewValue()) {
+ validateProvider(provider.name(), provider, ctx);
+ }
}
- private void validateProvider(String key, AuthenticationProviderView view,
+ private static void validateProvider(String key,
AuthenticationProviderView view,
ValidationContext<NamedListView<AuthenticationProviderView>> ctx) {
try {
AuthenticationType authenticationType =
AuthenticationType.parse(view.type());
diff --git
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ddl/DdlCommandHandler.java
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ddl/DdlCommandHandler.java
index a5acc047ac..c485592d53 100644
---
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ddl/DdlCommandHandler.java
+++
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ddl/DdlCommandHandler.java
@@ -25,10 +25,8 @@ import static
org.apache.ignite.internal.util.CollectionUtils.nullOrEmpty;
import static
org.apache.ignite.lang.ErrorGroups.Sql.DEL_PK_COMUMN_CONSTRAINT_ERR;
import static
org.apache.ignite.lang.ErrorGroups.Sql.UNSUPPORTED_DDL_OPERATION_ERR;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
-import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
@@ -379,13 +377,13 @@ public class DdlCommandHandler {
chng.changeColumns(cols -> {
retUsr.set(true); // Reset state if closure have been
restarted.
- Map<String, String> colNamesToOrders =
columnOrdersToNames(chng.columns());
+ Set<String> colNamesToOrders =
columnNames(chng.columns());
List<ColumnDefinition> colsDef0;
if (ignoreColumnExistance) {
colsDef0 = colsDef.stream().filter(k -> {
- if (colNamesToOrders.containsKey(k.name())) {
+ if (colNamesToOrders.contains(k.name())) {
retUsr.set(false);
return false;
@@ -395,7 +393,7 @@ public class DdlCommandHandler {
}).collect(Collectors.toList());
} else {
colsDef.stream()
- .filter(k ->
colNamesToOrders.containsKey(k.name()))
+ .filter(k ->
colNamesToOrders.contains(k.name()))
.findAny()
.ifPresent(c -> {
throw new
ColumnAlreadyExistsException(c.name());
@@ -469,14 +467,14 @@ public class DdlCommandHandler {
PrimaryKeyView priKey = chng.primaryKey();
- Map<String, String> colNamesToOrders =
columnOrdersToNames(chng.columns());
+ Set<String> colNamesToOrders =
columnNames(chng.columns());
Set<String> colNames0 = new HashSet<>();
Set<String> primaryCols = Set.of(priKey.columns());
for (String colName : colNames) {
- if (!colNamesToOrders.containsKey(colName)) {
+ if (!colNamesToOrders.contains(colName)) {
ret.set(false);
if (!ignoreColumnExistence) {
@@ -492,7 +490,7 @@ public class DdlCommandHandler {
}
}
- colNames0.forEach(k ->
cols.delete(colNamesToOrders.get(k)));
+ colNames0.forEach(cols::delete);
});
return ret.get();
@@ -561,14 +559,8 @@ public class DdlCommandHandler {
}
}
- /** Map column name to order. */
- private static Map<String, String> columnOrdersToNames(NamedListView<?
extends ColumnView> cols) {
- Map<String, String> colNames = new HashMap<>(cols.size());
-
- for (String colOrder : cols.namedListKeys()) {
- colNames.put(cols.get(colOrder).name(), colOrder);
- }
-
- return colNames;
+ /** Column names set. */
+ private static Set<String> columnNames(NamedListView<? extends ColumnView>
cols) {
+ return new HashSet<>(cols.namedListKeys());
}
}
diff --git
a/modules/storage-api/src/main/java/org/apache/ignite/internal/storage/index/SortedIndexDescriptor.java
b/modules/storage-api/src/main/java/org/apache/ignite/internal/storage/index/SortedIndexDescriptor.java
index 661d69cd76..1acc31ae02 100644
---
a/modules/storage-api/src/main/java/org/apache/ignite/internal/storage/index/SortedIndexDescriptor.java
+++
b/modules/storage-api/src/main/java/org/apache/ignite/internal/storage/index/SortedIndexDescriptor.java
@@ -159,14 +159,14 @@ public class SortedIndexDescriptor implements
IndexDescriptor {
NamedListView<? extends IndexColumnView> indexColumns =
((SortedIndexView) indexConfig).columns();
- return indexColumns.namedListKeys().stream()
- .map(columnName -> {
+ return indexColumns.stream()
+ .map(indexColumnView -> {
+ String columnName = indexColumnView.name();
+
ColumnView columnView =
tableConfig.columns().get(columnName);
assert columnView != null : "Incorrect index column
configuration. " + columnName + " column does not exist";
- IndexColumnView indexColumnView =
indexColumns.get(columnName);
-
return new SortedIndexColumnDescriptor(columnView,
indexColumnView);
})
.collect(toUnmodifiableList());
diff --git
a/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/TableManager.java
b/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/TableManager.java
index 7848b4931a..430c8ebcf3 100644
---
a/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/TableManager.java
+++
b/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/TableManager.java
@@ -1517,11 +1517,9 @@ public class TableManager extends Producer<TableEvent,
TableEventParameters> imp
tblChg.delete(name);
})
.changeIndexes(idxChg -> {
- NamedListView<? extends TableIndexView>
indexes = chg.indexes();
-
- for (String indexName :
indexes.namedListKeys()) {
- if
(indexes.get(indexName).tableId().equals(tbl.tableId())) {
- idxChg.delete(indexName);
+ for (TableIndexView index : idxChg) {
+ if (index.tableId().equals(tbl.tableId()))
{
+ idxChg.delete(index.name());
}
}
}))