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;