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/causeway.git
The following commit(s) were added to refs/heads/master by this push:
new 16f72e5886 CAUSEWAY-3710: simplifies MetaModelRefiner testing
16f72e5886 is described below
commit 16f72e58867dbf42ed1942303fbf3520cba4e92c
Author: andi-huber <[email protected]>
AuthorDate: Fri Mar 29 08:11:24 2024 +0100
CAUSEWAY-3710: simplifies MetaModelRefiner testing
---
.../_testing/MetaModelContext_forTesting.java | 14 +++++++--
.../dflt/ProgrammingModelFacetsJava11.java | 10 +++++++
.../specloader/ProgrammingModelServiceDefault.java | 11 +++-----
.../facets/AbstractTestWithMetaModelContext.java | 8 +-----
.../ViewModelSemanticCheckingFacetFactoryTest.java | 2 +-
.../DomainObjectAnnotationFacetFactoryTest.java | 33 ++++------------------
...VersionAnnotationFacetFactoryTest_validate.java | 2 +-
7 files changed, 33 insertions(+), 47 deletions(-)
diff --git
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/_testing/MetaModelContext_forTesting.java
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/_testing/MetaModelContext_forTesting.java
index 4e8709f0c4..2f2aaa0b00 100644
---
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/_testing/MetaModelContext_forTesting.java
+++
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/_testing/MetaModelContext_forTesting.java
@@ -23,6 +23,7 @@ import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
+import java.util.function.BiFunction;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.stream.Stream;
@@ -72,6 +73,7 @@ import
org.apache.causeway.core.config.viewer.web.WebAppContextPath;
import org.apache.causeway.core.metamodel.commons.ClassUtil;
import org.apache.causeway.core.metamodel.context.MetaModelContext;
import org.apache.causeway.core.metamodel.execution.MemberExecutorService;
+import org.apache.causeway.core.metamodel.facetapi.MetaModelRefiner;
import org.apache.causeway.core.metamodel.facets.object.icon.ObjectIconService;
import
org.apache.causeway.core.metamodel.facets.object.value.annotcfg.ValueFacetForValueAnnotationOrAnyMatchingValueSemanticsFacetFactory;
import org.apache.causeway.core.metamodel.object.ManagedObject;
@@ -159,8 +161,12 @@ extends MetaModelContext {
private SpecificationLoader specificationLoader;
@Builder.Default
- private Function<MetaModelContext, ProgrammingModel>
programmingModelFactory = ProgrammingModelFacetsJava11::new;
-
+ Can<Function<MetaModelContext, MetaModelRefiner>> refiners = Can.empty();
+
+ @Builder.Default
+ private BiFunction<MetaModelContext, Can<MetaModelRefiner>,
ProgrammingModel> programmingModelFactory =
+ (mmc, refiners)->new ProgrammingModelFacetsJava11(mmc, refiners);
+
private InteractionService interactionService;
private TranslationService translationService;
@@ -354,7 +360,9 @@ extends MetaModelContext {
return programmingModelRef.get();
}
private final ProgrammingModel initProgrammingModel() {
- val programmingModel = programmingModelFactory.apply(this);
+ var metamodelRefiners = refiners.map(factory->factory.apply(this));
+ val programmingModel = programmingModelFactory.apply(this,
metamodelRefiners);
+
((ProgrammingModelAbstract)programmingModel).init(new
ProgrammingModelInitFilterDefault());
return programmingModel;
}
diff --git
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/progmodels/dflt/ProgrammingModelFacetsJava11.java
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/progmodels/dflt/ProgrammingModelFacetsJava11.java
index 44ecc13130..e3d00066e6 100644
---
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/progmodels/dflt/ProgrammingModelFacetsJava11.java
+++
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/progmodels/dflt/ProgrammingModelFacetsJava11.java
@@ -16,7 +16,9 @@
* under the License. */
package org.apache.causeway.core.metamodel.progmodels.dflt;
+import org.apache.causeway.commons.collections.Can;
import org.apache.causeway.core.metamodel.context.MetaModelContext;
+import org.apache.causeway.core.metamodel.facetapi.MetaModelRefiner;
import
org.apache.causeway.core.metamodel.facets.actions.action.ActionAnnotationFacetFactory;
import
org.apache.causeway.core.metamodel.facets.actions.action.ActionAnnotationShouldEnforceConcreteTypeToBeIncludedWithMetamodelValidator;
import
org.apache.causeway.core.metamodel.facets.actions.action.ActionChoicesForCollectionParameterFacetFactory;
@@ -105,6 +107,10 @@ public final class ProgrammingModelFacetsJava11
extends ProgrammingModelAbstract {
public ProgrammingModelFacetsJava11(final MetaModelContext mmc) {
+ this(mmc, Can.empty());
+ }
+
+ public ProgrammingModelFacetsJava11(final MetaModelContext mmc,
Can<MetaModelRefiner> refiners) {
super(mmc);
// act on the peer objects (FacetedMethod etc), rather than
ObjectMembers etc
@@ -115,6 +121,10 @@ extends ProgrammingModelAbstract {
addPostProcessors();
addValidators();
+
+ for (val metaModelRefiner : refiners) {
+ metaModelRefiner.refineProgrammingModel(this);
+ }
}
private void addFacetFactories() {
diff --git
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/ProgrammingModelServiceDefault.java
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/ProgrammingModelServiceDefault.java
index a13168c2bc..4487552f3c 100644
---
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/ProgrammingModelServiceDefault.java
+++
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/ProgrammingModelServiceDefault.java
@@ -61,16 +61,13 @@ implements ProgrammingModelService {
private ProgrammingModel createProgrammingModel() {
- log.info("About to create the ProgrammingModel.");
-
- val programmingModel = new
ProgrammingModelFacetsJava11(metaModelContext);
-
// from all plugins out there, add their contributed FacetFactories,
Validators
// and PostProcessors to the programming model
val metaModelRefiners =
metaModelContext.getServiceRegistry().select(MetaModelRefiner.class);
- for (val metaModelRefiner : metaModelRefiners) {
- metaModelRefiner.refineProgrammingModel(programmingModel);
- }
+
+ log.info("About to create the ProgrammingModel w/ {} refiners.",
metaModelRefiners.size());
+
+ val programmingModel = new
ProgrammingModelFacetsJava11(metaModelContext, metaModelRefiners);
// finalize the programming model (make it immutable)
programmingModel.init(programmingModelInitFilter);
diff --git
a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/AbstractTestWithMetaModelContext.java
b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/AbstractTestWithMetaModelContext.java
index e19ce41bd7..b81e8bec5f 100644
---
a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/AbstractTestWithMetaModelContext.java
+++
b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/AbstractTestWithMetaModelContext.java
@@ -25,7 +25,6 @@ import
org.apache.causeway.core.metamodel.context.HasMetaModelContext;
import org.apache.causeway.core.metamodel.context.MetaModelContext;
import org.apache.causeway.core.metamodel.progmodel.ProgrammingModelAbstract;
import
org.apache.causeway.core.metamodel.progmodel.ProgrammingModelInitFilterDefault;
-import
org.apache.causeway.core.metamodel.progmodels.dflt.ProgrammingModelFacetsJava11;
import lombok.Getter;
import lombok.val;
@@ -43,17 +42,12 @@ implements HasMetaModelContext {
protected final void setupWithDefaultProgrammingModel() {
metaModelContext = MetaModelContext_forTesting.builder()
- .programmingModelFactory(mmc->{
- val progModel = new ProgrammingModelFacetsJava11(mmc);
- progModel.init(new ProgrammingModelInitFilterDefault());
- return progModel;
- })
.build();
}
protected final void setupWithProgrammingModel(final
BiConsumer<MetaModelContext, ProgrammingModelAbstract> factory) {
metaModelContext = MetaModelContext_forTesting.builder()
- .programmingModelFactory(mmc->{
+ .programmingModelFactory((mmc, refiners)->{
val progModel = new ProgrammingModelAbstract(mmc) {
@Override protected void assertNotInitialized(){}
};
diff --git
a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/object/ViewModelSemanticCheckingFacetFactoryTest.java
b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/object/ViewModelSemanticCheckingFacetFactoryTest.java
index 617a8af575..75cd5ccac6 100644
---
a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/object/ViewModelSemanticCheckingFacetFactoryTest.java
+++
b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/object/ViewModelSemanticCheckingFacetFactoryTest.java
@@ -52,7 +52,7 @@ class ViewModelSemanticCheckingFacetFactoryTest {
metaModelContext = MetaModelContext_forTesting.builder()
.configuration(configuration)
- .programmingModelFactory(mmc->new
ProgrammingModelAbstract(mmc) {})
+ .programmingModelFactory((mmc, refiners)->new
ProgrammingModelAbstract(mmc) {})
.build();
facetFactory = new
ViewModelSemanticCheckingFacetFactory(metaModelContext);
diff --git
a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java
b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java
index 4b098a31f2..cca90a69f7 100644
---
a/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java
+++
b/core/metamodel/src/test/java/org/apache/causeway/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java
@@ -39,6 +39,7 @@ import org.apache.causeway.applib.annotation.DomainObject;
import org.apache.causeway.applib.annotation.DomainService;
import org.apache.causeway.applib.id.LogicalType;
import org.apache.causeway.applib.mixins.system.HasInteractionId;
+import org.apache.causeway.commons.collections.Can;
import
org.apache.causeway.core.config.metamodel.facets.DomainObjectConfigOptions;
import org.apache.causeway.core.metamodel._testing.MetaModelContext_forTesting;
import org.apache.causeway.core.metamodel.facetapi.Facet;
@@ -59,13 +60,9 @@ import
org.apache.causeway.core.metamodel.facets.object.publish.entitychange.Ent
import
org.apache.causeway.core.metamodel.facets.object.viewmodel.ViewModelFacet;
import
org.apache.causeway.core.metamodel.facets.object.viewmodel.ViewModelFacetForDomainObjectAnnotation;
import
org.apache.causeway.core.metamodel.facets.objectvalue.choices.ChoicesFacet;
-import
org.apache.causeway.core.metamodel.progmodel.ProgrammingModelInitFilterDefault;
-import
org.apache.causeway.core.metamodel.progmodels.dflt.ProgrammingModelFacetsJava11;
import org.apache.causeway.core.metamodel.spec.IntrospectionState;
import
org.apache.causeway.core.metamodel.specloader.validator.ValidationFailures;
-import lombok.val;
-
class DomainObjectAnnotationFacetFactoryTest
extends FacetFactoryTestAbstract {
@@ -682,12 +679,7 @@ extends FacetFactoryTestAbstract {
@Test
public void testValidationDomainObjectWithAliasesConfigured() {
metaModelContext = MetaModelContext_forTesting.builder()
- .programmingModelFactory(mmc -> {
- val progModel = new ProgrammingModelFacetsJava11(mmc);
- facetFactory.refineProgrammingModel(progModel);
- progModel.init(new
ProgrammingModelInitFilterDefault());
- return progModel;
- })
+ .refiners(Can.of(__->facetFactory))
.build();
getConfiguration().getCore().getMetaModel().getValidator().setAllowLogicalTypeNameAsAlias(true);
facetFactory = new
DomainObjectAnnotationFacetFactory(getMetaModelContext());
@@ -701,12 +693,7 @@ extends FacetFactoryTestAbstract {
@Test
public void testValidationDomainServiceWithAliasesConfigured() {
metaModelContext = MetaModelContext_forTesting.builder()
- .programmingModelFactory(mmc -> {
- val progModel = new ProgrammingModelFacetsJava11(mmc);
- facetFactory.refineProgrammingModel(progModel);
- progModel.init(new
ProgrammingModelInitFilterDefault());
- return progModel;
- })
+ .refiners(Can.of(__->facetFactory))
.build();
getConfiguration().getCore().getMetaModel().getValidator().setAllowLogicalTypeNameAsAlias(true);
facetFactory = new
DomainObjectAnnotationFacetFactory(getMetaModelContext());
@@ -719,12 +706,7 @@ extends FacetFactoryTestAbstract {
@Test
public void testValidationDomainObjectWithAliasesDefault() {
metaModelContext = MetaModelContext_forTesting.builder()
- .programmingModelFactory(mmc -> {
- val progModel = new ProgrammingModelFacetsJava11(mmc);
- facetFactory.refineProgrammingModel(progModel);
- progModel.init(new
ProgrammingModelInitFilterDefault());
- return progModel;
- })
+ .refiners(Can.of(__->facetFactory))
.build();
facetFactory = new
DomainObjectAnnotationFacetFactory(getMetaModelContext());
((MetaModelContext_forTesting)
getMetaModelContext()).getProgrammingModel();//kicks off the programming model
factory
@@ -737,12 +719,7 @@ extends FacetFactoryTestAbstract {
@Test
public void testValidationDomainServiceWithAliasesDefault() {
metaModelContext = MetaModelContext_forTesting.builder()
- .programmingModelFactory(mmc -> {
- val progModel = new ProgrammingModelFacetsJava11(mmc);
- facetFactory.refineProgrammingModel(progModel);
- progModel.init(new
ProgrammingModelInitFilterDefault());
- return progModel;
- })
+ .refiners(Can.of(__->facetFactory))
.build();
facetFactory = new
DomainObjectAnnotationFacetFactory(getMetaModelContext());
((MetaModelContext_forTesting)
getMetaModelContext()).getProgrammingModel();//kicks off the programming model
factory
diff --git
a/persistence/jdo/metamodel/src/test/java/org/apache/causeway/persistence/jdo/metamodel/facets/object/version/JdoVersionAnnotationFacetFactoryTest_validate.java
b/persistence/jdo/metamodel/src/test/java/org/apache/causeway/persistence/jdo/metamodel/facets/object/version/JdoVersionAnnotationFacetFactoryTest_validate.java
index ad71abbdd9..674b3d881c 100644
---
a/persistence/jdo/metamodel/src/test/java/org/apache/causeway/persistence/jdo/metamodel/facets/object/version/JdoVersionAnnotationFacetFactoryTest_validate.java
+++
b/persistence/jdo/metamodel/src/test/java/org/apache/causeway/persistence/jdo/metamodel/facets/object/version/JdoVersionAnnotationFacetFactoryTest_validate.java
@@ -48,7 +48,7 @@ class JdoVersionAnnotationFacetFactoryTest_validate {
metaModelContext = MetaModelContext_forTesting
.builder()
- .programmingModelFactory(mmc->{
+ .programmingModelFactory((mmc, refiners)->{
val programmingModel = new ProgrammingModelAbstract(mmc) {};