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 923fd9bc22 CAUSEWAY-3676: moves responsibility for registering field 
into top-level query
923fd9bc22 is described below

commit 923fd9bc2287bb47ba7d3c9bd6d5547a0a95dba7
Author: danhaywood <[email protected]>
AuthorDate: Sat Jan 20 09:52:46 2024 +0000

    CAUSEWAY-3676: moves responsibility for registering field into top-level 
query
---
 .../viewer/source/GqlvServiceStructure.java        | 37 ++--------------------
 .../viewer/source/GqlvTopLevelQueryStructure.java  |  4 +--
 .../graphql/viewer/source/QueryFieldFactory.java   |  2 +-
 3 files changed, 6 insertions(+), 37 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 b9588152e5..2b363ce325 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
@@ -22,10 +22,6 @@ import static graphql.schema.GraphQLObjectType.newObject;
 public class GqlvServiceStructure {
 
     @Getter private final ObjectSpecification serviceSpec;
-    @Getter private final GqlvTopLevelQueryStructure topLevelQueryStructure;
-    private final SpecificationLoader specificationLoader;
-
-    private GraphQLFieldDefinition topLevelQueryField;
 
 
     private String getLogicalTypeName() {
@@ -37,22 +33,14 @@ public class GqlvServiceStructure {
     }
 
     private final GraphQLObjectType.Builder gqlObjectTypeBuilder;
-    private final GraphQLObjectType.Builder queryBuilder;
 
     private GraphQLObjectType gqlObjectType;
 
-    public GqlvServiceStructure(
-            final ObjectSpecification serviceSpec,
-            final GqlvTopLevelQueryStructure topLevelQueryStructure,
-            final SpecificationLoader specificationLoader
+    public GqlvServiceStructure(final ObjectSpecification serviceSpec
     ) {
         this.serviceSpec = serviceSpec;
-        this.topLevelQueryStructure = topLevelQueryStructure;
 
         this.gqlObjectTypeBuilder = 
newObject().name(_LTN.sanitized(serviceSpec));
-
-        this.queryBuilder = topLevelQueryStructure.getQueryBuilder();
-        this.specificationLoader = specificationLoader;
     }
 
 
@@ -90,30 +78,11 @@ public class GqlvServiceStructure {
         return gqlObjectType;
     }
 
-    /**
-     * @see #getTopLevelQueryField()
-     */
-    public GraphQLFieldDefinition buildTopLevelQueryField() {
-        if (topLevelQueryField != null) {
-            throw new IllegalStateException(String.format(
-                    "queryField has already been added to top-level Query, for 
%s", getLogicalTypeName()));
-        }
-        topLevelQueryField = newFieldDefinition()
+    public GraphQLFieldDefinition createTopLevelQueryField() {
+        return newFieldDefinition()
                 .name(_LTN.sanitized(serviceSpec))
                 .type(gqlObjectTypeBuilder)
                 .build();
-        return topLevelQueryField;
-    }
-
-    /**
-     * @see #buildTopLevelQueryField()
-     */
-    public GraphQLFieldDefinition getTopLevelQueryField() {
-        if (topLevelQueryField == null) {
-            throw new IllegalStateException(String.format(
-                    "queryField has not yet been added to top-level Query, for 
%s", getLogicalTypeName()));
-        }
-        return topLevelQueryField;
     }
 
 
diff --git 
a/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/source/GqlvTopLevelQueryStructure.java
 
b/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/source/GqlvTopLevelQueryStructure.java
index 0e88c15c9c..e813aa5a7b 100644
--- 
a/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/source/GqlvTopLevelQueryStructure.java
+++ 
b/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/source/GqlvTopLevelQueryStructure.java
@@ -59,8 +59,8 @@ public class GqlvTopLevelQueryStructure {
             final GqlvServiceBehaviour serviceBehaviour,
             final GraphQLCodeRegistry.Builder codeRegistryBuilder) {
 
-        GraphQLFieldDefinition topLevelQueryField = 
serviceStructure.buildTopLevelQueryField();
-        queryBuilder.field(topLevelQueryField);
+        GraphQLFieldDefinition topLevelQueryField = 
serviceStructure.createTopLevelQueryField();
+        queryBuilder.field(serviceStructure.createTopLevelQueryField());
 
         codeRegistryBuilder.dataFetcher(
                 // TODO: it would be nice to make these typesafe...
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 2cc1a8aac5..90a46133c1 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
@@ -64,7 +64,7 @@ public class QueryFieldFactory {
             final GqlvTopLevelQueryStructure topLevelQueryStructure,
             final GraphQLCodeRegistry.Builder codeRegistryBuilder) {
 
-        val serviceStructure = new GqlvServiceStructure(serviceSpec, 
topLevelQueryStructure, specificationLoader);
+        val serviceStructure = new GqlvServiceStructure(serviceSpec);
 
         List<ObjectAction> objectActionList = 
serviceSpec.streamRuntimeActions(MixedIn.INCLUDED)
                 .map(ObjectAction.class::cast)

Reply via email to