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();