You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@causeway.apache.org by da...@apache.org on 2024/01/23 17:42:54 UTC
(causeway) 05/05: CAUSEWAY-3676: removes ActionSimple
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
commit 260d8e94f078b6fc5bdd2c3b00e39f16dc1b902b
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Tue Jan 23 17:41:20 2024 +0000
CAUSEWAY-3676: removes ActionSimple
---
.../graphql/model/domain/GqlvActionSimple.java | 192 ---------------------
1 file changed, 192 deletions(-)
diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionSimple.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionSimple.java
deleted file mode 100644
index a62856081a..0000000000
--- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionSimple.java
+++ /dev/null
@@ -1,192 +0,0 @@
-package org.apache.causeway.viewer.graphql.model.domain;
-
-import java.util.Map;
-import java.util.stream.Collectors;
-
-import org.springframework.lang.Nullable;
-
-import org.apache.causeway.commons.collections.Can;
-import org.apache.causeway.core.metamodel.consent.InteractionInitiatedBy;
-import org.apache.causeway.core.metamodel.facets.actcoll.typeof.TypeOfFacet;
-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.viewer.graphql.model.types.ScalarMapper;
-import org.apache.causeway.viewer.graphql.model.util.TypeNames;
-
-import lombok.val;
-import lombok.extern.log4j.Log4j2;
-
-import graphql.Scalars;
-import graphql.schema.DataFetchingEnvironment;
-import graphql.schema.GraphQLArgument;
-import graphql.schema.GraphQLCodeRegistry;
-import graphql.schema.GraphQLFieldDefinition;
-import graphql.schema.GraphQLList;
-import graphql.schema.GraphQLOutputType;
-import graphql.schema.GraphQLType;
-import graphql.schema.GraphQLTypeReference;
-
-import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition;
-import static graphql.schema.GraphQLNonNull.nonNull;
-
-@Log4j2
-public class GqlvActionSimple extends GqlvMember<ObjectAction, GqlvActionHolder> {
-
- public GqlvActionSimple(
- final GqlvActionHolder holder,
- final ObjectAction objectAction,
- final GraphQLCodeRegistry.Builder codeRegistryBuilder
- ) {
- super(holder, objectAction, fieldDefinition(objectAction, holder), codeRegistryBuilder);
- }
-
- private static GraphQLFieldDefinition fieldDefinition(
- final ObjectAction objectAction,
- final GqlvActionHolder holder) {
-
- GraphQLFieldDefinition fieldDefinition = null;
- GraphQLOutputType type = typeFor(objectAction);
-
- if (type != null) {
- val fieldBuilder = newFieldDefinition()
- .name(objectAction.getId())
- .type(type);
- addGqlArguments(objectAction, fieldBuilder);
- fieldDefinition = fieldBuilder.build();
-
- holder.addField(fieldDefinition);
- }
- return fieldDefinition;
- }
-
- @Nullable
- private static GraphQLOutputType typeFor(final ObjectAction objectAction){
- ObjectSpecification objectSpecification = objectAction.getReturnType();
- switch (objectSpecification.getBeanSort()){
-
- case COLLECTION:
-
- TypeOfFacet facet = objectAction.getFacet(TypeOfFacet.class);
- if (facet == null) {
- log.warn("Unable to locate TypeOfFacet for {}", objectAction.getFeatureIdentifier().getFullIdentityString());
- return null;
- }
- ObjectSpecification objectSpecificationForElementWhenCollection = facet.elementSpec();
- GraphQLType wrappedType = outputTypeFor(objectSpecificationForElementWhenCollection);
- if (wrappedType == null) {
- log.warn("Unable to create wrapped type of for {} for action {}",
- objectSpecificationForElementWhenCollection.getFullIdentifier(),
- objectAction.getFeatureIdentifier().getFullIdentityString());
- return null;
- }
- return GraphQLList.list(wrappedType);
-
- case VALUE:
- case ENTITY:
- case VIEW_MODEL:
- default:
- // TODO: this cast is suspicious
- return (GraphQLOutputType) outputTypeFor(objectSpecification);
-
- }
- }
-
- @Nullable
- private static GraphQLType outputTypeFor(final ObjectSpecification objectSpecification){
-
- switch (objectSpecification.getBeanSort()){
- case ABSTRACT:
- case ENTITY:
- case VIEW_MODEL:
- return GraphQLTypeReference.typeRef(TypeNames.objectTypeNameFor(objectSpecification));
-
- case VALUE:
- return ScalarMapper.typeFor(objectSpecification.getCorrespondingClass());
-
- case COLLECTION:
- // should be noop
- return null;
-
- default:
- // for now
- return Scalars.GraphQLString;
- }
- }
-
- public ObjectAction getObjectAction() {
- return getObjectMember();
- }
-
- public void addDataFetcher() {
- GraphQLFieldDefinition fieldDefinition = getField();
- codeRegistryBuilder.dataFetcher(
- getHolder().coordinatesFor(fieldDefinition),
- this::invoke
- );
- }
-
- private Object invoke(
- final DataFetchingEnvironment dataFetchingEnvironment) {
- final ObjectAction objectAction = getObjectAction();
-
- Object source = dataFetchingEnvironment.getSource();
- Object domainObjectInstance;
- if (source instanceof GqlvMutations.Fetcher) {
- GqlvMutations.Fetcher fetcher = (GqlvMutations.Fetcher) source;
- domainObjectInstance = fetcher.getTargetPojo();
- } else {
- domainObjectInstance = source;
- }
-
- Class<?> domainObjectInstanceClass = domainObjectInstance.getClass();
- ObjectSpecification specification = specificationLoader
- .loadSpecification(domainObjectInstanceClass);
- if (specification == null) {
- // not expected
- return null;
- }
-
- 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();
- }
-
- static void addGqlArguments(
- final ObjectAction objectAction,
- final GraphQLFieldDefinition.Builder builder) {
-
- Can<ObjectActionParameter> parameters = objectAction.getParameters();
-
- if (parameters.isNotEmpty()) {
- builder.arguments(parameters.stream()
- .map(GqlvActionSimple::gqlArgumentFor)
- .collect(Collectors.toList()));
- }
- }
-
- private static GraphQLArgument gqlArgumentFor(final ObjectActionParameter objectActionParameter) {
- return GraphQLArgument.newArgument()
- .name(objectActionParameter.getId())
- .type(objectActionParameter.isOptional()
- ? GqlvActionParameter.inputTypeFor(objectActionParameter)
- : nonNull(GqlvActionParameter.inputTypeFor(objectActionParameter)))
- .build();
- }
-}