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
The following commit(s) were added to refs/heads/CAUSEWAY-3676 by this push:
new da37ba8cf3 CAUSEWAY-3676: more cleanup of ObjectTypeFactory vs
GqlvObjectSpec
da37ba8cf3 is described below
commit da37ba8cf34d5eda5c3c8cef5440915e9c4ad039
Author: danhaywood <[email protected]>
AuthorDate: Fri Jan 19 12:24:36 2024 +0000
CAUSEWAY-3676: more cleanup of ObjectTypeFactory vs GqlvObjectSpec
---
.../graphql/viewer/source/GqlvObjectSpec.java | 40 +++++++++------
.../graphql/viewer/source/ObjectTypeFactory.java | 60 ++++++++++------------
2 files changed, 53 insertions(+), 47 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 0b24bae569..e5198504a5 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
@@ -25,7 +25,12 @@ import static graphql.schema.GraphQLObjectType.newObject;
*/
public class GqlvObjectSpec {
- private final ObjectSpecification objectSpec;
+ @Getter private final ObjectSpecification objectSpec;
+
+ @Getter private final GraphQLObjectType metaType;
+ @Getter private final GraphQLFieldDefinition metaField;
+
+ @Getter private final GraphQLObjectType.Builder gqlObjectTypeBuilder;
public String getLogicalTypeNameSanitized() {
val logicalTypeName = objectSpec.getLogicalTypeName();
@@ -36,23 +41,11 @@ public class GqlvObjectSpec {
return objectSpec.getBeanSort();
}
- @Getter private final GraphQLObjectType metaType;
- @Getter private final GraphQLFieldDefinition metaField;
-
- @Getter private final GraphQLObjectType.Builder gqlObjectTypeBuilder;
-
/**
- * Build using {@link #buildGqlObjectType()}
+ * Built 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());
@@ -143,11 +136,28 @@ public class GqlvObjectSpec {
}
}
- public GraphQLObjectType buildGqlObjectType() {
+ /**
+ * Should be called only after fields etc have been added.
+ *
+ * @see #getGqlObjectType()
+ */
+ GraphQLObjectType buildGqlObjectType() {
if (gqlObjectType != null) {
throw new IllegalArgumentException("GqlObjectType has already been
built");
}
gqlObjectType =
getGqlObjectTypeBuilder().name(getLogicalTypeNameSanitized()).build();
return gqlObjectType;
}
+
+ /**
+ * @see #buildGqlObjectType()
+ */
+ GraphQLObjectType getGqlObjectType() {
+ if (gqlObjectType == null) {
+ throw new IllegalStateException(String.format(
+ "GraphQLObjectType has not yet been built for %s",
getLogicalTypeNameSanitized()));
+ }
+ 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 96e288bb9b..5fe9864db5 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
@@ -137,11 +137,10 @@ public class ObjectTypeFactory {
// create and register data fetchers
- createAndRegisterDataFetchersForMetaData(
- codeRegistryBuilder, gqlvObjectSpec.getBeanSort(),
gqlvObjectSpec.getMetaType(), gqlvObjectSpec.getMetaField(),
gqlvObjectSpec.getGqlObjectType(), gqlvObjectSpec);
+ createAndRegisterDataFetchersForMetaData(codeRegistryBuilder,
gqlvObjectSpec);
if (mutatorsDataForEntity!=null) {
createAndRegisterDataFetchersForMutators(
- codeRegistryBuilder, gqlvObjectSpec.getBeanSort(),
mutatorsDataForEntity, graphQLObjectType);
+ codeRegistryBuilder, gqlvObjectSpec.getBeanSort(),
mutatorsDataForEntity, gqlvObjectSpec.getGqlObjectType());
}
createAndRegisterDataFetchersForField(objectSpec, codeRegistryBuilder,
graphQLObjectType);
createAndRegisterDataFetchersForCollection(objectSpec,
codeRegistryBuilder, graphQLObjectType);
@@ -155,7 +154,6 @@ public class ObjectTypeFactory {
}
-
void createAndRegisterDataFetchersForField(
final ObjectSpecification objectSpecification,
final GraphQLCodeRegistry.Builder codeRegistryBuilder,
@@ -357,39 +355,37 @@ public class ObjectTypeFactory {
void createAndRegisterDataFetchersForMetaData(
final GraphQLCodeRegistry.Builder codeRegistryBuilder,
- final BeanSort objectSpecificationBeanSortx,
- final GraphQLObjectType metaTypex,
- final GraphQLFieldDefinition gql_metax,
- final GraphQLObjectType graphQLObjectTypex,
final GqlvObjectSpec gqlvObjectSpec) {
- final BeanSort objectSpecificationBeanSort =
gqlvObjectSpec.getBeanSort();
- final GraphQLObjectType metaType = gqlvObjectSpec.getMetaType();
- final GraphQLFieldDefinition gql_meta = gqlvObjectSpec.getMetaField();
- final GraphQLObjectType graphQLObjectType =
gqlvObjectSpec.getGqlObjectType();
-
-
codeRegistryBuilder.dataFetcher(FieldCoordinates.coordinates(graphQLObjectType,
gql_meta), (DataFetcher<Object>) environment -> {
- return bookmarkService.bookmarkFor(environment.getSource())
- .map(bookmark -> new GqlvMeta(bookmark, bookmarkService,
objectManager))
- .orElse(null); //TODO: is this correct ?
- });
-
- codeRegistryBuilder.dataFetcher(FieldCoordinates.coordinates(metaType,
Fields.id), (DataFetcher<Object>) environment -> {
- GqlvMeta gqlvMeta = environment.getSource();
- return gqlvMeta.id();
- });
+ codeRegistryBuilder.dataFetcher(
+
FieldCoordinates.coordinates(gqlvObjectSpec.getGqlObjectType(),
gqlvObjectSpec.getMetaField()),
+ (DataFetcher<Object>) environment -> {
+ return bookmarkService.bookmarkFor(environment.getSource())
+ .map(bookmark -> new GqlvMeta(bookmark,
bookmarkService, objectManager))
+ .orElse(null); //TODO: is this correct ?
+ });
- codeRegistryBuilder.dataFetcher(FieldCoordinates.coordinates(metaType,
Fields.logicalTypeName), (DataFetcher<Object>) environment -> {
- GqlvMeta gqlvMeta = environment.getSource();
- return gqlvMeta.logicalTypeName();
- });
+ codeRegistryBuilder.dataFetcher(
+ FieldCoordinates.coordinates(gqlvObjectSpec.getMetaType(),
Fields.id),
+ (DataFetcher<Object>) environment -> {
+ GqlvMeta gqlvMeta = environment.getSource();
+ return gqlvMeta.id();
+ });
- if (objectSpecificationBeanSort == BeanSort.ENTITY) {
-
codeRegistryBuilder.dataFetcher(FieldCoordinates.coordinates(metaType,
Fields.version), (DataFetcher<Object>) environment -> {
- GqlvMeta gqlvMeta = environment.getSource();
- return gqlvMeta.version();
- });
+ codeRegistryBuilder.dataFetcher(
+ FieldCoordinates.coordinates(gqlvObjectSpec.getMetaType(),
Fields.logicalTypeName),
+ (DataFetcher<Object>) environment -> {
+ GqlvMeta gqlvMeta = environment.getSource();
+ return gqlvMeta.logicalTypeName();
+ });
+ if (gqlvObjectSpec.getBeanSort() == BeanSort.ENTITY) {
+ codeRegistryBuilder.dataFetcher(
+ FieldCoordinates.coordinates(gqlvObjectSpec.getMetaType(),
Fields.version),
+ (DataFetcher<Object>) environment -> {
+ GqlvMeta gqlvMeta = environment.getSource();
+ return gqlvMeta.version();
+ });
}
}