You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2021/12/23 08:50:41 UTC
[isis] branch master updated: ISIS-2929: adds DataTableModel data-row by UUID lookup caching
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/master by this push:
new 74c6166 ISIS-2929: adds DataTableModel data-row by UUID lookup caching
74c6166 is described below
commit 74c61667d0c465d7d2156baa1e722fca4f33648e
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Dec 23 09:50:18 2021 +0100
ISIS-2929: adds DataTableModel data-row by UUID lookup caching
---
.../metamodel/interactions/managed/nonscalar/DataTableModel.java | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/nonscalar/DataTableModel.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/nonscalar/DataTableModel.java
index 37ac9f2..cede043 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/nonscalar/DataTableModel.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/nonscalar/DataTableModel.java
@@ -19,6 +19,7 @@
package org.apache.isis.core.metamodel.interactions.managed.nonscalar;
import java.io.Serializable;
+import java.util.Map;
import java.util.Optional;
import java.util.UUID;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -33,6 +34,7 @@ import org.apache.isis.commons.internal.binding._BindableAbstract;
import org.apache.isis.commons.internal.binding._Bindables;
import org.apache.isis.commons.internal.binding._Observables;
import org.apache.isis.commons.internal.binding._Observables.LazyObservable;
+import org.apache.isis.commons.internal.collections._Maps;
import org.apache.isis.commons.internal.exceptions._Exceptions;
import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.consent.InteractionResult;
@@ -174,11 +176,12 @@ implements MultiselectChoices {
return getMetaModel().getElementType();
}
+ private final Map<UUID, Optional<DataRow>> dataRowByUuidLookupCache = _Maps.newConcurrentHashMap();
public Optional<DataRow> lookupDataRow(final @NonNull UUID uuid) {
- //TODO can be safely cached
- return getDataRowsFiltered().getValue().stream()
+ // lookup can be safely cached
+ return dataRowByUuidLookupCache.computeIfAbsent(uuid, __->getDataRowsFiltered().getValue().stream()
.filter(dr->dr.getUuid().equals(uuid))
- .findFirst();
+ .findFirst());
}
// -- TOGGLE ALL