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 252f41e686 CAUSEWAY-3676: moves responsibility
252f41e686 is described below
commit 252f41e686bdd73d07888deb03f2731272fee2cb
Author: danhaywood <[email protected]>
AuthorDate: Fri Jan 19 18:26:20 2024 +0000
CAUSEWAY-3676: moves responsibility
---
.../graphql/viewer/source/GqlvServiceBehaviour.java | 2 +-
.../graphql/viewer/source/GqlvServiceStructure.java | 15 ++-------------
.../viewer/source/GqlvTopLevelQueryStructure.java | 19 +++++++++++++++++--
.../graphql/viewer/source/QueryFieldFactory.java | 11 +----------
4 files changed, 21 insertions(+), 26 deletions(-)
diff --git
a/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/source/GqlvServiceBehaviour.java
b/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/source/GqlvServiceBehaviour.java
index 7eca805b32..454aa2b20e 100644
---
a/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/source/GqlvServiceBehaviour.java
+++
b/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/source/GqlvServiceBehaviour.java
@@ -24,7 +24,7 @@ import
org.apache.causeway.core.metamodel.specloader.SpecificationLoader;
public class GqlvServiceBehaviour {
private final GqlvServiceStructure structure;
- private final Object service;
+ final Object service;
private final SpecificationLoader specificationLoader;
private final GraphQLCodeRegistry.Builder codeRegistryBuilder;
diff --git
a/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/source/GqlvServiceStructure.java
b/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/source/GqlvServiceStructure.java
index 4e5889c6b3..b9588152e5 100644
---
a/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/source/GqlvServiceStructure.java
+++
b/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/source/GqlvServiceStructure.java
@@ -1,28 +1,18 @@
package org.apache.causeway.viewer.graphql.viewer.source;
-import graphql.schema.DataFetcher;
-import graphql.schema.DataFetchingEnvironment;
-import graphql.schema.FieldCoordinates;
import graphql.schema.GraphQLArgument;
-import graphql.schema.GraphQLCodeRegistry;
import graphql.schema.GraphQLFieldDefinition;
import graphql.schema.GraphQLObjectType;
import graphql.schema.GraphQLOutputType;
import lombok.Getter;
-import lombok.val;
import java.util.Map;
import java.util.stream.Collectors;
-import org.apache.causeway.commons.collections.Can;
-import org.apache.causeway.core.metamodel.consent.InteractionInitiatedBy;
-import
org.apache.causeway.core.metamodel.interactions.managed.ActionInteractionHead;
-import org.apache.causeway.core.metamodel.object.ManagedObject;
import org.apache.causeway.core.metamodel.spec.ObjectSpecification;
import org.apache.causeway.core.metamodel.spec.feature.ObjectAction;
-import org.apache.causeway.core.metamodel.spec.feature.ObjectActionParameter;
import org.apache.causeway.core.metamodel.specloader.SpecificationLoader;
import org.apache.causeway.viewer.graphql.viewer.util._BiMap;
@@ -103,7 +93,7 @@ public class GqlvServiceStructure {
/**
* @see #getTopLevelQueryField()
*/
- public GraphQLFieldDefinition addTopLevelQueryField() {
+ public GraphQLFieldDefinition buildTopLevelQueryField() {
if (topLevelQueryField != null) {
throw new IllegalStateException(String.format(
"queryField has already been added to top-level Query, for
%s", getLogicalTypeName()));
@@ -112,12 +102,11 @@ public class GqlvServiceStructure {
.name(_LTN.sanitized(serviceSpec))
.type(gqlObjectTypeBuilder)
.build();
- queryBuilder.field(topLevelQueryField);
return topLevelQueryField;
}
/**
- * @see #addTopLevelQueryField()
+ * @see #buildTopLevelQueryField()
*/
public GraphQLFieldDefinition getTopLevelQueryField() {
if (topLevelQueryField == null) {
diff --git
a/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/source/GqlvTopLevelQueryStructure.java
b/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/source/GqlvTopLevelQueryStructure.java
index 88ca9bd7ea..0e88c15c9c 100644
---
a/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/source/GqlvTopLevelQueryStructure.java
+++
b/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/source/GqlvTopLevelQueryStructure.java
@@ -1,13 +1,14 @@
package org.apache.causeway.viewer.graphql.viewer.source;
import graphql.Scalars;
+import graphql.schema.DataFetcher;
+import graphql.schema.FieldCoordinates;
+import graphql.schema.GraphQLCodeRegistry;
import graphql.schema.GraphQLFieldDefinition;
import graphql.schema.GraphQLObjectType;
import lombok.Getter;
-import java.util.Optional;
-
import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition;
import static graphql.schema.GraphQLObjectType.newObject;
@@ -53,4 +54,18 @@ public class GqlvTopLevelQueryStructure {
return queryType;
}
+ public void addFieldFor(
+ final GqlvServiceStructure serviceStructure,
+ final GqlvServiceBehaviour serviceBehaviour,
+ final GraphQLCodeRegistry.Builder codeRegistryBuilder) {
+
+ GraphQLFieldDefinition topLevelQueryField =
serviceStructure.buildTopLevelQueryField();
+ queryBuilder.field(topLevelQueryField);
+
+ codeRegistryBuilder.dataFetcher(
+ // TODO: it would be nice to make these typesafe...
+ FieldCoordinates.coordinates("Query",
topLevelQueryField.getName()),
+ (DataFetcher<Object>) environment -> serviceBehaviour.service);
+
+ }
}
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 3016d61eb0..2cc1a8aac5 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
@@ -34,10 +34,7 @@ import
org.apache.causeway.core.metamodel.spec.feature.MixedIn;
import org.apache.causeway.core.metamodel.spec.feature.ObjectAction;
import org.apache.causeway.core.metamodel.specloader.SpecificationLoader;
-import graphql.schema.DataFetcher;
-import graphql.schema.FieldCoordinates;
import graphql.schema.GraphQLCodeRegistry;
-import graphql.schema.GraphQLFieldDefinition;
import lombok.RequiredArgsConstructor;
import lombok.val;
@@ -85,13 +82,7 @@ public class QueryFieldFactory {
serviceStructure.getSafeActions().entrySet().forEach(serviceBehaviour::addDataFetcher);
- // instead, should delegate to GqlvTopLevelQueryStructure and then
GqlvTopLevelQueryBehaviour
- GraphQLFieldDefinition topLevelQueryField =
serviceStructure.addTopLevelQueryField();
-
- codeRegistryBuilder.dataFetcher(
- // TODO: it would be nice to make these typesafe...
- FieldCoordinates.coordinates("Query",
topLevelQueryField.getName()),
- (DataFetcher<Object>) environment -> service);
+ topLevelQueryStructure.addFieldFor(serviceStructure, serviceBehaviour,
codeRegistryBuilder);
}
}