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/05/21 05:38:23 UTC

[isis] 01/02: ISIS-3051: FacetProcessor optimization

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

commit 9a1f2e6c630e0bd80587088deddfdafacc850010
Author: Andi Huber <ah...@apache.org>
AuthorDate: Sat May 14 08:31:58 2022 +0200

    ISIS-3051: FacetProcessor optimization
    
    - don't run the same processor more than once
---
 .../specloader/facetprocessor/FacetProcessor.java  | 25 ++++++++--------------
 1 file changed, 9 insertions(+), 16 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/facetprocessor/FacetProcessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/facetprocessor/FacetProcessor.java
index 68650c062f..b475e5fafc 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/facetprocessor/FacetProcessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/facetprocessor/FacetProcessor.java
@@ -24,6 +24,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.function.Consumer;
+import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
 import org.apache.isis.applib.annotation.Introspection.IntrospectionPolicy;
@@ -375,27 +376,19 @@ implements HasMetaModelContext{
             final MethodRemover methodRemover,
             final FacetedMethodParameter facetedMethodParameter) {
 
-        for (val featureType : FeatureType.PARAMETERS_ONLY) {
-            processParams(introspectedClass, introspectionPolicy, method, methodRemover, facetedMethodParameter, featureType);
-        }
-    }
-
-    public void processParams(
-            final Class<?> introspectedClass,
-            final IntrospectionPolicy introspectionPolicy,
-            final Method method,
-            final MethodRemover methodRemover,
-            final FacetedMethodParameter facetedMethodParameter,
-            final FeatureType featureType) {
-
         val processParameterContext =
-                new ProcessParameterContext(introspectedClass, introspectionPolicy, method, methodRemover, facetedMethodParameter);
+                new ProcessParameterContext(introspectedClass, introspectionPolicy,
+                        method, methodRemover, facetedMethodParameter);
 
-        factoryListByFeatureType.get().getOrElseEmpty(featureType)
+        val factoryCache = factoryListByFeatureType.get();
+
+        FeatureType.PARAMETERS_ONLY.stream()
+        .map(factoryCache::getOrElseEmpty)
+        .flatMap(List::stream)
+        .collect(Collectors.toSet())
         .forEach(facetFactory->facetFactory.processParams(processParameterContext));
     }
 
-
     private void clearCaches() {
         factoryListByFeatureType.clear();
         methodPrefixes.clear();