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());
-    }
 }

Reply via email to