You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@causeway.apache.org by da...@apache.org on 2024/01/19 12:16:11 UTC
(causeway) 01/02: CAUSEWAY-3676: moves more responsibilities into GqlvObjectSpec, building of the GqlObjectType
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 c847467d42d6a539ff28fdf5f026e73d8ab4e235
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jan 19 12:12:59 2024 +0000
CAUSEWAY-3676: moves more responsibilities into GqlvObjectSpec, building of the GqlObjectType
---
.../viewer/graphql/viewer/source/GqlvObjectSpec.java | 20 ++++++++++++++++++++
.../graphql/viewer/source/ObjectTypeFactory.java | 7 ++++---
2 files changed, 24 insertions(+), 3 deletions(-)
diff --git a/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/source/GqlvObjectSpec.java b/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/source/GqlvObjectSpec.java
index 3f4e3795e8..0b24bae569 100644
--- a/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/source/GqlvObjectSpec.java
+++ b/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/source/GqlvObjectSpec.java
@@ -41,6 +41,18 @@ public class GqlvObjectSpec {
@Getter private final GraphQLObjectType.Builder gqlObjectTypeBuilder;
+ /**
+ * Build using {@link #buildGqlObjectType()}
+ */
+ private GraphQLObjectType gqlObjectType;
+
+ public GraphQLObjectType getGqlObjectType() {
+ if (gqlObjectType == null) {
+ throw new IllegalStateException("GraphQLObjectType has not yet been built for " + getLogicalTypeNameSanitized());
+ }
+ return gqlObjectType;
+ }
+
public GqlvObjectSpec(final ObjectSpecification objectSpec) {
this.objectSpec = objectSpec;
this.gqlObjectTypeBuilder = newObject().name(getLogicalTypeNameSanitized());
@@ -130,4 +142,12 @@ public class GqlvObjectSpec {
break;
}
}
+
+ public GraphQLObjectType buildGqlObjectType() {
+ if (gqlObjectType != null) {
+ throw new IllegalArgumentException("GqlObjectType has already been built");
+ }
+ gqlObjectType = getGqlObjectTypeBuilder().name(getLogicalTypeNameSanitized()).build();
+ return gqlObjectType;
+ }
}
diff --git a/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/source/ObjectTypeFactory.java b/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/source/ObjectTypeFactory.java
index 688d01988c..3f432f1fec 100644
--- a/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/source/ObjectTypeFactory.java
+++ b/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/source/ObjectTypeFactory.java
@@ -132,13 +132,13 @@ public class ObjectTypeFactory {
addActions(gqlvObjectSpec.getLogicalTypeNameSanitized(), objectSpec, gqlvObjectSpec.getGqlObjectTypeBuilder());
// build and register object type
- GraphQLObjectType graphQLObjectType = gqlvObjectSpec.getGqlObjectTypeBuilder().name(gqlvObjectSpec.getLogicalTypeNameSanitized()).build();
+ GraphQLObjectType graphQLObjectType = gqlvObjectSpec.buildGqlObjectType();
graphQLTypeRegistry.addTypeIfNotAlreadyPresent(graphQLObjectType);
// create and register data fetchers
createAndRegisterDataFetchersForMetaData(
- codeRegistryBuilder, gqlvObjectSpec.getBeanSort(), gqlvObjectSpec.getMetaType(), gqlvObjectSpec.getMetaField(), graphQLObjectType);
+ codeRegistryBuilder, gqlvObjectSpec.getBeanSort(), gqlvObjectSpec.getMetaType(), gqlvObjectSpec.getMetaField(), gqlvObjectSpec.getGqlObjectType(), gqlvObjectSpec);
if (mutatorsDataForEntity!=null) {
createAndRegisterDataFetchersForMutators(
codeRegistryBuilder, gqlvObjectSpec.getBeanSort(), mutatorsDataForEntity, graphQLObjectType);
@@ -360,7 +360,8 @@ public class ObjectTypeFactory {
final BeanSort objectSpecificationBeanSort,
final GraphQLObjectType metaType,
final GraphQLFieldDefinition gql_meta,
- final GraphQLObjectType graphQLObjectType) {
+ final GraphQLObjectType graphQLObjectType,
+ final GqlvObjectSpec gqlvObjectSpec) {
codeRegistryBuilder.dataFetcher(FieldCoordinates.coordinates(graphQLObjectType, gql_meta), (DataFetcher<Object>) environment -> {
return bookmarkService.bookmarkFor(environment.getSource())