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 394f0309c9 CAUSEWAY-3676: wip on addActions, to move into 
GqlvObjectSpec (6)
394f0309c9 is described below

commit 394f0309c9640f26139d0c419a724d55a64b6671
Author: danhaywood <[email protected]>
AuthorDate: Fri Jan 19 13:24:44 2024 +0000

    CAUSEWAY-3676: wip on addActions, to move into GqlvObjectSpec (6)
---
 .../graphql/viewer/source/GqlvObjectSpec.java      | 45 +++++++++++++++++
 .../graphql/viewer/source/ObjectTypeFactory.java   | 56 ++--------------------
 2 files changed, 50 insertions(+), 51 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 7c2be9939c..e9e433e7e2 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
@@ -20,6 +20,7 @@ import java.util.stream.Collectors;
 
 import org.apache.causeway.applib.services.metamodel.BeanSort;
 import org.apache.causeway.commons.collections.Can;
+import org.apache.causeway.core.metamodel.spec.ActionScope;
 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;
@@ -283,4 +284,48 @@ public class GqlvObjectSpec {
                 ? Optional.of(mutatorsTypeBuilder.build())
                 : Optional.empty();
     }
+
+    ObjectTypeFactory.MutatorsDataForEntity addActions(GraphQLTypeRegistry 
graphQLTypeRegistry) {
+
+        getObjectSpec().streamActions(ActionScope.PRODUCTION, MixedIn.INCLUDED)
+                .forEach(this::addAction);
+
+        Optional<GraphQLObjectType> mutatorsTypeIfAny = 
buildMutatorsTypeIfAny();
+        return mutatorsTypeIfAny.map(mutatorsType -> {
+
+            //graphQLTypeRegistry.addTypeIfNotAlreadyPresent(mutatorsType, 
getMutatorsTypeName());
+
+            GraphQLFieldDefinition gql_mutations = newFieldDefinition()
+                    .name(ObjectTypeFactory.GQL_MUTATIONS_FIELDNAME)
+                    .type(mutatorsType)
+                    .build();
+            getGqlObjectTypeBuilder().field(gql_mutations);
+
+            return new ObjectTypeFactory.MutatorsDataForEntity(mutatorsType, 
mutatorsTypeFields);
+
+//            // I think we have to create and register data fetcher for 
mutations here, but we can't since we have no objectTypeYet
+//            
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 GqlvMutations(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 {
+//
+//                    GqlvMeta gqlMeta = environment.getSource();
+//
+//                    return gqlMeta.id();
+//                }
+//            });
+        })
+        .orElse(null);
+
+    }
 }
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 c3a48442e7..36da141964 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
@@ -24,7 +24,6 @@ import static graphql.schema.GraphQLNonNull.nonNull;
 import static graphql.schema.GraphQLObjectType.newObject;
 
 import java.util.List;
-import java.util.Optional;
 import java.util.Set;
 
 import javax.inject.Inject;
@@ -36,7 +35,6 @@ import org.springframework.stereotype.Component;
 import org.apache.causeway.applib.services.bookmark.BookmarkService;
 import org.apache.causeway.applib.services.metamodel.BeanSort;
 import org.apache.causeway.core.metamodel.object.ManagedObject;
-import org.apache.causeway.core.metamodel.spec.ActionScope;
 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.ObjectAssociation;
@@ -102,14 +100,15 @@ public class ObjectTypeFactory {
         GraphQLInputType inputType = gqlvObjectSpec.getGqlInputObjectType();
         graphQLTypeRegistry.addTypeIfNotAlreadyPresent(inputType);
 
-        // add fields
         gqlvObjectSpec.addPropertiesAsFields();
 
-        // add collections
         gqlvObjectSpec.addCollectionsAsLists();
 
         // add actions
-        MutatorsDataForEntity mutatorsDataForEntity = 
addActions(gqlvObjectSpec);
+        MutatorsDataForEntity mutatorsDataForEntity = 
gqlvObjectSpec.addActions(graphQLTypeRegistry);
+        if(gqlvObjectSpec.hasMutators()) {
+            
gqlvObjectSpec.getMutatorsTypeIfAny().ifPresent(graphQLTypeRegistry::addTypeIfNotAlreadyPresent);
+        }
 
         // build and register object type
         GraphQLObjectType graphQLObjectType = 
gqlvObjectSpec.buildGqlObjectType();
@@ -157,55 +156,10 @@ public class ObjectTypeFactory {
                 });
     }
 
-    MutatorsDataForEntity addActions(final GqlvObjectSpec gqlvObjectSpec) {
-
-        gqlvObjectSpec.getObjectSpec().streamActions(ActionScope.PRODUCTION, 
MixedIn.INCLUDED)
-                .forEach(gqlvObjectSpec::addAction);
-
-        Optional<GraphQLObjectType> mutatorsTypeIfAny = 
gqlvObjectSpec.buildMutatorsTypeIfAny();
-        return mutatorsTypeIfAny.map(mutatorsType -> {
-
-            graphQLTypeRegistry.addTypeIfNotAlreadyPresent(mutatorsType, 
gqlvObjectSpec.getMutatorsTypeName());
-
-            GraphQLFieldDefinition gql_mutations = newFieldDefinition()
-                    .name(GQL_MUTATIONS_FIELDNAME)
-                    .type(mutatorsType)
-                    .build();
-            gqlvObjectSpec.getGqlObjectTypeBuilder().field(gql_mutations);
-
-            return new MutatorsDataForEntity(mutatorsType, 
gqlvObjectSpec.mutatorsTypeFields);
-
-//            // I think we have to create and register data fetcher for 
mutations here, but we can't since we have no objectTypeYet
-//            
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 GqlvMutations(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 {
-//
-//                    GqlvMeta gqlMeta = environment.getSource();
-//
-//                    return gqlMeta.id();
-//                }
-//            });
-        })
-        .orElse(null);
-
-    }
-
-
 
     @Data
     @AllArgsConstructor
-    class MutatorsDataForEntity {
+    static class MutatorsDataForEntity {
 
         private GraphQLObjectType mutatorsType;
 

Reply via email to