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