You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@causeway.apache.org by da...@apache.org on 2024/01/21 12:49:45 UTC
(causeway) 16/18: CAUSEWAY-3676: rationalizes DomainObject and DomainService's addActions
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 <da...@haywood-associates.co.uk>
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);