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 f12917f8e7 CAUSEWAY-3676: towards removing builder being exposed by 
ServiceStructure
f12917f8e7 is described below

commit f12917f8e76849956dce96373dceb19f9e5a5880
Author: danhaywood <[email protected]>
AuthorDate: Fri Jan 19 17:41:02 2024 +0000

    CAUSEWAY-3676: towards removing builder being exposed by ServiceStructure
---
 .../viewer/source/GqlvServiceStructure.java        | 12 ++++----
 .../graphql/viewer/source/QueryFieldFactory.java   | 34 ++++++++++------------
 2 files changed, 22 insertions(+), 24 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 71f1f3d398..126f1a2817 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
@@ -24,7 +24,7 @@ public class GqlvServiceStructure {
     @Getter private final ObjectSpecification serviceSpec;
     @Getter private final GqlvTopLevelQueryStructure topLevelQueryStructure;
 
-    private GraphQLObjectType.Builder topLevelQueryField;
+    private GraphQLFieldDefinition topLevelQueryField;
 
 
     private String getLogicalTypeName() {
@@ -94,21 +94,23 @@ public class GqlvServiceStructure {
     /**
      * @see #getTopLevelQueryField()
      */
-    public GraphQLObjectType.Builder addTopLevelQueryField() {
+    public GraphQLFieldDefinition addTopLevelQueryField() {
         if (topLevelQueryField != null) {
             throw new IllegalStateException(String.format(
                     "queryField has already been added to top-level Query, for 
%s", getLogicalTypeName()));
         }
-        return topLevelQueryField = queryBuilder.field(newFieldDefinition()
+        topLevelQueryField = newFieldDefinition()
                 .name(_LTN.sanitized(serviceSpec))
                 .type(getGraphQlTypeBuilder())
-                .build());
+                .build();
+        queryBuilder.field(topLevelQueryField);
+        return topLevelQueryField;
     }
 
     /**
      * @see #addTopLevelQueryField()
      */
-    public GraphQLObjectType.Builder getTopLevelQueryField() {
+    public GraphQLFieldDefinition getTopLevelQueryField() {
         if (topLevelQueryField == null) {
             throw new IllegalStateException(String.format(
                     "queryField has not yet been added to top-level Query, for 
%s", getLogicalTypeName()));
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 12a2d48c0d..edb9c3b227 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
@@ -45,6 +45,7 @@ import graphql.schema.DataFetcher;
 import graphql.schema.DataFetchingEnvironment;
 import graphql.schema.FieldCoordinates;
 import graphql.schema.GraphQLCodeRegistry;
+import graphql.schema.GraphQLFieldDefinition;
 import graphql.schema.GraphQLObjectType;
 
 import lombok.RequiredArgsConstructor;
@@ -82,31 +83,26 @@ public class QueryFieldFactory {
                 .filter((final ObjectAction x) -> 
x.containsFacet(ActionSemanticsFacet.class))
                 .collect(Collectors.toList());
 
-        if (!objectActionList.isEmpty()) {
-
-            val serviceAsGraphQlType = 
gqlvServiceStructure.getGraphQlTypeBuilder();
+        if (objectActionList.isEmpty()) {
+            return;
+        }
 
-            objectActionList.forEach(gqlvServiceStructure::addAction);
+        val serviceAsGraphQlType = 
gqlvServiceStructure.getGraphQlTypeBuilder();
 
-            gqlvServiceStructure.buildObjectGqlType();
+        objectActionList.forEach(gqlvServiceStructure::addAction);
 
-            objectActionList
-            .forEach(objectAction -> {
-                addBehaviour(gqlvServiceStructure, objectAction, 
codeRegistryBuilder);
-            });
+        gqlvServiceStructure.buildObjectGqlType();
 
-            gqlvServiceStructure.addTopLevelQueryField();
+        objectActionList
+        .forEach(objectAction -> {
+            addBehaviour(gqlvServiceStructure, objectAction, 
codeRegistryBuilder);
+        });
 
-            String fieldName = newFieldDefinition()
-                    .name(_LTN.sanitized(serviceSpec))
-                    .type(serviceAsGraphQlType)
-                    .build().getName();
+        GraphQLFieldDefinition topLevelQueryField = 
gqlvServiceStructure.addTopLevelQueryField();
 
-            codeRegistryBuilder
-            .dataFetcher(
-                    FieldCoordinates.coordinates("Query", fieldName),
-                    (DataFetcher<Object>) environment -> service);
-        }
+        codeRegistryBuilder.dataFetcher(
+                FieldCoordinates.coordinates("Query", 
topLevelQueryField.getName()),
+                (DataFetcher<Object>) environment -> service);
     }
 
     private void addBehaviour(

Reply via email to