You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@causeway.apache.org by ah...@apache.org on 2023/02/05 22:42:26 UTC

[causeway] 01/01: CAUSEWAY-3348: [Programming Model] Support for Action Parameters as a Tuple using Java Records (Mixins only)

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch spring6
in repository https://gitbox.apache.org/repos/asf/causeway.git

commit b9ee5fcc5af31a76501c70a69973927822047b82
Merge: fa1b6a488f 984fcb2a65
Author: Andi Huber <ah...@apache.org>
AuthorDate: Sun Feb 5 23:42:18 2023 +0100

    CAUSEWAY-3348: [Programming Model] Support for Action Parameters as a
    Tuple using Java Records (Mixins only)

 .../workflows/ci-build-artifacts-no-push-maven.yml |   3 +
 .github/workflows/ci-build-site-no-push.yml        |   4 +-
 .../applib/annotation/ParameterAsTuple.java        |  50 +++++
 .../internal/reflection/_MethodFacades.java        | 227 +++++++++++++++++++++
 .../commons/internal/reflection/_Reflect.java      |  36 ++++
 .../progmodel/ProgrammingModelConstants.java       |  33 +--
 .../core/metamodel/commons/CanonicalInvoker.java   |   6 +
 .../metamodel/execution/MemberExecutorService.java |   4 +-
 .../core/metamodel/facetapi/FeatureType.java       |  19 +-
 .../core/metamodel/facets/FacetFactory.java        |  31 ++-
 .../core/metamodel/facets/FacetedMethod.java       |  33 +--
 .../metamodel/facets/FacetedMethodParameter.java   |   9 +-
 .../core/metamodel/facets/HasImperativeAspect.java |   9 +-
 .../core/metamodel/facets/ImperativeAspect.java    |  23 ++-
 .../core/metamodel/facets/ImperativeFacet.java     |  51 +++--
 .../facets/actcoll/typeof/TypeOfFacet.java         |  10 +-
 .../action/ActionAnnotationFacetFactory.java       |   2 +-
 ...ctionInvocationFacetForDomainEventAbstract.java |   8 +-
 ...ionFacetForDomainEventFromActionAnnotation.java |   5 +-
 ...onInvocationFacetForDomainEventFromDefault.java |   5 +-
 ...viceMenuFacetFromDomainServiceFacetFactory.java |   6 +-
 .../ActionParameterValidationFacetViaMethod.java   |  16 +-
 .../method/ActionValidationFacetViaMethod.java     |  11 +-
 .../imperative/HasImperativeTextFacetAbstract.java |  17 +-
 .../CollectionAccessorFacetViaAccessor.java        |   9 +-
 .../CollectionAccessorFacetViaAccessorFactory.java |   2 +-
 ...assFacetOnActionFromConfiguredRegexFactory.java |   5 +-
 .../method/DisableForContextFacetViaMethod.java    |   9 +-
 .../method/HideForContextFacetViaMethod.java       |   9 +-
 .../object/callbacks/CallbackFacetAbstract.java    |  17 +-
 .../object/callbacks/CallbackFacetFactory.java     |  25 +--
 .../callbacks/CreatedCallbackFacetAbstract.java    |   5 +-
 .../callbacks/CreatedCallbackFacetViaMethod.java   |   3 +-
 .../callbacks/LoadedCallbackFacetAbstract.java     |   5 +-
 .../callbacks/LoadedCallbackFacetViaMethod.java    |   5 +-
 .../callbacks/PersistedCallbackFacetAbstract.java  |   5 +-
 .../callbacks/PersistedCallbackFacetViaMethod.java |   5 +-
 .../callbacks/PersistingCallbackFacetAbstract.java |   5 +-
 .../PersistingCallbackFacetViaMethod.java          |   5 +-
 .../callbacks/RemovingCallbackFacetAbstract.java   |   5 +-
 .../callbacks/RemovingCallbackFacetViaMethod.java  |   5 +-
 .../callbacks/UpdatedCallbackFacetAbstract.java    |   5 +-
 .../callbacks/UpdatedCallbackFacetViaMethod.java   |   5 +-
 .../callbacks/UpdatingCallbackFacetAbstract.java   |   5 +-
 .../callbacks/UpdatingCallbackFacetViaMethod.java  |   5 +-
 .../method/CssClassFacetViaCssClassMethod.java     |   2 +-
 .../method/DisabledObjectFacetViaMethod.java       |   2 +-
 .../hidden/method/HiddenObjectFacetViaMethod.java  |   2 +-
 .../icon/method/IconFacetViaIconNameMethod.java    |   2 +-
 .../object/layout/LayoutFacetViaLayoutMethod.java  |   2 +-
 .../annotation/TitleFacetViaTitleAnnotation.java   |   8 +-
 .../methods/TitleFacetFromToStringMethod.java      |   2 +-
 .../title/methods/TitleFacetViaTitleMethod.java    |   2 +-
 .../facets/object/value/CompositeValueUpdater.java |   7 +-
 .../ActionParameterAutoCompleteFacetViaMethod.java |  16 +-
 .../ActionParameterChoicesFacetViaMethod.java      |  11 +-
 .../ActionParameterDefaultsFacetViaMethod.java     |  12 +-
 .../ActionParameterDisabledFacetViaMethod.java     |  12 +-
 .../ActionParameterHiddenFacetViaMethod.java       |  12 +-
 .../ParameterNameFacetFactoryUsingReflection.java  |   3 +-
 .../parameter/ParameterAnnotationFacetFactory.java |   2 +-
 .../ActionParameterValidationFacetViaMethod.java   |  19 +-
 .../accessor/PropertyAccessorFacetViaAccessor.java |   9 +-
 .../PropertyAccessorFacetViaAccessorFactory.java   |   2 +-
 .../method/PropertyAutoCompleteFacetMethod.java    |   9 +-
 .../method/PropertyChoicesFacetViaMethod.java      |  10 +-
 .../method/PropertyDefaultFacetViaMethod.java      |   9 +-
 .../property/PropertyAnnotationFacetFactory.java   |   7 +-
 .../MandatoryFacetForPropertyAnnotation.java       |   5 +-
 ...acetInvertedByNullableAnnotationOnProperty.java |   4 +-
 .../update/PropertySetterFacetFactory.java         |   4 +-
 .../clear/PropertyClearFacetViaClearMethod.java    |   9 +-
 .../clear/PropertyClearFacetViaSetterMethod.java   |  10 +-
 ...PropertyInitializationFacetViaSetterMethod.java |   9 +-
 .../modify/PropertySetterFacetViaSetterMethod.java |   9 +-
 .../method/PropertyValidateFacetViaMethod.java     |  21 +-
 ...tionEnforcesMetamodelContributionValidator.java |   4 +
 .../core/metamodel/methods/MethodFinderPAT.java    |   3 +-
 .../core/metamodel/object/MmInvokeUtil.java        |  45 +++-
 .../TweakDomainEventsForMixinPostProcessor.java    |   8 +-
 .../core/metamodel/spec/TypeOfAnyCardinality.java  |  48 +++++
 .../specloader/facetprocessor/FacetProcessor.java  |   5 +-
 .../specloader/specimpl/FacetedMethodsBuilder.java |  41 ++--
 .../specloader/specimpl/ObjectActionDefault.java   |   7 +-
 .../specloader/specimpl/ObjectActionMixedIn.java   |   5 +-
 .../specimpl/ObjectActionParameterAbstract.java    |   2 +-
 .../specimpl/ObjectSpecificationAbstract.java      |   9 +
 .../specimpl/OneToManyAssociationDefault.java      |   8 +-
 .../specimpl/OneToManyAssociationMixedIn.java      |   5 +-
 .../specimpl/OneToOneAssociationDefault.java       |   8 +-
 .../specimpl/OneToOneAssociationMixedIn.java       |   5 +-
 .../specimpl/_MethodFacadeAutodetect.java          |  79 +++++++
 .../specimpl/dflt/ObjectSpecificationDefault.java  |  10 +-
 .../facetapi/FeatureTypeTest_identifierFor.java    |   5 +-
 .../metamodel/facets/AbstractFacetFactoryTest.java |   4 +-
 .../actions/ActionMethodsFacetFactoryTest.java     |   7 +-
 ...nnotationFacetFactoryTest_ActionInvocation.java |   6 +-
 ...MenuFacetFromDomainServiceFacetFactoryTest.java |   8 +-
 .../callback/CallbackFacetFactoryTestAbstract.java |   4 +-
 .../facets/object/mixin/MixinIntendedAs.java       |   5 +-
 .../ObjectSupportFacetFactoryTestAbstract.java     |   9 +-
 ...cetForParameterLayoutAnnotationFactoryTest.java |   2 +-
 ...cetForParameterLayoutAnnotationFactoryTest.java |   2 +-
 .../facets/param/name/ParameterNameFacetTest.java  |   4 +-
 .../ParameterAnnotationFacetFactoryTest.java       |  20 +-
 ...lableAnnotationOnParameterFacetFactoryTest.java |   8 +-
 ...RegExAnnotationOnParameterFacetFactoryTest.java |   4 +-
 .../executor/MemberExecutorServiceDefault.java     |  12 +-
 .../testdomain/interact/NewParameterModelTest.java |  17 +-
 .../interaction/InteractionNpmDemo_patEnabled.java |  71 +++++++
 110 files changed, 1050 insertions(+), 425 deletions(-)

diff --cc core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/notinservicemenu/derived/NotInServiceMenuFacetFromDomainServiceFacetFactory.java
index 2d6b1aa519,ca61fa77cc..22f8c1e604
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/notinservicemenu/derived/NotInServiceMenuFacetFromDomainServiceFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/notinservicemenu/derived/NotInServiceMenuFacetFromDomainServiceFacetFactory.java
@@@ -18,9 -18,7 +18,7 @@@
   */
  package org.apache.causeway.core.metamodel.facets.actions.notinservicemenu.derived;
  
- import java.lang.reflect.Method;
- 
 -import javax.inject.Inject;
 +import jakarta.inject.Inject;
  
  import org.apache.causeway.applib.annotation.NatureOfService;
  import org.apache.causeway.core.metamodel.context.MetaModelContext;
diff --cc core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/callbacks/CallbackFacetFactory.java
index 2dcbea2ac3,5bdb2f7e2f..a473e59544
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/callbacks/CallbackFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/callbacks/CallbackFacetFactory.java
@@@ -21,10 -21,11 +21,11 @@@ package org.apache.causeway.core.metamo
  import java.util.function.BiFunction;
  import java.util.stream.Stream;
  
 -import javax.inject.Inject;
 +import jakarta.inject.Inject;
  
  import org.apache.causeway.commons.collections.Can;
+ import org.apache.causeway.commons.internal.reflection._MethodFacades;
+ import org.apache.causeway.commons.internal.reflection._MethodFacades.MethodFacade;
  import org.apache.causeway.core.config.progmodel.ProgrammingModelConstants.CallbackMethod;
  import org.apache.causeway.core.metamodel.context.MetaModelContext;
  import org.apache.causeway.core.metamodel.facetapi.FacetHolder;
diff --cc core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/properties/update/PropertySetterFacetFactory.java
index 16e0ef6171,de172fd507..f617867e96
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/properties/update/PropertySetterFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/properties/update/PropertySetterFacetFactory.java
@@@ -18,9 -18,7 +18,7 @@@
   */
  package org.apache.causeway.core.metamodel.facets.properties.update;
  
- import java.lang.reflect.Method;
- 
 -import javax.inject.Inject;
 +import jakarta.inject.Inject;
  
  import org.apache.causeway.commons.collections.Can;
  import org.apache.causeway.core.config.progmodel.ProgrammingModelConstants.AccessorPrefix;