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 a58e1c95a5 CAUSEWAY-3676: wip on QueryFieldFactory, factor out some 
methods
a58e1c95a5 is described below

commit a58e1c95a50df981eabe54d7348140c7052a0794
Author: danhaywood <[email protected]>
AuthorDate: Fri Jan 19 15:58:34 2024 +0000

    CAUSEWAY-3676: wip on QueryFieldFactory, factor out some methods
---
 .../graphql/viewer/source/QueryFieldFactory.java   | 75 ++++++++++++----------
 1 file changed, 40 insertions(+), 35 deletions(-)

diff --git 
a/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/source/QueryFieldFactory.java
 
b/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/source/QueryFieldFactory.java
index f6eba0b533..2bb999703b 100644
--- 
a/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/source/QueryFieldFactory.java
+++ 
b/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/source/QueryFieldFactory.java
@@ -81,7 +81,7 @@ public class QueryFieldFactory {
         List<ObjectAction> objectActionList = 
objectSpec.streamRuntimeActions(MixedIn.INCLUDED)
                 .map(ObjectAction.class::cast)
                 .filter((final ObjectAction x) -> 
x.containsFacet(ActionSemanticsFacet.class))
-//                            .filter(x -> 
x.getFacet(ActionSemanticsFacet.class).value() == SemanticsOf.SAFE)
+//              .filter(x -> x.getFacet(ActionSemanticsFacet.class).value() == 
SemanticsOf.SAFE)
                 .collect(Collectors.toList());
 
         // for now filters when no safe actions
@@ -99,40 +99,7 @@ public class QueryFieldFactory {
             objectActionList
             .forEach(objectAction -> {
 
-                String fieldName = objectAction.getId();
-                codeRegistryBuilder
-                .dataFetcher(
-                    FieldCoordinates.coordinates(graphQLObjectType, fieldName),
-                    new DataFetcher<Object>() {
-
-                        @Override
-                        public Object get(final DataFetchingEnvironment 
dataFetchingEnvironment) throws Exception {
-
-                            Object domainObjectInstance = 
dataFetchingEnvironment.getSource();
-
-                            Class<?> domainObjectInstanceClass = 
domainObjectInstance.getClass();
-                            ObjectSpecification specification = 
specificationLoader
-                                    
.loadSpecification(domainObjectInstanceClass);
-
-                            ManagedObject owner = 
ManagedObject.adaptSingular(specification, domainObjectInstance);
-
-                            ActionInteractionHead actionInteractionHead = 
objectAction.interactionHead(owner);
-
-                            Map<String, Object> arguments = 
dataFetchingEnvironment.getArguments();
-                            Can<ObjectActionParameter> parameters = 
objectAction.getParameters();
-                            Can<ManagedObject> canOfParams = parameters
-                                    .map(oap -> {
-                                        Object argumentValue = 
arguments.get(oap.getId());
-                                        return 
ManagedObject.adaptParameter(oap, argumentValue);
-                                    });
-
-                            ManagedObject managedObject = objectAction
-                                    .execute(actionInteractionHead, 
canOfParams, InteractionInitiatedBy.USER);
-
-                            return managedObject.getPojo();
-                        }
-
-                    });
+                addBehaviour(objectAction, graphQLObjectType, 
codeRegistryBuilder);
 
             });
 
@@ -140,6 +107,7 @@ public class QueryFieldFactory {
                     .name(_LTN.sanitized(objectSpec))
                     .type(serviceAsGraphQlType)
                     .build());
+
             codeRegistryBuilder
             .dataFetcher(
                     FieldCoordinates.coordinates("Query", newFieldDefinition()
@@ -150,6 +118,43 @@ public class QueryFieldFactory {
         }
     }
 
+    private void addBehaviour(ObjectAction objectAction, GraphQLObjectType 
graphQLObjectType, GraphQLCodeRegistry.Builder codeRegistryBuilder) {
+        String fieldName = objectAction.getId();
+        codeRegistryBuilder
+        .dataFetcher(
+            FieldCoordinates.coordinates(graphQLObjectType, fieldName),
+            new DataFetcher<Object>() {
+
+                @Override
+                public Object get(final DataFetchingEnvironment 
dataFetchingEnvironment) throws Exception {
+
+                    Object domainObjectInstance = 
dataFetchingEnvironment.getSource();
+
+                    Class<?> domainObjectInstanceClass = 
domainObjectInstance.getClass();
+                    ObjectSpecification specification = specificationLoader
+                            .loadSpecification(domainObjectInstanceClass);
+
+                    ManagedObject owner = 
ManagedObject.adaptSingular(specification, domainObjectInstance);
+
+                    ActionInteractionHead actionInteractionHead = 
objectAction.interactionHead(owner);
+
+                    Map<String, Object> arguments = 
dataFetchingEnvironment.getArguments();
+                    Can<ObjectActionParameter> parameters = 
objectAction.getParameters();
+                    Can<ManagedObject> canOfParams = parameters
+                            .map(oap -> {
+                                Object argumentValue = 
arguments.get(oap.getId());
+                                return ManagedObject.adaptParameter(oap, 
argumentValue);
+                            });
+
+                    ManagedObject managedObject = objectAction
+                            .execute(actionInteractionHead, canOfParams, 
InteractionInitiatedBy.USER);
+
+                    return managedObject.getPojo();
+                }
+
+            });
+    }
+
     private static void addAction(ObjectAction objectAction, 
GraphQLObjectType.Builder serviceAsGraphQlType) {
         String fieldName = objectAction.getId();
 

Reply via email to