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/15 11:31:02 UTC

[isis] 01/02: ISIS-3050: improve a bit on mm changes since graphql-merge

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 6bfd77db8c0dc21a99214eedf027ec96a341ad3c
Author: Andi Huber <ah...@apache.org>
AuthorDate: Fri May 13 16:37:59 2022 +0200

    ISIS-3050: improve a bit on mm changes since graphql-merge
---
 .../collections/snapshot/_VersionedList.java       |  2 +-
 ...ActionParameterSupportFacetFactoryAbstract.java |  7 ++++++
 .../metamodel/specloader/SpecificationCache.java   |  3 ++-
 .../specloader/SpecificationCacheDefault.java      | 27 ++++++++++------------
 .../metamodel/specloader/SpecificationLoader.java  |  4 +---
 .../specloader/SpecificationLoaderDefault.java     | 12 ++++++----
 .../MetaModelVisitingValidatorAbstract.java        |  8 +------
 .../viewer/source/GraphQlSourceForIsis.java        |  6 +++--
 .../applib/validate/DomainModelValidator.java      |  2 +-
 9 files changed, 37 insertions(+), 34 deletions(-)

diff --git a/commons/src/main/java/org/apache/isis/commons/internal/collections/snapshot/_VersionedList.java b/commons/src/main/java/org/apache/isis/commons/internal/collections/snapshot/_VersionedList.java
index 94114a056b..ff6fa6e60c 100644
--- a/commons/src/main/java/org/apache/isis/commons/internal/collections/snapshot/_VersionedList.java
+++ b/commons/src/main/java/org/apache/isis/commons/internal/collections/snapshot/_VersionedList.java
@@ -168,7 +168,7 @@ public final class _VersionedList<T> {
      * Also handles concurrent additions that occur during traversal.
      * @param action
      */
-    public void forEachParallel(final Consumer<T> action) {
+    public void forEachConcurrent(final Consumer<T> action) {
         val snapshot = snapshot();
         snapshot.forEachParallel(action);
         Snapshot<T> delta = deltaSince(snapshot);
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/support/ActionParameterSupportFacetFactoryAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/support/ActionParameterSupportFacetFactoryAbstract.java
index 5419dec8d8..f925c8ae57 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/support/ActionParameterSupportFacetFactoryAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/support/ActionParameterSupportFacetFactoryAbstract.java
@@ -82,6 +82,13 @@ extends MemberAndPropertySupportFacetFactoryAbstract {
             val paramIndex = searchResult.getParamIndex();
             // add facets directly to parameters, not to actions
             val paramAsHolder = parameters.getElseFail(paramIndex);
+
+            if(searchResult.getSupportingMethod().toString().endsWith(
+                    "HasCommunicationChannels_removeCommunicationChannel.choices0Act()")) {
+                System.err.printf("%s%n", searchResult.getSupportingMethod());
+                System.err.printf("\t%d: %s%n", paramIndex, paramAsHolder.getFeatureIdentifier().toString());
+            }
+
             onSearchResult(paramAsHolder, searchResult);
         });
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationCache.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationCache.java
index 28ac510ecd..92f0fab1e0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationCache.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationCache.java
@@ -38,6 +38,7 @@ interface SpecificationCache<T extends ObjectSpecification> {
     /** @returns thread-safe defensive copy */
     Can<T> snapshotSpecs();
 
-    void forEach(Consumer<T> onSpec, boolean shouldRunConcurrent);
+    void forEach(Consumer<T> onSpec);
+    void forEachConcurrent(Consumer<T> onSpec);
 
 }
\ No newline at end of file
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationCacheDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationCacheDefault.java
index 5b6033e2a9..bc4edc230f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationCacheDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationCacheDefault.java
@@ -18,7 +18,6 @@
  */
 package org.apache.isis.core.metamodel.specloader;
 
-import java.util.Comparator;
 import java.util.Map;
 import java.util.Optional;
 import java.util.function.Consumer;
@@ -26,7 +25,6 @@ import java.util.function.Function;
 
 import org.springframework.lang.Nullable;
 
-import org.apache.isis.applib.id.HasLogicalType;
 import org.apache.isis.commons.collections.Can;
 import org.apache.isis.commons.internal.collections._Maps;
 import org.apache.isis.commons.internal.collections.snapshot._VersionedList;
@@ -44,7 +42,7 @@ class SpecificationCacheDefault<T extends ObjectSpecification> implements Specif
     private final _VersionedList<T> vList = new _VersionedList<>();
 
     @Override
-    public Optional<T> lookup(Class<?> cls) {
+    public Optional<T> lookup(final Class<?> cls) {
         synchronized(this) {
             return Optional.ofNullable(specByClass.get(cls));
         }
@@ -52,8 +50,8 @@ class SpecificationCacheDefault<T extends ObjectSpecification> implements Specif
 
     @Override
     public T computeIfAbsent(
-            Class<?> cls,
-            Function<Class<?>, T> mappingFunction) {
+            final Class<?> cls,
+            final Function<Class<?>, T> mappingFunction) {
         synchronized(this) {
             T spec = specByClass.get(cls);
             if(spec==null) {
@@ -86,7 +84,7 @@ class SpecificationCacheDefault<T extends ObjectSpecification> implements Specif
     }
 
     @Override
-    public T remove(@NonNull Class<?> cls) {
+    public T remove(@NonNull final Class<?> cls) {
         synchronized(this) {
             final T removed = specByClass.remove(cls);
             if(removed!=null) {
@@ -98,19 +96,18 @@ class SpecificationCacheDefault<T extends ObjectSpecification> implements Specif
     }
 
     @Override
-    public void forEach(Consumer<T> onSpec, boolean shouldRunConcurrent) {
-        if(shouldRunConcurrent) {
-            vList.forEachParallel(onSpec);
-        } else {
-            vList
-                .stream().sorted(Comparator.comparing(HasLogicalType::getLogicalTypeName))
-                .forEach(onSpec);
-        }
+    public void forEachConcurrent(final Consumer<T> onSpec) {
+        vList.forEachConcurrent(onSpec);
+    }
+
+    @Override
+    public void forEach(final Consumer<T> onSpec) {
+        vList.forEach(onSpec);
     }
 
     // -- HELPER
 
-    private void internalPut(@Nullable T spec) {
+    private void internalPut(@Nullable final T spec) {
         if(spec==null) {
             return;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
index 4781c61dc8..fe2f4c7e9e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
@@ -18,8 +18,6 @@
  */
 package org.apache.isis.core.metamodel.specloader;
 
-import java.util.ArrayList;
-import java.util.List;
 import java.util.Optional;
 import java.util.function.Consumer;
 
@@ -108,7 +106,7 @@ public interface SpecificationLoader {
      *
      * @param action
      */
-    void forEach(Consumer<ObjectSpecification> onSpec, final boolean shouldRunConcurrent);
+    void forEach(Consumer<ObjectSpecification> onSpec);
 
     void reloadSpecification(Class<?> domainType);
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderDefault.java
index 208bfbff50..b083fc687c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderDefault.java
@@ -434,8 +434,14 @@ public class SpecificationLoaderDefault implements SpecificationLoader {
     }
 
     @Override
-    public void forEach(final Consumer<ObjectSpecification> onSpec, final boolean shouldRunConcurrent) {
-        cache.forEach(onSpec, shouldRunConcurrent);
+    public void forEach(final Consumer<ObjectSpecification> onSpec) {
+        val shouldRunConcurrent = isisConfiguration.getCore().getMetaModel().getValidator().isParallelize();
+        if(shouldRunConcurrent) {
+            cache.forEachConcurrent(onSpec);
+        } else {
+            cache.forEach(onSpec);
+        }
+
     }
 
     @Override
@@ -653,6 +659,4 @@ public class SpecificationLoaderDefault implements SpecificationLoader {
         }
     }
 
-
-
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelVisitingValidatorAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelVisitingValidatorAbstract.java
index 266b678f61..cd0d27ac21 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelVisitingValidatorAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/validator/MetaModelVisitingValidatorAbstract.java
@@ -18,11 +18,8 @@
  */
 package org.apache.isis.core.metamodel.specloader.validator;
 
-import org.apache.isis.core.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 
-import lombok.val;
-
 public abstract class MetaModelVisitingValidatorAbstract
 extends MetaModelValidatorAbstract
 implements MetaModelVisitingValidator {
@@ -38,11 +35,8 @@ implements MetaModelVisitingValidator {
             return;
         }
 
-        val shouldRunConcurrent =
-                getMetaModelContext().getConfiguration().getCore().getMetaModel().getValidator().isParallelize();
-
         getMetaModelContext().getSpecificationLoader()
-        .forEach(this::validate, shouldRunConcurrent);
+        .forEach(this::validate);
 
         summarize();
 
diff --git a/incubator/viewers/graphql/viewer/src/main/java/org/apache/isis/viewer/graphql/viewer/source/GraphQlSourceForIsis.java b/incubator/viewers/graphql/viewer/src/main/java/org/apache/isis/viewer/graphql/viewer/source/GraphQlSourceForIsis.java
index 85f9562020..76e300138f 100644
--- a/incubator/viewers/graphql/viewer/src/main/java/org/apache/isis/viewer/graphql/viewer/source/GraphQlSourceForIsis.java
+++ b/incubator/viewers/graphql/viewer/src/main/java/org/apache/isis/viewer/graphql/viewer/source/GraphQlSourceForIsis.java
@@ -89,7 +89,9 @@ public class GraphQlSourceForIsis implements GraphQlSource {
 
         Set<GraphQLType> graphQLObjectTypes = new HashSet<>();
 
-        specificationLoader.forEach(objectSpecification -> {
+        specificationLoader.snapshotSpecifications()
+        .distinct((a, b) -> a.getLogicalTypeName().equals(b.getLogicalTypeName()))
+        .forEach(objectSpecification -> {
 
             val logicalTypeName = objectSpecification.getLogicalTypeName();
             String logicalTypeNameSanitized = _Utils.logicalTypeNameSanitized(logicalTypeName);
@@ -120,7 +122,7 @@ public class GraphQlSourceForIsis implements GraphQlSource {
                 case UNKNOWN:
                     break;
             }
-        }, false);
+        });
 
         val query_numServices = newFieldDefinition()
                 .name("numServices")
diff --git a/testing/integtestsupport/applib/src/main/java/org/apache/isis/testing/integtestsupport/applib/validate/DomainModelValidator.java b/testing/integtestsupport/applib/src/main/java/org/apache/isis/testing/integtestsupport/applib/validate/DomainModelValidator.java
index ff64e48605..50b52f778e 100644
--- a/testing/integtestsupport/applib/src/main/java/org/apache/isis/testing/integtestsupport/applib/validate/DomainModelValidator.java
+++ b/testing/integtestsupport/applib/src/main/java/org/apache/isis/testing/integtestsupport/applib/validate/DomainModelValidator.java
@@ -73,7 +73,7 @@ public class DomainModelValidator {
             if(log.isDebugEnabled()) {
                 specificationLoader.forEach(spec->{
                     log.debug("loaded: " + spec.getFullIdentifier());
-                },false);
+                });
             }
         }