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 1c173b110afc31f0f438d01ba77035cf829848e3
Author: danhaywood <[email protected]>
AuthorDate: Sun Feb 11 12:58:17 2024 +0000

    CAUSEWAY-3676: further refactors
---
 .../integration/GraphQlSourceForCauseway.java      |  6 +---
 .../graphql/viewer/toplevel/GqlvTopLevelQuery.java | 40 ++++++----------------
 2 files changed, 12 insertions(+), 34 deletions(-)

diff --git 
a/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/integration/GraphQlSourceForCauseway.java
 
b/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/integration/GraphQlSourceForCauseway.java
index 222c7707b3..e2d6773dc3 100644
--- 
a/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/integration/GraphQlSourceForCauseway.java
+++ 
b/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/integration/GraphQlSourceForCauseway.java
@@ -129,12 +129,8 @@ public class GraphQlSourceForCauseway implements 
GraphQlSource {
         });
 
         // top-level query type and (dependent on configuration) the top-level 
mutation type
-        val topLevelQuery = new GqlvTopLevelQuery(context);
+        val topLevelQuery = new GqlvTopLevelQuery(context, domainObjects);
 
-        // add lookup to top-level query
-        domainObjects.forEach(topLevelQuery::addLookupFor);
-
-        topLevelQuery.buildQueryType();
 
         val topLevelMutation =
                 causewayConfiguration.getViewer().getGraphql().getApiVariant() 
== CausewayConfiguration.Viewer.Graphql.ApiVariant.QUERY_AND_MUTATIONS ?
diff --git 
a/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/toplevel/GqlvTopLevelQuery.java
 
b/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/toplevel/GqlvTopLevelQuery.java
index dcdedbb5ff..e8a4c3487b 100644
--- 
a/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/toplevel/GqlvTopLevelQuery.java
+++ 
b/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/toplevel/GqlvTopLevelQuery.java
@@ -1,9 +1,8 @@
 package org.apache.causeway.viewer.graphql.viewer.toplevel;
 
 import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.Map;
 
 import graphql.schema.DataFetcher;
 import graphql.schema.DataFetchingEnvironment;
@@ -15,8 +14,6 @@ import graphql.schema.GraphQLObjectType;
 import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition;
 import static graphql.schema.GraphQLObjectType.newObject;
 
-import org.apache.causeway.applib.id.HasLogicalType;
-import org.apache.causeway.commons.functional.Either;
 import org.apache.causeway.core.metamodel.spec.ObjectSpecification;
 import org.apache.causeway.viewer.graphql.model.context.Context;
 import org.apache.causeway.viewer.graphql.model.domain.GqlvAction;
@@ -29,21 +26,20 @@ import lombok.val;
 
 public class GqlvTopLevelQuery implements GqlvDomainService.Holder {
 
-    @Getter final GraphQLObjectType.Builder queryBuilder;
+    final GraphQLObjectType.Builder objectTypeBuilder;
 
     private final List<GqlvDomainService> domainServices = new ArrayList<>();
     private final Context context;
 
 
-    /**
-     * Built using {@link #buildQueryType()}
-     */
-    private GraphQLObjectType queryType;
+    @Getter private final GraphQLObjectType queryType;
 
 
-    public GqlvTopLevelQuery(Context context) {
+    public GqlvTopLevelQuery(
+            final Context context,
+            final Map<ObjectSpecification, GqlvDomainObject> domainObjects) {
         this.context = context;
-        queryBuilder = newObject().name("Query");
+        this.objectTypeBuilder = newObject().name("Query");
 
 
         // add services to top-level query
@@ -69,27 +65,13 @@ public class GqlvTopLevelQuery implements 
GqlvDomainService.Holder {
                     break;
             }
         });
-    }
-
 
+        // add lookup to top-level query
+        domainObjects.forEach(this::addLookupFor);
 
-    public GraphQLObjectType buildQueryType() {
-        if (queryType != null) {
-            throw new IllegalStateException("QueryType has already been 
built");
-        }
-        return queryType = queryBuilder.build();
+        queryType = objectTypeBuilder.build();
     }
 
-    /**
-     *
-     * @see #buildQueryType()
-     */
-    public GraphQLObjectType getQueryType() {
-        if (queryType == null) {
-            throw new IllegalStateException("QueryType has not yet been 
built");
-        }
-        return queryType;
-    }
 
     public void addDomainService(ObjectSpecification objectSpec, Object 
servicePojo, Context context) {
         domainServices.add(new GqlvDomainService(this, objectSpec, 
servicePojo, context));
@@ -103,7 +85,7 @@ public class GqlvTopLevelQuery implements 
GqlvDomainService.Holder {
 
     @Override
     public GraphQLFieldDefinition addField(GraphQLFieldDefinition field) {
-        queryBuilder.field(field);
+        objectTypeBuilder.field(field);
         return field;
     }
 

Reply via email to