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 e41b1ef10518530cabcc21c82ab84bfc16bb6172
Author: danhaywood <[email protected]>
AuthorDate: Mon Feb 12 19:02:34 2024 +0000

    CAUSEWAY-3676: makes top level also inherit from GqlvAbstractCustom
---
 .../graphql/model/domain/GqlvAbstractCustom.java   |  6 ++--
 .../viewer/graphql/model/domain/GqlvAction.java    |  2 +-
 .../graphql/model/domain/GqlvActionParam.java      |  2 +-
 .../graphql/model/domain/GqlvActionParams.java     |  2 +-
 .../graphql/model/domain/GqlvCollection.java       |  2 +-
 .../graphql/model/domain/GqlvDomainService.java    |  4 +--
 .../viewer/graphql/model/domain/GqlvMeta.java      |  4 +--
 .../viewer/graphql/model/domain/GqlvProperty.java  |  2 +-
 .../graphql/model/domain/GqlvScenarioGiven.java    |  2 +-
 .../model/toplevel/GqlvTopLevelMutation.java       | 33 +++++--------------
 .../graphql/model/toplevel/GqlvTopLevelQuery.java  | 38 +++++++---------------
 .../integration/GraphQlSourceForCauseway.java      |  4 +--
 12 files changed, 32 insertions(+), 69 deletions(-)

diff --git 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvAbstractCustom.java
 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvAbstractCustom.java
index aadcb9b39f..1c4fe194ca 100644
--- 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvAbstractCustom.java
+++ 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvAbstractCustom.java
@@ -57,10 +57,10 @@ public abstract class GqlvAbstractCustom extends 
GqlvAbstract implements GqlvHol
         return childField;
     }
 
-    protected GraphQLFieldDefinition buildObjectTypeAndSetFieldName(String 
fieldName) {
+    protected void buildObjectTypeAndField(String fieldName) {
         val graphQLObjectType = buildObjectType();
 
-        return setField(newFieldDefinition()
+        setField(newFieldDefinition()
                 .name(fieldName)
                 .type(graphQLObjectType)
                 .build());
@@ -70,10 +70,8 @@ public abstract class GqlvAbstractCustom extends 
GqlvAbstract implements GqlvHol
         this.gqlObjectType = gqlObjectTypeBuilder.build();
         
context.graphQLTypeRegistry.addTypeIfNotAlreadyPresent(this.gqlObjectType);
         return this.gqlObjectType;
-
     }
 
-
     public final FieldCoordinates coordinatesFor(final GraphQLFieldDefinition 
field) {
         return FieldCoordinates.coordinates(gqlObjectType, field);
     }
diff --git 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvAction.java
 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvAction.java
index b78cd294a0..1839ea2f5b 100644
--- 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvAction.java
+++ 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvAction.java
@@ -102,7 +102,7 @@ public class GqlvAction
             this.params = null;
         }
 
-        buildObjectTypeAndSetFieldName(objectAction.getId());
+        buildObjectTypeAndField(objectAction.getId());
     }
 
     public Can<ManagedObject> argumentManagedObjectsFor(
diff --git 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParam.java
 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParam.java
index f13361e2ed..6a0cc01fc5 100644
--- 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParam.java
+++ 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParam.java
@@ -112,7 +112,7 @@ public class GqlvActionParam
         this.validate = new GqlvActionParamValidate(this, context);
         addChildField(validate.getField());
 
-        buildObjectTypeAndSetFieldName(objectActionParameter.getId());
+        buildObjectTypeAndField(objectActionParameter.getId());
     }
 
     @Override
diff --git 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParams.java
 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParams.java
index 1ae8ed6f8d..51cf89b4ab 100644
--- 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParams.java
+++ 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParams.java
@@ -64,7 +64,7 @@ public class GqlvActionParams
         });
 
         if (hasParams()) {
-            buildObjectTypeAndSetFieldName("params");
+            buildObjectTypeAndField("params");
         }
     }
 
diff --git 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvCollection.java
 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvCollection.java
index a3071660c8..174997254c 100644
--- 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvCollection.java
+++ 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvCollection.java
@@ -51,7 +51,7 @@ public class GqlvCollection
         this.get = new GqlvCollectionGet(this, context);
         addChildField(get.getField());
 
-        buildObjectTypeAndSetFieldName(oneToManyAssociation.getId());
+        buildObjectTypeAndField(oneToManyAssociation.getId());
     }
 
     @Override
diff --git 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainService.java
 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainService.java
index ff739163ad..b01a6d597d 100644
--- 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainService.java
+++ 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainService.java
@@ -22,9 +22,7 @@ import java.util.LinkedHashMap;
 import java.util.Map;
 
 import graphql.schema.DataFetcher;
-import graphql.schema.FieldCoordinates;
 import graphql.schema.GraphQLFieldDefinition;
-import graphql.schema.GraphQLObjectType;
 
 import static graphql.schema.FieldCoordinates.coordinates;
 import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition;
@@ -68,7 +66,7 @@ public class GqlvDomainService
 
         addActions();
         if (hasActions()) {
-            
buildObjectTypeAndSetFieldName(TypeNames.objectTypeNameFor(this.objectSpecification));
+            
buildObjectTypeAndField(TypeNames.objectTypeNameFor(this.objectSpecification));
         }
     }
 
diff --git 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMeta.java
 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMeta.java
index e116fc3183..695a3d9c58 100644
--- 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMeta.java
+++ 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMeta.java
@@ -24,7 +24,6 @@ import java.util.Optional;
 import graphql.Scalars;
 import graphql.schema.DataFetcher;
 import graphql.schema.GraphQLFieldDefinition;
-import graphql.schema.GraphQLObjectType;
 
 import static graphql.schema.FieldCoordinates.coordinates;
 import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition;
@@ -39,7 +38,6 @@ import 
org.apache.causeway.core.metamodel.objectmanager.ObjectManager;
 import org.apache.causeway.viewer.graphql.model.context.Context;
 import 
org.apache.causeway.viewer.graphql.model.mmproviders.ObjectSpecificationProvider;
 
-import lombok.Getter;
 import lombok.val;
 
 public class GqlvMeta extends GqlvAbstractCustom {
@@ -66,7 +64,7 @@ public class GqlvMeta extends GqlvAbstractCustom {
         }
 
         val fieldName = 
context.causewayConfiguration.getViewer().getGraphql().getMetaData().getFieldName();
-        buildObjectTypeAndSetFieldName(fieldName);
+        buildObjectTypeAndField(fieldName);
     }
 
 
diff --git 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvProperty.java
 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvProperty.java
index 57713a604b..dec22de65d 100644
--- 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvProperty.java
+++ 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvProperty.java
@@ -103,7 +103,7 @@ public class GqlvProperty
         }
 
 
-        buildObjectTypeAndSetFieldName(oneToOneAssociation.getId());
+        buildObjectTypeAndField(oneToOneAssociation.getId());
     }
 
     public void addGqlArgument(
diff --git 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvScenarioGiven.java
 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvScenarioGiven.java
index 60790e4a08..f054030c97 100644
--- 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvScenarioGiven.java
+++ 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvScenarioGiven.java
@@ -57,7 +57,7 @@ public class GqlvScenarioGiven
         }
 
 
-        buildObjectTypeAndSetFieldName("Given");
+        buildObjectTypeAndField("Given");
     }
 
 
diff --git 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/toplevel/GqlvTopLevelMutation.java
 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/toplevel/GqlvTopLevelMutation.java
index bb0f12c079..365f327096 100644
--- 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/toplevel/GqlvTopLevelMutation.java
+++ 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/toplevel/GqlvTopLevelMutation.java
@@ -3,8 +3,6 @@ package org.apache.causeway.viewer.graphql.model.toplevel;
 import java.util.ArrayList;
 import java.util.List;
 
-import graphql.schema.FieldCoordinates;
-import graphql.schema.GraphQLFieldDefinition;
 import graphql.schema.GraphQLObjectType;
 
 import static graphql.schema.GraphQLObjectType.newObject;
@@ -15,28 +13,21 @@ import 
org.apache.causeway.core.metamodel.spec.feature.MixedIn;
 import org.apache.causeway.core.metamodel.spec.feature.ObjectAction;
 import org.apache.causeway.core.metamodel.spec.feature.OneToOneAssociation;
 import org.apache.causeway.viewer.graphql.model.context.Context;
+import org.apache.causeway.viewer.graphql.model.domain.GqlvAbstractCustom;
 import org.apache.causeway.viewer.graphql.model.domain.GqlvMutationForAction;
 import org.apache.causeway.viewer.graphql.model.domain.GqlvMutationForProperty;
 
-import lombok.Getter;
 import lombok.val;
 
 public class GqlvTopLevelMutation
+                extends GqlvAbstractCustom
                 implements GqlvMutationForAction.Holder, 
GqlvMutationForProperty.Holder {
 
-    private final Context context;
-
-    private final GraphQLObjectType.Builder gqlObjectTypeBuilder;
-
-    @Getter
-    private final GraphQLObjectType objectType;
-
     private final List<GqlvMutationForAction> actions = new ArrayList<>();
     private final List<GqlvMutationForProperty> properties = new ArrayList<>();
 
     public GqlvTopLevelMutation(final Context context) {
-        this.context = context;
-        gqlObjectTypeBuilder = newObject().name("Mutation");
+        super(newObject().name("Mutation"), context);
 
         val objectSpecifications = context.objectSpecifications();
 
@@ -51,32 +42,25 @@ public class GqlvTopLevelMutation
 
         });
 
-        objectType = gqlObjectTypeBuilder.build();
+        buildObjectType();
     }
 
-
     public void addAction(ObjectSpecification objectSpec, final ObjectAction 
objectAction) {
         val gqlvMutationForAction = new GqlvMutationForAction(this, 
objectSpec, objectAction, context);
-        addField(gqlvMutationForAction.getField());
+        addChildField(gqlvMutationForAction.getField());
         actions.add(gqlvMutationForAction);
     }
 
     public void addProperty(ObjectSpecification objectSpec, final 
OneToOneAssociation property) {
         val gqlvMutationForProperty = new GqlvMutationForProperty(this, 
objectSpec, property, context);
-        addField(gqlvMutationForProperty.getField());
+        addChildField(gqlvMutationForProperty.getField());
         properties.add(gqlvMutationForProperty);
     }
 
-    private GraphQLFieldDefinition addField(GraphQLFieldDefinition field) {
-        if (field != null) {
-            gqlObjectTypeBuilder.field(field);
-        }
-        return field;
-    }
 
     @Override
-    public FieldCoordinates coordinatesFor(GraphQLFieldDefinition 
fieldDefinition) {
-        return FieldCoordinates.coordinates(objectType, fieldDefinition);
+    public GraphQLObjectType getGqlObjectType() {
+        return super.getGqlObjectType();
     }
 
     public void addDataFetchers() {
@@ -86,4 +70,3 @@ public class GqlvTopLevelMutation
 
 
 }
-
diff --git 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/toplevel/GqlvTopLevelQuery.java
 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/toplevel/GqlvTopLevelQuery.java
index 2cab384761..237f5d399b 100644
--- 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/toplevel/GqlvTopLevelQuery.java
+++ 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/toplevel/GqlvTopLevelQuery.java
@@ -1,36 +1,31 @@
 package org.apache.causeway.viewer.graphql.model.toplevel;
 
+import graphql.schema.GraphQLObjectType;
+
 import java.util.ArrayList;
 import java.util.List;
 
-import graphql.schema.FieldCoordinates;
-import graphql.schema.GraphQLFieldDefinition;
-import graphql.schema.GraphQLObjectType;
-
 import static graphql.schema.GraphQLObjectType.newObject;
 
 import org.apache.causeway.viewer.graphql.model.context.Context;
+import org.apache.causeway.viewer.graphql.model.domain.GqlvAbstractCustom;
 import org.apache.causeway.viewer.graphql.model.domain.GqlvDomainObject;
 import org.apache.causeway.viewer.graphql.model.domain.GqlvDomainService;
 import org.apache.causeway.viewer.graphql.model.domain.GqlvScenario;
 
-import lombok.Getter;
-
-public class GqlvTopLevelQuery implements GqlvDomainService.Holder, 
GqlvDomainObject.Holder, GqlvScenario.Holder {
+public class GqlvTopLevelQuery
+        extends GqlvAbstractCustom
+        implements GqlvDomainService.Holder, GqlvDomainObject.Holder, 
GqlvScenario.Holder {
 
     private static final String OBJECT_TYPE_NAME = "Query";
 
-    final GraphQLObjectType.Builder gqlObjectTypeBuilder;
-    @Getter private final GraphQLObjectType objectType;
-
     private final List<GqlvDomainService> domainServices = new ArrayList<>();
     private final List<GqlvDomainObject> domainObjects = new ArrayList<>();
 
 //    private final GqlvScenario scenario;
 
     public GqlvTopLevelQuery(final Context context) {
-
-        this.gqlObjectTypeBuilder = newObject().name(OBJECT_TYPE_NAME);
+        super(newObject().name(OBJECT_TYPE_NAME), context);
 
         context.objectSpecifications().forEach(objectSpec -> {
             switch (objectSpec.getBeanSort()) {
@@ -52,7 +47,7 @@ public class GqlvTopLevelQuery implements 
GqlvDomainService.Holder, GqlvDomainOb
                     
context.serviceRegistry.lookupBeanById(objectSpec.getLogicalTypeName())
                             .ifPresent(servicePojo -> {
                                 GqlvDomainService gqlvDomainService = new 
GqlvDomainService(this, objectSpec, servicePojo, context);
-                                addField(gqlvDomainService.getField());
+                                addChildField(gqlvDomainService.getField());
                                 domainServices.add(gqlvDomainService);
                             });
                     break;
@@ -61,26 +56,18 @@ public class GqlvTopLevelQuery implements 
GqlvDomainService.Holder, GqlvDomainOb
 
         // add domain object lookup to top-level query
         for (GqlvDomainObject domainObject : this.domainObjects) {
-            addField(domainObject.getLookupField());
+            addChildField(domainObject.getLookupField());
         }
 
 //        scenario = new GqlvScenario(this, context);
 //        addField(scenario.getField());
 
-        objectType = gqlObjectTypeBuilder.build();
+        buildObjectType();
     }
 
-
     @Override
-    public FieldCoordinates coordinatesFor(GraphQLFieldDefinition 
fieldDefinition) {
-        return FieldCoordinates.coordinates(OBJECT_TYPE_NAME, 
fieldDefinition.getName());
-    }
-
-    private GraphQLFieldDefinition addField(GraphQLFieldDefinition field) {
-        if (field != null) {
-            gqlObjectTypeBuilder.field(field);
-        }
-        return field;
+    public GraphQLObjectType getGqlObjectType() {
+        return super.getGqlObjectType();
     }
 
     public void addDataFetchers() {
@@ -97,5 +84,4 @@ public class GqlvTopLevelQuery implements 
GqlvDomainService.Holder, GqlvDomainOb
 
 //        scenario.addDataFetchers();
     }
-
 }
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 ecff161c44..092dfb67f7 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
@@ -118,10 +118,10 @@ public class GraphQlSourceForCauseway implements 
GraphQlSource {
 
         // build the schema
         return GraphQLSchema.newSchema()
-                .query(topLevelQuery.getObjectType())
+                .query(topLevelQuery.getGqlObjectType())
                 .additionalTypes(graphQLTypeRegistry.getGraphQLTypes())
                 .codeRegistry(codeRegistry)
-                .mutation(topLevelMutation != null ? 
topLevelMutation.getObjectType() : null)
+                .mutation(topLevelMutation != null ? 
topLevelMutation.getGqlObjectType() : null)
                 .build();
     }
 

Reply via email to