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

Reply via email to