This is an automated email from the ASF dual-hosted git repository. danhaywood pushed a commit to branch CAUSEWAY-3676 in repository https://gitbox.apache.org/repos/asf/causeway.git
commit e6201b20e0abde81d5a8d33215badd5f6c436a24 Author: danhaywood <[email protected]> AuthorDate: Sat Jan 20 19:21:22 2024 +0000 CAUSEWAY-3676: rationalizes DomainObject and DomainService's addActions --- .../graphql/model/domain/GqlvDomainObject.java | 2 +- .../graphql/model/domain/GqlvDomainService.java | 22 +++++++++++++++++++--- .../integration/GraphQlSourceForCauseway.java | 2 +- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainObject.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainObject.java index 0e529038e9..65a5603c13 100644 --- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainObject.java +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainObject.java @@ -246,7 +246,7 @@ public class GqlvDomainObject implements GqlvActionHolder, GqlvPropertyHolder, G return mutators.buildMutatorsTypeIfAny(); } - public void addActionsAsFields() { + public void addActions() { objectSpecification.streamActions(ActionScope.PRODUCTION, MixedIn.INCLUDED) .forEach(this::addAction); diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainService.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainService.java index 1cc57e783e..350ec76dfa 100644 --- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainService.java +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainService.java @@ -12,11 +12,14 @@ import lombok.Getter; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; +import org.apache.causeway.core.metamodel.spec.ActionScope; import org.apache.causeway.core.metamodel.spec.ObjectSpecification; import org.apache.causeway.core.metamodel.spec.feature.MixedIn; import org.apache.causeway.core.metamodel.spec.feature.ObjectAction; +import org.apache.causeway.viewer.graphql.model.types._Constants; import org.apache.causeway.viewer.graphql.model.util._LTN; import org.apache.causeway.viewer.graphql.model.types.TypeMapper; @@ -93,19 +96,32 @@ public class GqlvDomainService implements GqlvActionHolder, GqlvMutatorsHolder { safeActions.add(new GqlvAction(this, objectAction, objectTypeBuilder, codeRegistryBuilder)); } + public Optional<GraphQLObjectType> buildMutatorsTypeIfAny() { + return mutators.buildMutatorsTypeIfAny(); + } /** * @return <code>true</code> if any (at least one) actions were added */ public boolean addActions() { - List<ObjectAction> objectActionList = getObjectSpecification().streamRuntimeActions(MixedIn.INCLUDED) - .map(ObjectAction.class::cast) - .collect(Collectors.toList()); + List<ObjectAction> objectActionList = objectSpecification.streamActions(ActionScope.PRODUCTION, MixedIn.INCLUDED) + .collect(Collectors.toList()); objectActionList.forEach(this::addAction); + Optional<GraphQLObjectType> mutatorsTypeIfAny = buildMutatorsTypeIfAny(); + mutatorsTypeIfAny.ifPresent(mutatorsType -> { + + GraphQLFieldDefinition gql_mutations = newFieldDefinition() + .name(_Constants.GQL_MUTATIONS_FIELDNAME) + .type(mutatorsType) + .build(); + objectTypeBuilder.field(gql_mutations); + + }); + return !objectActionList.isEmpty(); } } diff --git a/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/integration/GraphQlSourceForCauseway.java b/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/integration/GraphQlSourceForCauseway.java index a3dc60c3bb..8fe0391daf 100644 --- a/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/integration/GraphQlSourceForCauseway.java +++ b/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/integration/GraphQlSourceForCauseway.java @@ -192,7 +192,7 @@ public class GraphQlSourceForCauseway implements GraphQlSource { gqlvDomainObject.addPropertiesAsFields(); gqlvDomainObject.addCollectionsAsLists(); - gqlvDomainObject.addActionsAsFields(); + gqlvDomainObject.addActions(); // build gqlvDomainObject.registerTypesInto(graphQLTypeRegistry);
