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);
+ });
}
}