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 661bd8f1b4337273e5bc483e8f8e0716e320b84c Author: danhaywood <[email protected]> AuthorDate: Tue Jan 23 09:54:02 2024 +0000 CAUSEWAY-3676: sketched out ActionInvoke --- .../viewer/graphql/model/domain/GqlvAction.java | 65 ++++++++++++ ...GqlvActionSimple.java => GqlvActionInvoke.java} | 109 +++++++++++---------- .../model/domain/GqlvActionInvokeHolder.java | 9 ++ .../graphql/model/domain/GqlvActionSimple.java | 6 +- .../graphql/model/domain/GqlvDomainObject.java | 4 +- .../graphql/model/domain/GqlvDomainService.java | 6 +- .../viewer/graphql/model/domain/GqlvMember.java | 15 ++- .../viewer/graphql/model/domain/GqlvMutations.java | 21 ++-- .../viewer/graphql/model/util/TypeNames.java | 6 ++ .../integration/GraphQlSourceForCauseway.java | 2 +- 10 files changed, 171 insertions(+), 72 deletions(-) diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvAction.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvAction.java new file mode 100644 index 0000000000..27340e0264 --- /dev/null +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvAction.java @@ -0,0 +1,65 @@ +package org.apache.causeway.viewer.graphql.model.domain; + +import org.apache.causeway.core.metamodel.spec.ObjectSpecification; +import org.apache.causeway.core.metamodel.spec.feature.ObjectAction; +import org.apache.causeway.viewer.graphql.model.util.TypeNames; + +import graphql.schema.FieldCoordinates; +import graphql.schema.GraphQLObjectType; + +import lombok.val; +import lombok.extern.log4j.Log4j2; + +import graphql.schema.GraphQLCodeRegistry; +import graphql.schema.GraphQLFieldDefinition; +import graphql.schema.GraphQLOutputType; + +import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition; +import static graphql.schema.GraphQLObjectType.newObject; + +@Log4j2 +public class GqlvAction extends GqlvMember<ObjectAction, GqlvActionHolder> implements GqlvActionInvokeHolder { + + private final GraphQLObjectType.Builder gqlObjectTypeBuilder; + private final GraphQLObjectType gqlObjectType; + private final GqlvActionInvoke invoke; + + public GqlvAction( + final GqlvActionHolder holder, + final ObjectAction objectAction, + final GraphQLCodeRegistry.Builder codeRegistryBuilder + ) { + super(holder, objectAction, codeRegistryBuilder); + + gqlObjectTypeBuilder = newObject().name(TypeNames.invokeTypeNameFor(objectAction)); + + this.invoke = new GqlvActionInvoke(this, codeRegistryBuilder); + + gqlObjectType = gqlObjectTypeBuilder.build(); + + final GraphQLFieldDefinition field = newFieldDefinition() + .name(objectAction.getId()) + .type(gqlObjectTypeBuilder) + .build(); + + holder.addField(field); + + setFieldDefinition(field); + } + + + public ObjectAction getObjectAction() { + return getObjectMember(); + } + + @Override + public void addField(GraphQLFieldDefinition fieldDefinition) { + gqlObjectTypeBuilder.field(fieldDefinition); + } + + @Override + public FieldCoordinates coordinatesFor(GraphQLFieldDefinition fieldDefinition) { + return FieldCoordinates.coordinates(gqlObjectType, fieldDefinition); + } + +} 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/GqlvActionInvoke.java similarity index 87% copy from incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionSimple.java copy to incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionInvoke.java index bd05b13a35..fcb707cac7 100644 --- 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/GqlvActionInvoke.java @@ -1,10 +1,22 @@ package org.apache.causeway.viewer.graphql.model.domain; +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 lombok.extern.log4j.Log4j2; +import lombok.val; + 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; @@ -16,40 +28,33 @@ 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 org.springframework.lang.Nullable; import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition; import static graphql.schema.GraphQLNonNull.nonNull; @Log4j2 -public class GqlvActionSimple extends GqlvMember<ObjectAction, GqlvActionHolder> { +public class GqlvActionInvoke { - public GqlvActionSimple( - final GqlvActionHolder holder, - final ObjectAction objectAction, + private final GqlvActionInvokeHolder holder; + private final GraphQLCodeRegistry.Builder codeRegistryBuilder; + private final GraphQLFieldDefinition field; + + public GqlvActionInvoke( + final GqlvActionInvokeHolder holder, final GraphQLCodeRegistry.Builder codeRegistryBuilder - ) { - super(holder, objectAction, fieldDefinition(objectAction, holder), codeRegistryBuilder); + ) { + this.holder = holder; + this.codeRegistryBuilder = codeRegistryBuilder; + this.field = fieldDefinition(holder); } - private static GraphQLFieldDefinition fieldDefinition( - final ObjectAction objectAction, - final GqlvActionHolder holder) { + private static GraphQLFieldDefinition fieldDefinition(final GqlvActionInvokeHolder holder) { + + val objectAction = holder.getObjectAction(); GraphQLFieldDefinition fieldDefinition = null; GraphQLOutputType type = typeFor(objectAction); - if (type != null) { val fieldBuilder = newFieldDefinition() .name(objectAction.getId()) @@ -116,23 +121,39 @@ public class GqlvActionSimple extends GqlvMember<ObjectAction, GqlvActionHolder> } } - public ObjectAction getObjectAction() { - return getObjectMember(); + static void addGqlArguments( + final ObjectAction objectAction, + final GraphQLFieldDefinition.Builder builder) { + + Can<ObjectActionParameter> parameters = objectAction.getParameters(); + + if (parameters.isNotEmpty()) { + builder.arguments(parameters.stream() + .map(GqlvActionInvoke::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(); } public void addDataFetcher() { - GraphQLFieldDefinition fieldDefinition = getFieldDefinition(); codeRegistryBuilder.dataFetcher( - getHolder().coordinatesFor(fieldDefinition), + holder.coordinatesFor(field), this::invoke ); } private Object invoke( final DataFetchingEnvironment dataFetchingEnvironment) { - final ObjectAction objectAction = getObjectAction(); + final ObjectAction objectAction = holder.getObjectAction(); - // TODO: not tested Object source = dataFetchingEnvironment.getSource(); Object domainObjectInstance; if (source instanceof GqlvMutations.Fetcher) { @@ -143,11 +164,14 @@ public class GqlvActionSimple extends GqlvMember<ObjectAction, GqlvActionHolder> } Class<?> domainObjectInstanceClass = domainObjectInstance.getClass(); - ObjectSpecification specification = specificationLoader + ObjectSpecification specification = holder.getObjectAction().getSpecificationLoader() .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(); @@ -164,25 +188,4 @@ public class GqlvActionSimple extends GqlvMember<ObjectAction, GqlvActionHolder> 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(); - } } diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionInvokeHolder.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionInvokeHolder.java new file mode 100644 index 0000000000..d32aafe916 --- /dev/null +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionInvokeHolder.java @@ -0,0 +1,9 @@ +package org.apache.causeway.viewer.graphql.model.domain; + +import org.apache.causeway.core.metamodel.spec.feature.ObjectAction; + +public interface GqlvActionInvokeHolder extends GqlvHolder { + + + ObjectAction getObjectAction(); +} 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 index bd05b13a35..ee9f846f78 100644 --- 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 @@ -132,7 +132,6 @@ public class GqlvActionSimple extends GqlvMember<ObjectAction, GqlvActionHolder> final DataFetchingEnvironment dataFetchingEnvironment) { final ObjectAction objectAction = getObjectAction(); - // TODO: not tested Object source = dataFetchingEnvironment.getSource(); Object domainObjectInstance; if (source instanceof GqlvMutations.Fetcher) { @@ -145,9 +144,14 @@ public class GqlvActionSimple extends GqlvMember<ObjectAction, GqlvActionHolder> 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(); diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainObject.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainObject.java index 4731fcd07c..0168fa7744 100644 --- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainObject.java +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainObject.java @@ -46,6 +46,7 @@ public class GqlvDomainObject implements GqlvActionHolder, GqlvPropertyHolder, G private final List<GqlvProperty> properties = new ArrayList<>(); private final List<GqlvCollection> collections = new ArrayList<>(); private final List<GqlvActionSimple> safeActionSimples = new ArrayList<>(); + private final List<GqlvAction> safeActions = new ArrayList<>(); private GraphQLObjectType gqlObjectType; @@ -62,7 +63,7 @@ public class GqlvDomainObject implements GqlvActionHolder, GqlvPropertyHolder, G this.gqlObjectTypeBuilder = newObject().name(TypeNames.objectTypeNameFor(objectSpecification)); this.meta = new GqlvMeta(this, codeRegistryBuilder, bookmarkService, objectManager); - this.mutations = new GqlvMutations(this, codeRegistryBuilder, bookmarkService, objectManager); + this.mutations = new GqlvMutations(this, codeRegistryBuilder, bookmarkService); // input object type @@ -109,6 +110,7 @@ public class GqlvDomainObject implements GqlvActionHolder, GqlvPropertyHolder, G private void addAction(final ObjectAction objectAction) { if (objectAction.getSemantics().isSafeInNature()) { safeActionSimples.add(new GqlvActionSimple(this, objectAction, codeRegistryBuilder)); + //safeActions.add(new GqlvAction(this, objectAction, codeRegistryBuilder)); } else { mutations.addAction(objectAction); } diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainService.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainService.java index b9caba2a3a..1583919865 100644 --- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainService.java +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainService.java @@ -6,7 +6,6 @@ import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; import org.apache.causeway.applib.services.bookmark.BookmarkService; -import org.apache.causeway.core.metamodel.objectmanager.ObjectManager; 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; @@ -55,8 +54,7 @@ public class GqlvDomainService implements GqlvActionHolder, GqlvMutationsHolder final ObjectSpecification objectSpecification, final Object servicePojo, final GraphQLCodeRegistry.Builder codeRegistryBuilder, - final BookmarkService bookmarkService, - final ObjectManager objectManager + final BookmarkService bookmarkService ) { this.objectSpecification = objectSpecification; this.servicePojo = servicePojo; @@ -64,7 +62,7 @@ public class GqlvDomainService implements GqlvActionHolder, GqlvMutationsHolder this.gqlObjectTypeBuilder = newObject().name(TypeNames.objectTypeNameFor(objectSpecification)); - this.mutations = new GqlvMutations(this, codeRegistryBuilder, bookmarkService, objectManager); + this.mutations = new GqlvMutations(this, codeRegistryBuilder, bookmarkService); } /** diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMember.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMember.java index 08b4383752..09288d25e9 100644 --- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMember.java +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMember.java @@ -3,19 +3,32 @@ package org.apache.causeway.viewer.graphql.model.domain; import org.apache.causeway.core.metamodel.spec.feature.ObjectMember; import org.apache.causeway.core.metamodel.specloader.SpecificationLoader; +import lombok.AccessLevel; import lombok.Getter; import graphql.schema.GraphQLCodeRegistry; import graphql.schema.GraphQLFieldDefinition; +import lombok.Setter; + public abstract class GqlvMember<T extends ObjectMember, H extends GqlvMemberHolder> { @Getter private final H holder; @Getter private final T objectMember; - @Getter private final GraphQLFieldDefinition fieldDefinition; + @Getter @Setter(AccessLevel.PACKAGE) + private GraphQLFieldDefinition fieldDefinition; + final GraphQLCodeRegistry.Builder codeRegistryBuilder; final SpecificationLoader specificationLoader; + public GqlvMember( + final H holder, + final T objectMember, + final GraphQLCodeRegistry.Builder codeRegistryBuilder + ) { + this(holder, objectMember, null, codeRegistryBuilder); + } + public GqlvMember( final H holder, final T objectMember, diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMutations.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMutations.java index 917317e812..5f985a8e82 100644 --- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMutations.java +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMutations.java @@ -6,7 +6,6 @@ import java.util.Optional; import org.apache.causeway.applib.services.bookmark.Bookmark; import org.apache.causeway.applib.services.bookmark.BookmarkService; -import org.apache.causeway.core.metamodel.objectmanager.ObjectManager; import org.apache.causeway.core.metamodel.spec.ObjectSpecification; import org.apache.causeway.core.metamodel.spec.feature.ObjectAction; import org.apache.causeway.viewer.graphql.model.registry.GraphQLTypeRegistry; @@ -26,7 +25,6 @@ public class GqlvMutations implements GqlvActionHolder { private final GqlvMutationsHolder holder; private final GraphQLCodeRegistry.Builder codeRegistryBuilder; private final BookmarkService bookmarkService; - private final ObjectManager objectManager; /** * Used to build {@link #objectTypeIfAny}. @@ -43,18 +41,19 @@ public class GqlvMutations implements GqlvActionHolder { * Built lazily using {@link #buildObjectTypeAndFieldIfRequired()} */ @SuppressWarnings("OptionalUsedAsFieldOrParameterType") - private Optional<GraphQLFieldDefinition> mutationsFieldIfAny; + private Optional<GraphQLFieldDefinition> fieldIfAny; + + private final List<GqlvActionSimple> actionSimples = new ArrayList<>(); + private final List<GqlvAction> actions = new ArrayList<>(); public GqlvMutations( final GqlvMutationsHolder holder, final GraphQLCodeRegistry.Builder codeRegistryBuilder, - final BookmarkService bookmarkService, - final ObjectManager objectManager + final BookmarkService bookmarkService ) { this.holder = holder; this.codeRegistryBuilder = codeRegistryBuilder; this.bookmarkService = bookmarkService; - this.objectManager = objectManager; gqlObjectTypeBuilder = newObject().name(TypeNames.mutationsTypeNameFor(this.holder.getObjectSpecification())); } @@ -66,9 +65,9 @@ public class GqlvMutations implements GqlvActionHolder { public void addAction(final ObjectAction objectAction) { actionSimples.add(new GqlvActionSimple(this, objectAction, codeRegistryBuilder)); + //actions.add(new GqlvAction(this, objectAction, codeRegistryBuilder)); } - private final List<GqlvActionSimple> actionSimples = new ArrayList<>(); boolean hasActions() { return !actionSimples.isEmpty(); @@ -92,22 +91,22 @@ public class GqlvMutations implements GqlvActionHolder { .name("_gql_mutations") .type(mutationsType) .build(); - mutationsFieldIfAny = Optional.of(mutationsField); + fieldIfAny = Optional.of(mutationsField); // register the field into the owning type holder.addField(mutationsField); } else { - mutationsFieldIfAny = Optional.empty(); + fieldIfAny = Optional.empty(); objectTypeIfAny = Optional.empty(); } return objectTypeIfAny; } public void addDataFetchers() { - if (mutationsFieldIfAny.isPresent()) { + if (fieldIfAny.isPresent()) { codeRegistryBuilder.dataFetcher( - holder.coordinatesFor(mutationsFieldIfAny.get()), + holder.coordinatesFor(fieldIfAny.get()), (DataFetcher<Object>) environment -> bookmarkService.bookmarkFor(environment.getSource()) .map(bookmark -> new Fetcher(bookmark, bookmarkService)) diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/util/TypeNames.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/util/TypeNames.java index b34420cb24..c3989db1d1 100644 --- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/util/TypeNames.java +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/util/TypeNames.java @@ -21,6 +21,8 @@ package org.apache.causeway.viewer.graphql.model.util; import lombok.experimental.UtilityClass; 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.ObjectMember; @UtilityClass public final class TypeNames { @@ -41,6 +43,10 @@ public final class TypeNames { return objectTypeNameFor(objectSpecification) + "__input"; } + public static String invokeTypeNameFor(ObjectMember objectMember) { + return sanitized(objectMember.getFeatureIdentifier().getFullIdentityString()) + "__invoke"; + } + private static String sanitized(final String name) { return name.replace('.', '_'); } diff --git a/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/integration/GraphQlSourceForCauseway.java b/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/integration/GraphQlSourceForCauseway.java index 4345553bf2..d864b4791b 100644 --- a/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/integration/GraphQlSourceForCauseway.java +++ b/incubator/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/integration/GraphQlSourceForCauseway.java @@ -184,7 +184,7 @@ public class GraphQlSourceForCauseway implements GraphQlSource { final GqlvTopLevelQuery topLevelQueryStructure, final GraphQLCodeRegistry.Builder codeRegistryBuilder) { - val domainService = new GqlvDomainService(objectSpec, servicePojo, codeRegistryBuilder, bookmarkService, objectManager); + val domainService = new GqlvDomainService(objectSpec, servicePojo, codeRegistryBuilder, bookmarkService); boolean actionsAdded = domainService.addActions(); if (!actionsAdded) {
