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