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
The following commit(s) were added to refs/heads/CAUSEWAY-3676 by this push:
new dec65f622f CAUSEWAY-3676: towards moving addAction onto service
structure (2)
dec65f622f is described below
commit dec65f622f2b68a0d8c56abd11e5d794006bd7d0
Author: danhaywood <[email protected]>
AuthorDate: Fri Jan 19 17:36:52 2024 +0000
CAUSEWAY-3676: towards moving addAction onto service structure (2)
---
.../viewer/source/GqlvServiceStructure.java | 24 +++++++++++++++++
.../graphql/viewer/source/QueryFieldFactory.java | 31 ++--------------------
2 files changed, 26 insertions(+), 29 deletions(-)
diff --git
a/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/source/GqlvServiceStructure.java
b/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/source/GqlvServiceStructure.java
index be457e604a..71f1f3d398 100644
---
a/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/source/GqlvServiceStructure.java
+++
b/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/source/GqlvServiceStructure.java
@@ -1,11 +1,16 @@
package org.apache.causeway.viewer.graphql.viewer.source;
+import graphql.schema.GraphQLArgument;
import graphql.schema.GraphQLFieldDefinition;
import graphql.schema.GraphQLObjectType;
+import graphql.schema.GraphQLOutputType;
+
import lombok.Getter;
+import lombok.val;
import java.util.Map;
+import java.util.stream.Collectors;
import org.apache.causeway.core.metamodel.spec.ObjectSpecification;
import org.apache.causeway.core.metamodel.spec.feature.ObjectAction;
@@ -112,4 +117,23 @@ public class GqlvServiceStructure {
}
+ void addAction(final ObjectAction objectAction) {
+
+ val serviceAsGraphQlType = getGraphQlTypeBuilder();
+
+ String fieldName = objectAction.getId();
+
+ GraphQLFieldDefinition.Builder fieldBuilder = newFieldDefinition()
+ .name(fieldName)
+ .type((GraphQLOutputType)
TypeMapper.typeForObjectAction(objectAction));
+ if (objectAction.getParameters().isNotEmpty()) {
+ fieldBuilder.arguments(objectAction.getParameters().stream()
+ .map(objectActionParameter -> GraphQLArgument.newArgument()
+ .name(objectActionParameter.getId())
+
.type(TypeMapper.inputTypeFor(objectActionParameter))
+ .build())
+ .collect(Collectors.toList()));
+ }
+ serviceAsGraphQlType.field(fieldBuilder.build());
+ }
}
diff --git
a/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/source/QueryFieldFactory.java
b/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/source/QueryFieldFactory.java
index 4d24d5f299..12a2d48c0d 100644
---
a/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/source/QueryFieldFactory.java
+++
b/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/source/QueryFieldFactory.java
@@ -44,11 +44,9 @@ import
org.apache.causeway.core.metamodel.specloader.SpecificationLoader;
import graphql.schema.DataFetcher;
import graphql.schema.DataFetchingEnvironment;
import graphql.schema.FieldCoordinates;
-import graphql.schema.GraphQLArgument;
import graphql.schema.GraphQLCodeRegistry;
-import graphql.schema.GraphQLFieldDefinition;
import graphql.schema.GraphQLObjectType;
-import graphql.schema.GraphQLOutputType;
+
import lombok.RequiredArgsConstructor;
import lombok.val;
@@ -88,8 +86,7 @@ public class QueryFieldFactory {
val serviceAsGraphQlType =
gqlvServiceStructure.getGraphQlTypeBuilder();
- objectActionList
- .forEach(objectAction -> addAction(objectAction,
gqlvServiceStructure));
+ objectActionList.forEach(gqlvServiceStructure::addAction);
gqlvServiceStructure.buildObjectGqlType();
@@ -155,28 +152,4 @@ public class QueryFieldFactory {
});
}
- private static void addAction(
- final ObjectAction objectAction,
- final GqlvServiceStructure gqlvServiceStructure) {
-
- val serviceAsGraphQlType =
gqlvServiceStructure.getGraphQlTypeBuilder();
-
- QueryFieldFactory.objectAction = objectAction;
- String fieldName = objectAction.getId();
-
- GraphQLFieldDefinition.Builder builder = newFieldDefinition()
- .name(fieldName)
- .type((GraphQLOutputType)
TypeMapper.typeForObjectAction(objectAction));
- if (objectAction.getParameters().isNotEmpty()) {
- builder.arguments(objectAction.getParameters().stream()
- .map(objectActionParameter -> GraphQLArgument.newArgument()
- .name(objectActionParameter.getId())
-
.type(TypeMapper.inputTypeFor(objectActionParameter))
- .build())
- .collect(Collectors.toList()));
- }
- serviceAsGraphQlType
- .field(builder
- .build());
- }
}