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 2022/07/26 05:18:06 UTC
[isis] branch master updated: ISIS-3091: commons: for convenience, adds multimap variant: TreeMap of ArrayLists
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 27f5586b49 ISIS-3091: commons: for convenience, adds multimap variant: TreeMap of ArrayLists
27f5586b49 is described below
commit 27f5586b49ab0f9c615c519ea9084ece11987bcd
Author: andi-huber <ah...@apache.org>
AuthorDate: Tue Jul 26 07:18:00 2022 +0200
ISIS-3091: commons: for convenience, adds multimap variant: TreeMap of
ArrayLists
---
.../apache/isis/commons/internal/collections/_Multimaps.java | 7 +++++++
.../services/appfeat/ApplicationFeatureRepositoryDefault.java | 10 ++++++----
2 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/commons/src/main/java/org/apache/isis/commons/internal/collections/_Multimaps.java b/commons/src/main/java/org/apache/isis/commons/internal/collections/_Multimaps.java
index 86203164f2..e312d57260 100644
--- a/commons/src/main/java/org/apache/isis/commons/internal/collections/_Multimaps.java
+++ b/commons/src/main/java/org/apache/isis/commons/internal/collections/_Multimaps.java
@@ -349,6 +349,13 @@ public class _Multimaps {
return newListMultimap(HashMap<K, List<V>>::new, ArrayList::new);
}
+ /**
+ * @return TreeMap of ArrayLists
+ */
+ public static <K, V> ListMultimap<K, V> newListTreeMultimap(){
+ return newListMultimap(TreeMap<K, List<V>>::new, ArrayList::new);
+ }
+
/**
* @return ConcurrentHashMap of CopyOnWriteArrayList (fully concurrent)
*/
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java
index 8e3c4f79e8..eb57e7dfb8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java
@@ -18,7 +18,6 @@
*/
package org.apache.isis.core.metamodel.services.appfeat;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
@@ -46,6 +45,8 @@ import org.apache.isis.applib.services.appfeat.ApplicationFeatureRepository;
import org.apache.isis.applib.services.appfeat.ApplicationFeatureSort;
import org.apache.isis.applib.services.appfeat.ApplicationMemberSort;
import org.apache.isis.commons.internal.collections._Maps;
+import org.apache.isis.commons.internal.collections._Multimaps;
+import org.apache.isis.commons.internal.collections._Multimaps.ListMultimap;
import org.apache.isis.commons.internal.exceptions._Exceptions;
import org.apache.isis.core.config.IsisConfiguration;
import org.apache.isis.core.config.metamodel.services.ApplicationFeaturesInitConfiguration;
@@ -84,7 +85,7 @@ implements ApplicationFeatureRepository, MetamodelListener {
private final SortedMap<ApplicationFeatureId, ApplicationFeature> propertyFeatures = _Maps.newTreeMap();
private final SortedMap<ApplicationFeatureId, ApplicationFeature> collectionFeatures = _Maps.newTreeMap();
private final SortedMap<ApplicationFeatureId, ApplicationFeature> actionFeatures = _Maps.newTreeMap();
- private final SortedMap<String, List<ApplicationFeature>> memberFeaturesByLogicalTypeName = _Maps.newTreeMap();
+ private final ListMultimap<String, ApplicationFeature> memberFeaturesByLogicalTypeName = _Multimaps.newListTreeMultimap();
private final IsisConfiguration configuration;
private final SpecificationLoader specificationLoader;
@@ -135,7 +136,8 @@ implements ApplicationFeatureRepository, MetamodelListener {
visitFeatureIdentifierByName(typeFeatures, featuresByName::put);
visitFeatureIdentifierByName(memberFeatures, featuresByName::put);
this.featureIdentifiersByName = Collections.unmodifiableMap(featuresByName);
- memberFeatures.forEach((key, value) -> memberFeaturesByLogicalTypeName.computeIfAbsent(key.getLogicalTypeName(), k -> new ArrayList<>()).add(value));
+ memberFeatures.forEach((key, value) ->
+ memberFeaturesByLogicalTypeName.putElement(key.getLogicalTypeName(), value));
}
private void visitFeatureIdentifierByName(
@@ -448,7 +450,7 @@ implements ApplicationFeatureRepository, MetamodelListener {
}
@Override
- public SortedSet<ApplicationFeatureId> propertyIdsFor(LogicalType logicalType) {
+ public SortedSet<ApplicationFeatureId> propertyIdsFor(final LogicalType logicalType) {
ApplicationFeatureId typeFeatureId = typeFeatureIdByLogicalType.get(logicalType);
if (typeFeatureId == null) {
return Collections.emptySortedSet();