This is an automated email from the ASF dual-hosted git repository. danhaywood pushed a commit to branch CAUSEWAY-3326 in repository https://gitbox.apache.org/repos/asf/causeway.git
commit 62691cb2338d4a99c71d6b666ce86425866af228 Author: danhaywood <[email protected]> AuthorDate: Fri Mar 15 17:23:09 2024 +0000 CAUSEWAY-3326: injects into Specifications if required --- .../MustSatisfySpecificationFacetAbstract.java | 14 ++++++-------- .../param/parameter/ParameterAnnotationFacetFactory.java | 2 +- ...ustSatisfySpecificationFacetForParameterAnnotation.java | 6 ++++-- .../property/PropertyAnnotationFacetFactory.java | 2 +- ...MustSatisfySpecificationFacetForPropertyAnnotation.java | 6 ++++-- 5 files changed, 16 insertions(+), 14 deletions(-) diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/objectvalue/mustsatisfyspec/MustSatisfySpecificationFacetAbstract.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/objectvalue/mustsatisfyspec/MustSatisfySpecificationFacetAbstract.java index 664891eb3b..3ae28f6f4e 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/objectvalue/mustsatisfyspec/MustSatisfySpecificationFacetAbstract.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/objectvalue/mustsatisfyspec/MustSatisfySpecificationFacetAbstract.java @@ -26,6 +26,7 @@ import java.util.stream.Collectors; import org.apache.causeway.applib.services.factory.FactoryService; import org.apache.causeway.applib.services.i18n.TranslationContext; import org.apache.causeway.applib.services.i18n.TranslationService; +import org.apache.causeway.applib.services.inject.ServiceInjector; import org.apache.causeway.applib.spec.Specification; import org.apache.causeway.commons.collections.Can; import org.apache.causeway.core.metamodel.facetapi.Facet; @@ -85,9 +86,10 @@ implements MustSatisfySpecificationFacet { */ protected static Can<Specification> toSpecifications( final FactoryService factoryService, - final Class<? extends Specification>[] classes) { + ServiceInjector serviceInjector, final Class<? extends Specification>[] classes) { return Arrays.stream(classes) .map(factoryService::getOrCreate) + .peek(serviceInjector::injectServicesInto) .collect(Can.toCan()); } @@ -103,13 +105,9 @@ implements MustSatisfySpecificationFacet { @Override public boolean semanticEquals(final @NonNull Facet other) { - return other instanceof MustSatisfySpecificationFacetAbstract - ? Objects.equals( - this - .specifications.map(Specification::getClass), - ((MustSatisfySpecificationFacetAbstract)other) - .specifications.map(Specification::getClass)) - : false; + return other instanceof MustSatisfySpecificationFacetAbstract && + Objects.equals( this.specifications.map(Specification::getClass), + ((MustSatisfySpecificationFacetAbstract) other).specifications.map(Specification::getClass)); } diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/param/parameter/ParameterAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/param/parameter/ParameterAnnotationFacetFactory.java index d224e6f1f3..6c56b61151 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/param/parameter/ParameterAnnotationFacetFactory.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/param/parameter/ParameterAnnotationFacetFactory.java @@ -83,7 +83,7 @@ extends FacetFactoryAbstract { addFacetIfPresent( MustSatisfySpecificationFacetForParameterAnnotation - .create(parameterIfAny, holder, getFactoryService())); + .create(parameterIfAny, holder, getFactoryService(), getServiceInjector())); } void processParamsRegEx(final ProcessParameterContext processParameterContext) { diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/param/parameter/mustsatisfy/MustSatisfySpecificationFacetForParameterAnnotation.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/param/parameter/mustsatisfy/MustSatisfySpecificationFacetForParameterAnnotation.java index 82e4471276..6ebd35eb28 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/param/parameter/mustsatisfy/MustSatisfySpecificationFacetForParameterAnnotation.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/param/parameter/mustsatisfy/MustSatisfySpecificationFacetForParameterAnnotation.java @@ -22,6 +22,7 @@ import java.util.Optional; import org.apache.causeway.applib.annotation.Parameter; import org.apache.causeway.applib.services.factory.FactoryService; +import org.apache.causeway.applib.services.inject.ServiceInjector; import org.apache.causeway.applib.spec.Specification; import org.apache.causeway.commons.collections.Can; import org.apache.causeway.core.metamodel.facetapi.FacetHolder; @@ -36,11 +37,12 @@ extends MustSatisfySpecificationFacetAbstract { public static Optional<MustSatisfySpecificationFacet> create( final Optional<Parameter> parameterIfAny, final FacetHolder holder, - final FactoryService factoryService) { + final FactoryService factoryService, + final ServiceInjector serviceInjector) { val specifications = parameterIfAny .map(Parameter::mustSatisfy) - .map(classes -> toSpecifications(factoryService, classes)) + .map(classes -> toSpecifications(factoryService, serviceInjector, classes)) .orElseGet(Can::empty); return specifications.isEmpty() diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java index a83aace192..9b681919f5 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java @@ -256,7 +256,7 @@ extends FacetFactoryAbstract { // search for @Property(mustSatisfy=...) addFacetIfPresent( MustSatisfySpecificationFacetForPropertyAnnotation - .create(propertyIfAny, holder, getFactoryService())); + .create(propertyIfAny, holder, getFactoryService(), getServiceInjector())); } void processEntityPropertyChangePublishing(final ProcessMethodContext processMethodContext, final Optional<Property> propertyIfAny) { diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/properties/property/mustsatisfy/MustSatisfySpecificationFacetForPropertyAnnotation.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/properties/property/mustsatisfy/MustSatisfySpecificationFacetForPropertyAnnotation.java index 8630433753..f3be999ce6 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/properties/property/mustsatisfy/MustSatisfySpecificationFacetForPropertyAnnotation.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/properties/property/mustsatisfy/MustSatisfySpecificationFacetForPropertyAnnotation.java @@ -22,6 +22,7 @@ import java.util.Optional; import org.apache.causeway.applib.annotation.Property; import org.apache.causeway.applib.services.factory.FactoryService; +import org.apache.causeway.applib.services.inject.ServiceInjector; import org.apache.causeway.applib.spec.Specification; import org.apache.causeway.commons.collections.Can; import org.apache.causeway.core.metamodel.facetapi.FacetHolder; @@ -36,11 +37,12 @@ extends MustSatisfySpecificationFacetAbstract { public static Optional<MustSatisfySpecificationFacet> create( final Optional<Property> propertyIfAny, final FacetHolder holder, - final FactoryService factoryService) { + final FactoryService factoryService, + final ServiceInjector serviceInjector) { val specifications = propertyIfAny .map(Property::mustSatisfy) - .map(classes -> toSpecifications(factoryService, classes)) + .map(classes -> toSpecifications(factoryService, serviceInjector, classes)) .orElseGet(Can::empty); return specifications.isEmpty()
