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 00205b7ef2791ab731e157d50241b336ad856c8b Author: danhaywood <[email protected]> AuthorDate: Sun Jan 21 15:08:28 2024 +0000 CAUSEWAY-3676: moves responsibility for creating mutations field into mutations object --- .../graphql/model/domain/GqlvDomainObject.java | 57 ++-------- .../graphql/model/domain/GqlvDomainService.java | 38 ++++--- .../viewer/graphql/model/domain/GqlvMutations.java | 42 +++++-- .../test/e2e/Schema_IntegTest.schema.approved.json | 121 --------------------- .../graphql/test/src/test/resources/schema.gql | 11 -- .../integration/GraphQlSourceForCauseway.java | 26 +++-- 6 files changed, 83 insertions(+), 212 deletions(-) diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainObject.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainObject.java index e938afbfdd..b0bc898a0b 100644 --- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainObject.java +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainObject.java @@ -18,7 +18,6 @@ import org.apache.causeway.core.metamodel.spec.feature.OneToManyAssociation; import org.apache.causeway.core.metamodel.spec.feature.OneToOneAssociation; import org.apache.causeway.viewer.graphql.model.registry.GraphQLTypeRegistry; import org.apache.causeway.viewer.graphql.model.types.TypeMapper; -import org.apache.causeway.viewer.graphql.model.types._Constants; import org.apache.causeway.viewer.graphql.model.util.TypeNames; import lombok.Getter; @@ -50,7 +49,7 @@ public class GqlvDomainObject implements GqlvActionHolder, GqlvPropertyHolder, G private final GraphQLCodeRegistry.Builder codeRegistryBuilder; @Getter private final GqlvMeta meta; - @Getter private final GqlvMutations mutators; + @Getter private final GqlvMutations mutations; @Getter private final GraphQLObjectType.Builder gqlObjectTypeBuilder; @@ -92,7 +91,7 @@ public class GqlvDomainObject implements GqlvActionHolder, GqlvPropertyHolder, G this.gqlObjectTypeBuilder = newObject().name(TypeNames.objectTypeNameFor(objectSpecification)); this.meta = new GqlvMeta(this, codeRegistryBuilder, bookmarkService, objectManager); - this.mutators = new GqlvMutations(this, codeRegistryBuilder, bookmarkService, objectManager); + this.mutations = new GqlvMutations(this, codeRegistryBuilder, bookmarkService, objectManager); gqlObjectTypeBuilder.field(meta.getMetaField()); @@ -197,14 +196,7 @@ public class GqlvDomainObject implements GqlvActionHolder, GqlvPropertyHolder, G addAction(objectAction); }); - Optional<GraphQLObjectType> mutatorsTypeIfAny = buildMutatorsTypeIfAny(); - mutatorsTypeIfAny.ifPresent(mutatorsType -> { - GraphQLFieldDefinition gql_mutations = newFieldDefinition() - .name(_Constants.GQL_MUTATIONS_FIELDNAME) - .type(mutatorsType) - .build(); - gqlObjectTypeBuilder.field(gql_mutations); - }); + buildMutationsTypeAndFieldIfRequired(); return anyActions.get(); } @@ -213,7 +205,7 @@ public class GqlvDomainObject implements GqlvActionHolder, GqlvPropertyHolder, G if (objectAction.getSemantics().isSafeInNature()) { safeActions.add(new GqlvAction(this, objectAction, gqlObjectTypeBuilder, codeRegistryBuilder)); } else { - mutators.addAction(objectAction); + mutations.addAction(objectAction); } } @@ -243,17 +235,17 @@ public class GqlvDomainObject implements GqlvActionHolder, GqlvPropertyHolder, G /** - * @see #buildMutatorsTypeIfAny() + * @see #buildMutationsTypeAndFieldIfRequired() */ - public Optional<GraphQLObjectType> getMutatorsTypeIfAny() { - return mutators.getMutationsTypeIfAny(); + public Optional<GraphQLObjectType> getMutationsTypeIfAny() { + return mutations.getMutationsTypeIfAny(); } /** - * @see #getMutatorsTypeIfAny() + * @see #getMutationsTypeIfAny() */ - public Optional<GraphQLObjectType> buildMutatorsTypeIfAny() { - return mutators.buildMutationsTypeIfAny(); + public Optional<GraphQLObjectType> buildMutationsTypeAndFieldIfRequired() { + return mutations.buildMutationsTypeAndFieldIfRequired(); } @@ -274,32 +266,7 @@ public class GqlvDomainObject implements GqlvActionHolder, GqlvPropertyHolder, G } public void addDataFetchersForMutators() { - - // TODO: something similar to addFetchers for safe actions, but applied to GqlvMutationsFetcher instead; perhaps they share a common interface? - - // earlier code... - -// codeRegistryBuilder.dataFetcher(FieldCoordinates.coordinates(graphQLTypeReference, gql_mutations), new DataFetcher<Object>() { -// @Override -// public Object get(DataFetchingEnvironment environment) throws Exception { -// -// Bookmark bookmark = bookmarkService.bookmarkFor(environment.getSource()).orElse(null); -// if (bookmark == null) return null; //TODO: is this correct ? -// return new GqlvMutationsFetcher(bookmark, bookmarkService, mutatorsTypeFields); -// } -// }); -// -// // for each field something like -// codeRegistryBuilder.dataFetcher(FieldCoordinates.coordinates(mutatorsType, idField), new DataFetcher<Object>() { -// @Override -// public Object get(DataFetchingEnvironment environment) throws Exception { -// -// Fetcher gqlMeta = environment.getSource(); -// -// return gqlMeta.id(); -// } -// }); - + getMutations().addDataFetchersForActions(); } @@ -322,7 +289,7 @@ public class GqlvDomainObject implements GqlvActionHolder, GqlvPropertyHolder, G graphQLTypeRegistry.addTypeIfNotAlreadyPresent(getMeta().getMetaField().getType()); graphQLTypeRegistry.addTypeIfNotAlreadyPresent(getGqlInputObjectType()); - getMutatorsTypeIfAny().ifPresent(graphQLTypeRegistry::addTypeIfNotAlreadyPresent); + getMutationsTypeIfAny().ifPresent(graphQLTypeRegistry::addTypeIfNotAlreadyPresent); } } diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainService.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainService.java index abe235c56b..3eb90ee6ed 100644 --- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainService.java +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainService.java @@ -13,7 +13,6 @@ import org.apache.causeway.core.metamodel.spec.ObjectSpecification; import org.apache.causeway.core.metamodel.spec.feature.MixedIn; import org.apache.causeway.core.metamodel.spec.feature.ObjectAction; import org.apache.causeway.viewer.graphql.model.registry.GraphQLTypeRegistry; -import org.apache.causeway.viewer.graphql.model.types._Constants; import org.apache.causeway.viewer.graphql.model.util.TypeNames; import lombok.Getter; @@ -36,7 +35,7 @@ public class GqlvDomainService implements GqlvActionHolder, GqlvMutationsHolder @Getter private final Object servicePojo; private final GraphQLCodeRegistry.Builder codeRegistryBuilder; - @Getter private final GqlvMutations mutators; + @Getter private final GqlvMutations mutations; private final BookmarkService bookmarkService; private final ObjectManager objectManager; @@ -71,7 +70,7 @@ public class GqlvDomainService implements GqlvActionHolder, GqlvMutationsHolder this.gqlObjectTypeBuilder = newObject().name(TypeNames.objectTypeNameFor(objectSpecification)); - this.mutators = new GqlvMutations(this, codeRegistryBuilder, bookmarkService, objectManager); + this.mutations = new GqlvMutations(this, codeRegistryBuilder, bookmarkService, objectManager); this.bookmarkService = bookmarkService; this.objectManager = objectManager; @@ -89,14 +88,15 @@ public class GqlvDomainService implements GqlvActionHolder, GqlvMutationsHolder addAction(objectAction); }); - Optional<GraphQLObjectType> mutatorsTypeIfAny = buildMutatorsTypeIfAny(); - mutatorsTypeIfAny.ifPresent(mutatorsType -> { - GraphQLFieldDefinition gql_mutations = newFieldDefinition() - .name(_Constants.GQL_MUTATIONS_FIELDNAME) - .type(mutatorsType) - .build(); - gqlObjectTypeBuilder.field(gql_mutations); - }); + buildMutatorsTypeIfRequired(); +// Optional<GraphQLObjectType> mutatorsTypeIfAny = buildMutationsTypeAndFieldIfRequired(); +// mutatorsTypeIfAny.ifPresent(mutatorsType -> { +// GraphQLFieldDefinition gql_mutations = newFieldDefinition() +// .name(_Constants.GQL_MUTATIONS_FIELDNAME) +// .type(mutatorsType) +// .build(); +// gqlObjectTypeBuilder.field(gql_mutations); +// }); return anyActions.get(); } @@ -137,17 +137,17 @@ public class GqlvDomainService implements GqlvActionHolder, GqlvMutationsHolder /** - * @see #buildMutatorsTypeIfAny() + * @see #buildMutatorsTypeIfRequired() */ public Optional<GraphQLObjectType> getMutatorsTypeIfAny() { - return mutators.getMutationsTypeIfAny(); + return mutations.getMutationsTypeIfAny(); } /** * @see #getMutatorsTypeIfAny() */ - public Optional<GraphQLObjectType> buildMutatorsTypeIfAny() { - return mutators.buildMutationsTypeIfAny(); + public Optional<GraphQLObjectType> buildMutatorsTypeIfRequired() { + return mutations.buildMutationsTypeAndFieldIfRequired(); } @@ -168,4 +168,12 @@ public class GqlvDomainService implements GqlvActionHolder, GqlvMutationsHolder getMutatorsTypeIfAny().ifPresent(graphQLTypeRegistry::addTypeIfNotAlreadyPresent); } + public void addDataFetchersForSafeActions() { + getSafeActions().forEach(GqlvAction::addDataFetcher); + } + + public void addDataFetchersForMutators() { + getMutations().addDataFetchersForActions(); + } + } diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMutations.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMutations.java index 7a467ea319..21a08dcb1e 100644 --- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMutations.java +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMutations.java @@ -1,6 +1,7 @@ package org.apache.causeway.viewer.graphql.model.domain; import graphql.schema.GraphQLCodeRegistry; +import graphql.schema.GraphQLFieldDefinition; import graphql.schema.GraphQLObjectType; import lombok.Getter; @@ -13,6 +14,7 @@ import java.util.Optional; import org.apache.causeway.applib.services.bookmark.BookmarkService; import org.apache.causeway.core.metamodel.objectmanager.ObjectManager; import org.apache.causeway.core.metamodel.spec.feature.ObjectAction; +import org.apache.causeway.viewer.graphql.model.types._Constants; import org.apache.causeway.viewer.graphql.model.util.TypeNames; import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition; @@ -31,11 +33,17 @@ public class GqlvMutations implements GqlvActionHolder { @Getter final GraphQLObjectType.Builder gqlObjectTypeBuilder; /** - * Built lazily using {@link #buildMutationsTypeIfAny()} + * Built lazily using {@link #buildMutationsTypeAndFieldIfRequired()} */ @SuppressWarnings("OptionalUsedAsFieldOrParameterType") private Optional<GraphQLObjectType> mutationsTypeIfAny; + /** + * Built lazily using {@link #buildMutationsTypeAndFieldIfRequired()} + */ + @SuppressWarnings("OptionalUsedAsFieldOrParameterType") + private Optional<GraphQLFieldDefinition> mutationsFieldIfAny; + public GqlvMutations( final GqlvMutationsHolder holder, final GraphQLCodeRegistry.Builder codeRegistryBuilder, @@ -63,12 +71,12 @@ public class GqlvMutations implements GqlvActionHolder { /** - * @see #buildMutationsTypeIfAny() + * @see #buildMutationsTypeAndFieldIfRequired() */ public Optional<GraphQLObjectType> getMutationsTypeIfAny() { //noinspection OptionalAssignedToNull if (mutationsTypeIfAny == null) { - throw new IllegalArgumentException(String.format("Gql MutatorsType has not yet been built for %s", holder.getObjectSpecification().getLogicalTypeName())); + throw new IllegalArgumentException(String.format("Gql mutators type and field has not yet been built for %s", holder.getObjectSpecification().getLogicalTypeName())); } return mutationsTypeIfAny; } @@ -76,14 +84,32 @@ public class GqlvMutations implements GqlvActionHolder { /** * @see #getMutationsTypeIfAny() */ - public Optional<GraphQLObjectType> buildMutationsTypeIfAny() { + public Optional<GraphQLObjectType> buildMutationsTypeAndFieldIfRequired() { //noinspection OptionalAssignedToNull if (mutationsTypeIfAny != null) { - throw new IllegalArgumentException("Gql MutatorsType has already been built for " + holder.getObjectSpecification().getLogicalTypeName()); + throw new IllegalArgumentException("Gql mutations type and field has already been built for " + holder.getObjectSpecification().getLogicalTypeName()); + } + if (hasActions()) { + + // create the type + GraphQLObjectType mutationsType = gqlObjectTypeBuilder.build(); + this.mutationsTypeIfAny = Optional.of(mutationsType); + + // create the field + GraphQLFieldDefinition mutationsField = newFieldDefinition() + .name(_Constants.GQL_MUTATIONS_FIELDNAME) + .type(mutationsType) + .build(); + mutationsFieldIfAny = Optional.of(mutationsField); + + // register the field into the owning type + gqlObjectTypeBuilder.field(mutationsField); + + } else { + mutationsFieldIfAny = Optional.empty(); + mutationsTypeIfAny = Optional.empty(); } - return mutationsTypeIfAny = hasActions() - ? Optional.of(gqlObjectTypeBuilder.build()) - : Optional.empty(); + return mutationsTypeIfAny; } @Override diff --git a/incubator/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Schema_IntegTest.schema.approved.json b/incubator/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Schema_IntegTest.schema.approved.json index 48597cbcc3..fd611a8a3e 100644 --- a/incubator/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Schema_IntegTest.schema.approved.json +++ b/incubator/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Schema_IntegTest.schema.approved.json @@ -1364,17 +1364,6 @@ }, "isDeprecated" : false, "deprecationReason" : null - }, { - "name" : "_gql_mutations", - "description" : null, - "args" : [ ], - "type" : { - "kind" : "OBJECT", - "name" : "causeway_applib_PropertyNode__mutations", - "ofType" : null - }, - "isDeprecated" : false, - "deprecationReason" : null } ], "inputFields" : null, "interfaces" : [ ], @@ -1970,17 +1959,6 @@ }, "isDeprecated" : false, "deprecationReason" : null - }, { - "name" : "_gql_mutations", - "description" : null, - "args" : [ ], - "type" : { - "kind" : "OBJECT", - "name" : "causeway_applib_node_ActionNode__mutations", - "ofType" : null - }, - "isDeprecated" : false, - "deprecationReason" : null } ], "inputFields" : null, "interfaces" : [ ], @@ -2127,17 +2105,6 @@ }, "isDeprecated" : false, "deprecationReason" : null - }, { - "name" : "_gql_mutations", - "description" : null, - "args" : [ ], - "type" : { - "kind" : "OBJECT", - "name" : "causeway_applib_node_CollectionNode__mutations", - "ofType" : null - }, - "isDeprecated" : false, - "deprecationReason" : null } ], "inputFields" : null, "interfaces" : [ ], @@ -4866,17 +4833,6 @@ }, "isDeprecated" : false, "deprecationReason" : null - }, { - "name" : "_gql_mutations", - "description" : null, - "args" : [ ], - "type" : { - "kind" : "OBJECT", - "name" : "org_apache_causeway_commons_functional_Either__mutations", - "ofType" : null - }, - "isDeprecated" : false, - "deprecationReason" : null } ], "inputFields" : null, "interfaces" : [ ], @@ -5141,17 +5097,6 @@ }, "isDeprecated" : false, "deprecationReason" : null - }, { - "name" : "_gql_mutations", - "description" : null, - "args" : [ ], - "type" : { - "kind" : "OBJECT", - "name" : "org_apache_causeway_commons_functional_Railway__mutations", - "ofType" : null - }, - "isDeprecated" : false, - "deprecationReason" : null } ], "inputFields" : null, "interfaces" : [ ], @@ -5362,17 +5307,6 @@ }, "isDeprecated" : false, "deprecationReason" : null - }, { - "name" : "_gql_mutations", - "description" : null, - "args" : [ ], - "type" : { - "kind" : "OBJECT", - "name" : "org_apache_causeway_commons_functional_ThrowingConsumer__mutations", - "ofType" : null - }, - "isDeprecated" : false, - "deprecationReason" : null } ], "inputFields" : null, "interfaces" : [ ], @@ -5511,17 +5445,6 @@ }, "isDeprecated" : false, "deprecationReason" : null - }, { - "name" : "_gql_mutations", - "description" : null, - "args" : [ ], - "type" : { - "kind" : "OBJECT", - "name" : "org_apache_causeway_commons_functional_ThrowingFunction__mutations", - "ofType" : null - }, - "isDeprecated" : false, - "deprecationReason" : null } ], "inputFields" : null, "interfaces" : [ ], @@ -5684,17 +5607,6 @@ }, "isDeprecated" : false, "deprecationReason" : null - }, { - "name" : "_gql_mutations", - "description" : null, - "args" : [ ], - "type" : { - "kind" : "OBJECT", - "name" : "org_apache_causeway_commons_functional_ThrowingRunnable__mutations", - "ofType" : null - }, - "isDeprecated" : false, - "deprecationReason" : null } ], "inputFields" : null, "interfaces" : [ ], @@ -5870,17 +5782,6 @@ }, "isDeprecated" : false, "deprecationReason" : null - }, { - "name" : "_gql_mutations", - "description" : null, - "args" : [ ], - "type" : { - "kind" : "OBJECT", - "name" : "org_apache_causeway_commons_functional_Try__mutations", - "ofType" : null - }, - "isDeprecated" : false, - "deprecationReason" : null } ], "inputFields" : null, "interfaces" : [ ], @@ -6549,17 +6450,6 @@ }, "isDeprecated" : false, "deprecationReason" : null - }, { - "name" : "_gql_mutations", - "description" : null, - "args" : [ ], - "type" : { - "kind" : "OBJECT", - "name" : "org_apache_causeway_core_metamodel_inspect_model_MemberNode__mutations", - "ofType" : null - }, - "isDeprecated" : false, - "deprecationReason" : null } ], "inputFields" : null, "interfaces" : [ ], @@ -6969,17 +6859,6 @@ }, "isDeprecated" : false, "deprecationReason" : null - }, { - "name" : "_gql_mutations", - "description" : null, - "args" : [ ], - "type" : { - "kind" : "OBJECT", - "name" : "university_dept_DeptHead__mutations", - "ofType" : null - }, - "isDeprecated" : false, - "deprecationReason" : null } ], "inputFields" : null, "interfaces" : [ ], diff --git a/incubator/viewers/graphql/test/src/test/resources/schema.gql b/incubator/viewers/graphql/test/src/test/resources/schema.gql index 0bbeabb0c6..25cdac1a1c 100644 --- a/incubator/viewers/graphql/test/src/test/resources/schema.gql +++ b/incubator/viewers/graphql/test/src/test/resources/schema.gql @@ -68,7 +68,6 @@ type causeway_applib_ParameterNode__meta { type causeway_applib_PropertyNode { _gql_meta: causeway_applib_PropertyNode__meta - _gql_mutations: causeway_applib_PropertyNode__mutations mixedIn: String! parentNode: causeway_applib_TypeNode! property: String! @@ -130,7 +129,6 @@ type causeway_applib_UserMenu { type causeway_applib_node_ActionNode { _gql_meta: causeway_applib_node_ActionNode__meta - _gql_mutations: causeway_applib_node_ActionNode__mutations action: String! mixedIn: String! parentNode: causeway_applib_TypeNode! @@ -147,7 +145,6 @@ type causeway_applib_node_ActionNode__mutations { type causeway_applib_node_CollectionNode { _gql_meta: causeway_applib_node_CollectionNode__meta - _gql_mutations: causeway_applib_node_CollectionNode__mutations collection: String! mixedIn: String! parentNode: causeway_applib_TypeNode! @@ -423,7 +420,6 @@ type java_util_stream_Stream__meta { type org_apache_causeway_commons_functional_Either { _gql_meta: org_apache_causeway_commons_functional_Either__meta - _gql_mutations: org_apache_causeway_commons_functional_Either__mutations left: String! right: String! } @@ -444,7 +440,6 @@ type org_apache_causeway_commons_functional_Either__mutations { type org_apache_causeway_commons_functional_Railway { _gql_meta: org_apache_causeway_commons_functional_Railway__meta - _gql_mutations: org_apache_causeway_commons_functional_Railway__mutations failure: String! success: String! } @@ -464,7 +459,6 @@ type org_apache_causeway_commons_functional_Railway__mutations { type org_apache_causeway_commons_functional_ThrowingConsumer { _gql_meta: org_apache_causeway_commons_functional_ThrowingConsumer__meta - _gql_mutations: org_apache_causeway_commons_functional_ThrowingConsumer__mutations } type org_apache_causeway_commons_functional_ThrowingConsumer__meta { @@ -479,7 +473,6 @@ type org_apache_causeway_commons_functional_ThrowingConsumer__mutations { type org_apache_causeway_commons_functional_ThrowingFunction { _gql_meta: org_apache_causeway_commons_functional_ThrowingFunction__meta - _gql_mutations: org_apache_causeway_commons_functional_ThrowingFunction__mutations } type org_apache_causeway_commons_functional_ThrowingFunction__meta { @@ -495,7 +488,6 @@ type org_apache_causeway_commons_functional_ThrowingFunction__mutations { type org_apache_causeway_commons_functional_ThrowingRunnable { _gql_meta: org_apache_causeway_commons_functional_ThrowingRunnable__meta - _gql_mutations: org_apache_causeway_commons_functional_ThrowingRunnable__mutations } type org_apache_causeway_commons_functional_ThrowingRunnable__meta { @@ -513,7 +505,6 @@ type org_apache_causeway_commons_functional_ThrowingRunnable__mutations { type org_apache_causeway_commons_functional_Try { _gql_meta: org_apache_causeway_commons_functional_Try__meta - _gql_mutations: org_apache_causeway_commons_functional_Try__mutations failure: String! success: String! } @@ -557,7 +548,6 @@ type org_apache_causeway_core_metamodel_inspect_model_MMNode__meta { type org_apache_causeway_core_metamodel_inspect_model_MemberNode { _gql_meta: org_apache_causeway_core_metamodel_inspect_model_MemberNode__meta - _gql_mutations: org_apache_causeway_core_metamodel_inspect_model_MemberNode__mutations mixedIn: String! parentNode: causeway_applib_TypeNode! } @@ -601,7 +591,6 @@ type university_dept_Department__meta { type university_dept_DeptHead { _gql_meta: university_dept_DeptHead__meta - _gql_mutations: university_dept_DeptHead__mutations department: university_dept_Department name: String } diff --git a/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/integration/GraphQlSourceForCauseway.java b/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/integration/GraphQlSourceForCauseway.java index 9b89e2b524..c9abbcfe9d 100644 --- a/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/integration/GraphQlSourceForCauseway.java +++ b/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/integration/GraphQlSourceForCauseway.java @@ -52,7 +52,6 @@ import graphql.GraphQL; import graphql.execution.DataFetcherExceptionHandler; import graphql.execution.DataFetcherExceptionHandlerParameters; import graphql.execution.DataFetcherExceptionHandlerResult; -import graphql.execution.instrumentation.tracing.TracingInstrumentation; import graphql.schema.GraphQLCodeRegistry; import graphql.schema.GraphQLSchema; @@ -187,7 +186,10 @@ public class GraphQlSourceForCauseway implements GraphQlSource { domainService.registerTypesInto(graphQLTypeRegistry); - domainService.getSafeActions().forEach(GqlvAction::addDataFetcher); + domainService.addDataFetchersForSafeActions(); + domainService.addDataFetchersForMutators(); + + topLevelQueryStructure.addFieldFor(domainService, codeRegistryBuilder); } @@ -197,22 +199,22 @@ public class GraphQlSourceForCauseway implements GraphQlSource { final ObjectSpecification objectSpec, final GraphQLCodeRegistry.Builder codeRegistryBuilder) { - val gqlvDomainObject = new GqlvDomainObject(objectSpec, codeRegistryBuilder, bookmarkService, objectManager); + val domainObject = new GqlvDomainObject(objectSpec, codeRegistryBuilder, bookmarkService, objectManager); - gqlvDomainObject.addPropertiesAsFields(); - gqlvDomainObject.addCollectionsAsLists(); - gqlvDomainObject.addActions(); + domainObject.addPropertiesAsFields(); + domainObject.addCollectionsAsLists(); + domainObject.addActions(); // build - gqlvDomainObject.registerTypesInto(graphQLTypeRegistry); + domainObject.registerTypesInto(graphQLTypeRegistry); // create and register data fetchers - gqlvDomainObject.addDataFetchersForMetaData(); + domainObject.addDataFetchersForMetaData(); - gqlvDomainObject.addDataFetchersForProperties(); - gqlvDomainObject.addDataFetchersForCollections(); - gqlvDomainObject.addDataFetchersForSafeActions(); - gqlvDomainObject.getMutators().addDataFetchersForActions(); + domainObject.addDataFetchersForProperties(); + domainObject.addDataFetchersForCollections(); + domainObject.addDataFetchersForSafeActions(); + domainObject.addDataFetchersForMutators(); } }
