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:10 UTC

(causeway) branch CAUSEWAY-3676 updated (1bedb5424b -> d17dbe97cb)

This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a change to branch CAUSEWAY-3676
in repository https://gitbox.apache.org/repos/asf/causeway.git


    from 1bedb5424b CAUSEWAY-3676: creates metaField within GqlvObjectSpec
     new c847467d42 CAUSEWAY-3676: moves more responsibilities into GqlvObjectSpec, building of the GqlObjectType
     new d17dbe97cb CAUSEWAY-3676: simplifies ObjectTypeFactory#createAndRegisterDataFetchersForMetaData

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../viewer/graphql/viewer/source/GqlvObjectSpec.java | 20 ++++++++++++++++++++
 .../graphql/viewer/source/ObjectTypeFactory.java     | 18 ++++++++++++------
 2 files changed, 32 insertions(+), 6 deletions(-)


(causeway) 01/02: CAUSEWAY-3676: moves more responsibilities into GqlvObjectSpec, building of the GqlObjectType

Posted by da...@apache.org.
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())


(causeway) 02/02: CAUSEWAY-3676: simplifies ObjectTypeFactory#createAndRegisterDataFetchersForMetaData

Posted by da...@apache.org.
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 d17dbe97cbe7afb16063143e2bdfbea7b76cc1b6
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jan 19 12:14:58 2024 +0000

    CAUSEWAY-3676: simplifies ObjectTypeFactory#createAndRegisterDataFetchersForMetaData
---
 .../viewer/graphql/viewer/source/ObjectTypeFactory.java     | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

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 3f432f1fec..96e288bb9b 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
@@ -357,12 +357,17 @@ public class ObjectTypeFactory {
 
     void createAndRegisterDataFetchersForMetaData(
             final GraphQLCodeRegistry.Builder codeRegistryBuilder,
-            final BeanSort objectSpecificationBeanSort,
-            final GraphQLObjectType metaType,
-            final GraphQLFieldDefinition gql_meta,
-            final GraphQLObjectType graphQLObjectType,
+            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))